diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessor.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessor.java index 14b1f96bb4..17a7c5ad22 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessor.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessor.java @@ -58,7 +58,7 @@ public class LexicalModelPackageProcessor extends PackageProcessor { return false; } - public Map[] processEntry(JSONObject jsonEntry, String packageId) throws JSONException { + public Map[] processEntry(JSONObject jsonEntry, String packageId, String packageVersion) throws JSONException { JSONArray languages = jsonEntry.getJSONArray("languages"); String modelId = jsonEntry.getString("id"); @@ -70,7 +70,8 @@ public class LexicalModelPackageProcessor extends PackageProcessor { models[i].put(KMManager.KMKey_PackageID, packageId); models[i].put(KMManager.KMKey_LexicalModelName, jsonEntry.getString("name")); models[i].put(KMManager.KMKey_LexicalModelID, jsonEntry.getString("id")); - models[i].put(KMManager.KMKey_LexicalModelVersion, jsonEntry.getString("version")); + // Use package version for the lexical model version + models[i].put(KMManager.KMKey_LexicalModelVersion, packageVersion); models[i].put(KMManager.KMKey_LanguageID, languages.getJSONObject(i).getString("id")); models[i].put(KMManager.KMKey_LanguageName, languages.getJSONObject(i).getString("name")); diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/PackageProcessor.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/PackageProcessor.java index e7c945ddf3..8cffa673a6 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/PackageProcessor.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/PackageProcessor.java @@ -139,10 +139,12 @@ public class PackageProcessor { * Generates a list of keyboard data maps designed to mirror the `download` method output of * KMKeyboardDownloader as closely as practical. * @param jsonEntry One entry of the master JSONArray of the top-level "keyboards" property. + * @param packageId Package ID + * @param packageVersion Package version (used for lexical model version) * @return A list of maps defining one keyboard-language pairing each. * @throws JSONException */ - public Map[] processEntry(JSONObject jsonEntry, String packageId) throws JSONException { + public Map[] processEntry(JSONObject jsonEntry, String packageId, String packageVersion) throws JSONException { JSONArray languages = jsonEntry.getJSONArray("languages"); String keyboardId = jsonEntry.getString("id"); @@ -420,6 +422,10 @@ public class PackageProcessor { JSONObject newInfoJSON = loadPackageInfo(tempPath); String packageId = getPackageID(path); + // For lexical model packages, lexical model version is determined by the package version + // (Default to "1.0") + String packageVersion = getPackageVersion(newInfoJSON); + File permPath = constructPath(path, false); if (permPath.exists()) { // Out with the old. "In with the new" is identical to a new package installation. @@ -440,7 +446,7 @@ public class PackageProcessor { JSONArray entries = newInfoJSON.getJSONArray(key); for (int i = 0; i < entries.length(); i++) { - Map[] maps = processEntry(entries.getJSONObject(i), packageId); + Map[] maps = processEntry(entries.getJSONObject(i), packageId, packageVersion); if (maps != null) { specs.addAll(Arrays.asList(maps)); } diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessorTest.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessorTest.java index ad4c2c4ff0..a1c67bfe42 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessorTest.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/LexicalModelPackageProcessorTest.java @@ -63,14 +63,15 @@ public class LexicalModelPackageProcessorTest { FileUtils.moveDirectory(tempPkg, TEST_EN_CUSTOM_MODEL_KMP_TARGET); Assert.assertNotNull(json); + String pkgVersion = lmPP.getPackageVersion(json); - Map[] models = lmPP.processEntry(json.getJSONArray("lexicalModels").getJSONObject(0), "example.en.custom"); + Map[] models = lmPP.processEntry(json.getJSONArray("lexicalModels").getJSONObject(0), "example.en.custom", pkgVersion); HashMap en_custom = new HashMap(); en_custom.put(KMManager.KMKey_PackageID, "example.en.custom"); en_custom.put(KMManager.KMKey_LexicalModelName, "Example (English) Template Custom Model"); en_custom.put(KMManager.KMKey_LexicalModelID, "example.en.custom"); - en_custom.put(KMManager.KMKey_LexicalModelVersion, "1.0.0"); + en_custom.put(KMManager.KMKey_LexicalModelVersion, "1.0"); en_custom.put(KMManager.KMKey_LanguageID, "en"); en_custom.put(KMManager.KMKey_LanguageName, "English"); en_custom.put(KMManager.KMKey_CustomHelpLink, ""); diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/PackageProcessorTest.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/PackageProcessorTest.java index 77a48d89df..f078171e73 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/PackageProcessorTest.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/packages/PackageProcessorTest.java @@ -131,8 +131,9 @@ public class PackageProcessorTest { FileUtils.moveDirectory(tempPkg, TEST_GFF_KMP_TARGET); Assert.assertNotNull(json); + String pkgVersion = PP.getPackageVersion(json); - Map[] keyboards = PP.processEntry(json.getJSONArray("keyboards").getJSONObject(0), "gff_amh_7_test_json"); + Map[] keyboards = PP.processEntry(json.getJSONArray("keyboards").getJSONObject(0), "gff_amh_7_test_json", pkgVersion); // Only the first language is installed with the keyboard Assert.assertEquals(TEST_GFF_KBD_COUNT, keyboards.length); diff --git a/android/history.md b/android/history.md index 8e860a4e24..024ad9e9f5 100644 --- a/android/history.md +++ b/android/history.md @@ -3,6 +3,10 @@ ## 13.0 alpha * Start version 13.0 +## 2019-10-10 12.0.4201 stable +* Bug Fix: + * Use lexical model package version for lexical model version (#2195) + ## 2019-10-07 12.0.4200 stable * Release 12.0