aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-01-18 19:21:14 +0900
committerJean Chalard <jchalard@google.com>2013-01-21 17:58:38 +0900
commitb56260b8917233a902c8cce45364850afc0b99b2 (patch)
tree75ddc18b91790fcd178e056af1671a1c67666e4f /java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java
parentdb906a7c9a8f2af79745d80abe439398ceb3d7be (diff)
downloadlatinime-b56260b8917233a902c8cce45364850afc0b99b2.tar.gz
latinime-b56260b8917233a902c8cce45364850afc0b99b2.tar.xz
latinime-b56260b8917233a902c8cce45364850afc0b99b2.zip
[AD4] Actually copy the file in place.
This finally makes it work. Bug: 7702011 Change-Id: I3508c88567f79598e4d1dff561b6ba7dc5c3808f
Diffstat (limited to 'java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java')
-rw-r--r--java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java54
1 files changed, 51 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java b/java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java
index 5f91d039e..03e87636e 100644
--- a/java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java
+++ b/java/src/com/android/inputmethod/latin/ExternalDictionaryGetterForDebug.java
@@ -21,12 +21,17 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Environment;
+import android.util.Log;
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;
@@ -121,13 +126,56 @@ public class ExternalDictionaryGetterForDebug {
}).setPositiveButton(android.R.string.ok, new OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
- installFile(file, header);
+ installFile(context, file, header);
dialog.dismiss();
}
}).create().show();
}
- private static void installFile(final File file, final FileHeader header) {
- // TODO: actually install the dictionary
+ private static void installFile(final Context context, final File file,
+ final FileHeader header) {
+ BufferedOutputStream outputStream = null;
+ File tempFile = null;
+ try {
+ final String locale =
+ header.mDictionaryOptions.mAttributes.get(DICTIONARY_LOCALE_ATTRIBUTE);
+ // Create the id for a main dictionary for this locale
+ final String id = BinaryDictionaryGetter.MAIN_DICTIONARY_CATEGORY
+ + BinaryDictionaryGetter.ID_CATEGORY_SEPARATOR + locale;
+ final String finalFileName =
+ BinaryDictionaryGetter.getCacheFileName(id, locale, context);
+ final String tempFileName = BinaryDictionaryGetter.getTempFileName(id, context);
+ tempFile = new File(tempFileName);
+ tempFile.delete();
+ outputStream = new BufferedOutputStream(new FileOutputStream(tempFile));
+ final BufferedInputStream bufferedStream = new BufferedInputStream(
+ new FileInputStream(file));
+ BinaryDictionaryFileDumper.checkMagicAndCopyFileTo(bufferedStream, outputStream);
+ outputStream.flush();
+ final File finalFile = new File(finalFileName);
+ finalFile.delete();
+ if (!tempFile.renameTo(finalFile)) {
+ throw new IOException("Can't move the file to its final name");
+ }
+ } catch (IOException e) {
+ // There was an error: show a dialog
+ new AlertDialog.Builder(context)
+ .setTitle(R.string.error)
+ .setMessage(e.toString())
+ .setPositiveButton(android.R.string.ok, new OnClickListener() {
+ @Override
+ public void onClick(final DialogInterface dialog, final int which) {
+ dialog.dismiss();
+ }
+ }).create().show();
+ return;
+ } finally {
+ try {
+ if (null != outputStream) outputStream.close();
+ if (null != tempFile) tempFile.delete();
+ } catch (IOException e) {
+ // Don't do anything
+ }
+ }
}
}