From: Reimar Döffinger Date: Sun, 13 Dec 2015 15:58:55 +0000 (+0100) Subject: List broken/corrupted dictionaries in list. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=0c346cf361e8af0e69cf3f0214d017e6660fea26 List broken/corrupted dictionaries in list. Should help debugging "dictionaries disappear" issues. --- diff --git a/src/com/hughes/android/dictionary/DictionaryApplication.java b/src/com/hughes/android/dictionary/DictionaryApplication.java index d5b19e5..3a97034 100644 --- a/src/com/hughes/android/dictionary/DictionaryApplication.java +++ b/src/com/hughes/android/dictionary/DictionaryApplication.java @@ -590,7 +590,7 @@ public class DictionaryApplication extends Application { for (final String uncompressedFilename : oldDictionaryConfig.dictionaryFilesOrdered) { final File dictFile = getPath(uncompressedFilename); final DictionaryInfo dictionaryInfo = Dictionary.getDictionaryInfo(dictFile); - if (dictionaryInfo != null) { + if (dictionaryInfo.isValid()) { newDictionaryConfig.dictionaryFilesOrdered.add(uncompressedFilename); newDictionaryConfig.uncompressedFilenameToDictionaryInfo.put( uncompressedFilename, dictionaryInfo); @@ -619,9 +619,8 @@ public class DictionaryApplication extends Application { continue; } final DictionaryInfo dictionaryInfo = Dictionary.getDictionaryInfo(file); - if (dictionaryInfo == null) { + if (!dictionaryInfo.isValid()) { Log.e(LOG, "Unable to parse dictionary: " + file.getPath()); - continue; } toAddSorted.add(file.getName()); diff --git a/src/com/hughes/android/dictionary/DictionaryInfo.java b/src/com/hughes/android/dictionary/DictionaryInfo.java index cfe95f6..8a95677 100644 --- a/src/com/hughes/android/dictionary/DictionaryInfo.java +++ b/src/com/hughes/android/dictionary/DictionaryInfo.java @@ -64,6 +64,10 @@ public class DictionaryInfo implements Serializable { // Blank object. } + public boolean isValid() { + return !indexInfos.isEmpty(); + } + public StringBuilder append(final StringBuilder result) { result.append(uncompressedFilename); result.append("\t").append(downloadUrl); diff --git a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java index b8144a4..13dc94f 100644 --- a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java @@ -519,7 +519,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { } private View createDictionaryRow(final DictionaryInfo dictionaryInfo, - final ViewGroup parent, final boolean canLaunch) { + final ViewGroup parent, boolean canLaunch) { View row = LayoutInflater.from(parent.getContext()).inflate( R.layout.dictionary_manager_row, parent, false); @@ -530,7 +530,12 @@ public class DictionaryManagerActivity extends ActionBarActivity { final boolean updateAvailable = application.updateAvailable(dictionaryInfo); final Button downloadButton = (Button) row.findViewById(R.id.downloadButton); final DictionaryInfo downloadable = application.getDownloadable(dictionaryInfo.uncompressedFilename); - if (!canLaunch || updateAvailable) { + boolean broken = false; + if (!dictionaryInfo.isValid()) { + broken = true; + canLaunch = false; + } + if (downloadable != null && (!canLaunch || updateAvailable)) { downloadButton .setText(getString( R.string.downloadButton, @@ -578,6 +583,10 @@ public class DictionaryManagerActivity extends ActionBarActivity { builder.append("; "); builder.append(getString(R.string.downloadButton, downloadable.uncompressedBytes / 1024.0 / 1024.0)); } + if (broken) { + name.setText("Broken: " + application.getDictionaryName(dictionaryInfo.uncompressedFilename)); + builder.append("; Cannot be used, redownload, check hardware/file system"); + } details.setText(builder.toString()); if (canLaunch) { diff --git a/src/com/hughes/android/dictionary/engine/Dictionary.java b/src/com/hughes/android/dictionary/engine/Dictionary.java index 084546d..1a57d89 100644 --- a/src/com/hughes/android/dictionary/engine/Dictionary.java +++ b/src/com/hughes/android/dictionary/engine/Dictionary.java @@ -194,7 +194,10 @@ public class Dictionary implements RAFSerializable { raf.close(); return dictionaryInfo; } catch (IOException e) { - return null; + final DictionaryInfo dictionaryInfo = new DictionaryInfo(); + dictionaryInfo.uncompressedFilename = file.getName(); + dictionaryInfo.uncompressedBytes = file.length(); + return dictionaryInfo; } finally { if (raf != null) { try {