]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/parser/wiktionary/EnTranslationToTranslationParser.java
Minor automated code simplifications.
[DictionaryPC.git] / src / com / hughes / android / dictionary / parser / wiktionary / EnTranslationToTranslationParser.java
index 14cf43c86c9c8eb4bad956c1e3416fc9516c61cc..042f0fac3289280cb91db44ac86f5404d09fba6d 100644 (file)
@@ -15,6 +15,7 @@
 package com.hughes.android.dictionary.parser.wiktionary;
 
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -24,7 +25,6 @@ import java.util.regex.Pattern;
 import com.hughes.android.dictionary.engine.IndexBuilder;
 import com.hughes.android.dictionary.engine.IndexedEntry;
 import com.hughes.android.dictionary.engine.PairEntry;
-import com.hughes.android.dictionary.engine.PairEntry.Pair;
 import com.hughes.android.dictionary.parser.WikiTokenizer;
 import com.hughes.android.dictionary.parser.wiktionary.EnFunctionCallbacks.TranslationCallback;
 import com.hughes.util.ListUtil;
@@ -37,10 +37,11 @@ public final class EnTranslationToTranslationParser extends AbstractWiktionaryPa
     PairEntry pairEntry = null;
     IndexedEntry indexedEntry = null;
     StringBuilder[] builders = null;
+    final HashSet<PairEntry.Pair> allPairs = new HashSet<>();
 
     public static final String NAME = "EnTranslationToTranslation";
 
-    final Set<String> Ts = new LinkedHashSet<String>(Arrays.asList("t", "t+",
+    final Set<String> Ts = new LinkedHashSet<>(Arrays.asList("t", "t+",
             "t-", "tø", "apdx-t", "ttbc"));
 
     public EnTranslationToTranslationParser(final List<IndexBuilder> indexBuilders,
@@ -87,10 +88,10 @@ public final class EnTranslationToTranslationParser extends AbstractWiktionaryPa
         }
     }
 
-    final TranslationCallback<EnTranslationToTranslationParser> translationCallback = new TranslationCallback<EnTranslationToTranslationParser>();
+    final TranslationCallback<EnTranslationToTranslationParser> translationCallback = new TranslationCallback<>();
 
-    final AppendAndIndexWikiCallback<EnTranslationToTranslationParser> appendAndIndexWikiCallback = new AppendAndIndexWikiCallback<EnTranslationToTranslationParser>(
-        this);
+    final AppendAndIndexWikiCallback<EnTranslationToTranslationParser> appendAndIndexWikiCallback = new AppendAndIndexWikiCallback<>(
+            this);
     {
         for (final String t : Ts) {
             appendAndIndexWikiCallback.functionCallbacks.put(t, translationCallback);
@@ -143,8 +144,14 @@ public final class EnTranslationToTranslationParser extends AbstractWiktionaryPa
         final String lang1 = builders[0].toString();
         final String lang2 = builders[1].toString();
         if (lang1.length() > 0 && lang2.length() > 0) {
-            pairEntry.pairs.add(new Pair(lang1, lang2));
-            indexedEntry.isValid = true;
+            final PairEntry.Pair newPair = new PairEntry.Pair(lang1, lang2);
+            // brute-force approach to prevent adding duplicates
+            if (!allPairs.contains(newPair))
+            {
+                allPairs.add(newPair);
+                pairEntry.pairs.add(new PairEntry.Pair(lang1, lang2));
+                indexedEntry.isValid = true;
+            }
         }
 
         pairEntry = null;
@@ -152,4 +159,4 @@ public final class EnTranslationToTranslationParser extends AbstractWiktionaryPa
         builders = null;
     }
 
-}
\ No newline at end of file
+}