From 73f0463982dfd73e24bbd5927baf75d3f6fe3dfd Mon Sep 17 00:00:00 2001 From: darcywong00 Date: Thu, 30 Nov 2017 13:01:39 +0700 Subject: [PATCH] More cleanup of directories and packageID Add header to `FileDownloader.download` to clarify that it will create destination directories if they don't exist. Also fix 1 more place for storing packageID when downloading ad-hoc keyboard --- .../java/com/tavultesoft/kmea/KMManager.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index 7ec7156c19..72506a91ef 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java @@ -734,9 +734,6 @@ public final class KMManager { for (String url : urls) { String directory = KMDefault_AssetPackages + File.separator + packageID; File dir = new File(directory); - if (!dir.exists()) { - dir.mkdir(); - } String filename = ""; if (url.endsWith(".js")) { int start = kbFilename.lastIndexOf("/"); @@ -924,9 +921,6 @@ public final class KMManager { for (String url : urls) { String directory = KMDefault_AssetPackages + File.separator + packageID; File dir = new File(directory); - if (!dir.exists()) { - dir.mkdir(); - } String filename = ""; if (url.endsWith(".js")) { @@ -1118,6 +1112,9 @@ public final class KMManager { JSONArray languages = keyboard.optJSONArray(KMKey_Languages); packageID = keyboard.optString(KMKey_PackageID, ""); + if (packageID == null || packageID.isEmpty()) { + packageID = KMDefault_LegacyPackageID; + } keyboardID = keyboard.optString(KMKey_ID, ""); keyboardName = keyboard.optString(KMKey_Name, ""); kbVersion = keyboard.optString(KMKey_KeyboardVersion, "1.0"); @@ -1166,6 +1163,7 @@ public final class KMManager { // Notify listeners: onDownloadStarted if (kbDownloadEventListeners != null) { HashMap keyboardInfo = new HashMap(); + keyboardInfo.put(KMKey_PackageID, packageID); keyboardInfo.put(KMKey_KeyboardID, keyboardID); keyboardInfo.put(KMKey_LanguageID, languageID); keyboardInfo.put(KMKey_KeyboardName, keyboardName); @@ -1182,10 +1180,10 @@ public final class KMManager { ret = 1; int result = 0; for (String url : urls) { - String directory = ""; + String directory = KMDefault_AssetPackages + File.separator + packageID; + File dir = new File(directory); String filename = ""; if (url.endsWith(".js")) { - directory = "languages"; int start = kbFilename.lastIndexOf("/"); if (start < 0) { start = 0; @@ -1197,9 +1195,6 @@ public final class KMManager { } else { filename = kbFilename.substring(start); } - } else { - directory = "fonts"; - filename = ""; } result = FileDownloader.download(context, url, directory, filename); @@ -1238,6 +1233,7 @@ public final class KMManager { // Notify listeners: onDownloadFinished if (kbDownloadEventListeners != null) { HashMap keyboardInfo = new HashMap(); + keyboardInfo.put(KMKey_PackageID, packageID); keyboardInfo.put(KMKey_KeyboardID, keyboardID); keyboardInfo.put(KMKey_LanguageID, languageID); keyboardInfo.put(KMKey_KeyboardName, keyboardName); @@ -1315,6 +1311,14 @@ public final class KMManager { private static final class FileDownloader { + /** + * Utility to download a file from urlStr and store it at directory/filename + * @param context + * @param urlStr URL of the file to download + * @param directory Path to store the file. If directory does not exist, it will be created + * @param filename Destination filename. If blank, it will use the filename from the URL + * @return + */ public static int download(Context context, String urlStr, String directory, String filename) { int ret = -1; String fileName = ""; @@ -1323,9 +1327,9 @@ public final class KMManager { File file = null; try { - if (directory == null) + if (directory == null) { directory = ""; - + } directory = directory.trim(); String dirPath;