From b28d1cc48794019e63b95b197a6b9cd3fe64275c Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 3 Oct 2014 17:55:26 +0900 Subject: 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 --- .../inputmethod/latin/makedict/WordProperty.java | 31 ++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'java/src') 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 { 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 { mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo); mShortcutTargets = new ArrayList<>(); - mNgrams = new ArrayList<>(); + final ArrayList ngrams = new ArrayList<>(); mIsBeginningOfSentence = isBeginningOfSentence; mIsNotAWord = isNotAWord; mIsBlacklistEntry = isBlacklisted; @@ -104,8 +108,9 @@ public final class WordProperty implements Comparable { 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 { // TODO: Remove public ArrayList getBigrams() { + if (null == mNgrams) { + return null; + } final ArrayList bigrams = new ArrayList<>(); for (final NgramProperty ngram : mNgrams) { if (ngram.mNgramContext.getPrevWordCount() == 1) { @@ -167,11 +175,18 @@ public final class WordProperty implements Comparable { 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 boolean equals(final ArrayList a, final ArrayList b) { + if (null == a) { + return null == b; + } + return a.equals(b); + } + @Override public int hashCode() { if (mHashCode == 0) { -- cgit v1.2.3-83-g751a