diff options
author | 2014-10-03 17:55:26 +0900 | |
---|---|---|
committer | 2014-10-03 18:04:10 +0900 | |
commit | b28d1cc48794019e63b95b197a6b9cd3fe64275c (patch) | |
tree | 1748de94e7b45f8065beef1bd366982ea98e3ea5 /java/src | |
parent | fb051c3957ae17061204b06258aec3b2e0f05034 (diff) | |
download | latinime-b28d1cc48794019e63b95b197a6b9cd3fe64275c.tar.gz latinime-b28d1cc48794019e63b95b197a6b9cd3fe64275c.tar.xz latinime-b28d1cc48794019e63b95b197a6b9cd3fe64275c.zip |
Fix a behavior change in dicttool
The behavior change was introduced by I8b3458ad. Concretely,
empty bigram lists would end up as empty lists instead of null.
Change-Id: Ibcdf7e6aabc6aba3f5db0477335882394e050ce5
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/WordProperty.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java index 46705f9db..a180d060e 100644 --- a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java +++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java @@ -54,11 +54,15 @@ public final class WordProperty implements Comparable<WordProperty> { mWord = word; mProbabilityInfo = probabilityInfo; mShortcutTargets = shortcutTargets; - mNgrams = new ArrayList<>(); - final NgramContext ngramContext = new NgramContext(new WordInfo(mWord)); - if (bigrams != null) { - for (final WeightedString bigramTarget : bigrams) { - mNgrams.add(new NgramProperty(bigramTarget, ngramContext)); + if (null == bigrams) { + mNgrams = null; + } else { + mNgrams = new ArrayList<>(); + final NgramContext ngramContext = new NgramContext(new WordInfo(mWord)); + if (bigrams != null) { + for (final WeightedString bigramTarget : bigrams) { + mNgrams.add(new NgramProperty(bigramTarget, ngramContext)); + } } } mIsBeginningOfSentence = false; @@ -87,7 +91,7 @@ public final class WordProperty implements Comparable<WordProperty> { mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo); mShortcutTargets = new ArrayList<>(); - mNgrams = new ArrayList<>(); + final ArrayList<NgramProperty> ngrams = new ArrayList<>(); mIsBeginningOfSentence = isBeginningOfSentence; mIsNotAWord = isNotAWord; mIsBlacklistEntry = isBlacklisted; @@ -104,8 +108,9 @@ public final class WordProperty implements Comparable<WordProperty> { final WeightedString ngramTarget = new WeightedString(ngramTargetString, createProbabilityInfoFromArray(bigramProbabilityInfo.get(i))); // TODO: Support n-gram. - mNgrams.add(new NgramProperty(ngramTarget, ngramContext)); + ngrams.add(new NgramProperty(ngramTarget, ngramContext)); } + mNgrams = ngrams.isEmpty() ? null : ngrams; final int shortcutTargetCount = shortcutTargets.size(); for (int i = 0; i < shortcutTargetCount; i++) { @@ -118,6 +123,9 @@ public final class WordProperty implements Comparable<WordProperty> { // TODO: Remove public ArrayList<WeightedString> getBigrams() { + if (null == mNgrams) { + return null; + } final ArrayList<WeightedString> bigrams = new ArrayList<>(); for (final NgramProperty ngram : mNgrams) { if (ngram.mNgramContext.getPrevWordCount() == 1) { @@ -167,11 +175,18 @@ public final class WordProperty implements Comparable<WordProperty> { if (!(o instanceof WordProperty)) return false; WordProperty w = (WordProperty)o; return mProbabilityInfo.equals(w.mProbabilityInfo) && mWord.equals(w.mWord) - && mShortcutTargets.equals(w.mShortcutTargets) && mNgrams.equals(w.mNgrams) + && mShortcutTargets.equals(w.mShortcutTargets) && equals(mNgrams, w.mNgrams) && mIsNotAWord == w.mIsNotAWord && mIsBlacklistEntry == w.mIsBlacklistEntry && mHasNgrams == w.mHasNgrams && mHasShortcuts && w.mHasNgrams; } + private <T> boolean equals(final ArrayList<T> a, final ArrayList<T> b) { + if (null == a) { + return null == b; + } + return a.equals(b); + } + @Override public int hashCode() { if (mHashCode == 0) { |