X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FIndexBuilder.java;h=9fe234b7c7723c80ec11c02446a3bbdde84cd3a3;hb=2b238094993e8348bafddf30bcb88ee0bf9ed899;hp=a8d225a6505f8d6aa519e053baae3789b9449c8f;hpb=43d1457912951cad44fbadd92360313884155867;p=DictionaryPC.git diff --git a/src/com/hughes/android/dictionary/engine/IndexBuilder.java b/src/com/hughes/android/dictionary/engine/IndexBuilder.java index a8d225a..9fe234b 100644 --- a/src/com/hughes/android/dictionary/engine/IndexBuilder.java +++ b/src/com/hughes/android/dictionary/engine/IndexBuilder.java @@ -53,31 +53,32 @@ public class IndexBuilder { final int startRow = rows.size(); TokenRow tokenRow = null; + if (!tokenData.htmlEntries.isEmpty()) { + tokenRow = new TokenRow(indexIndex, rows.size(), index, /* hasMainEntry */ true); + rows.add(tokenRow); + } + +// System.out.println("Added TokenRow: " + rows.get(rows.size() - 1)); int numRows = 0; // off by one--doesn't count the token row! // System.out.println("TOKEN: " + tokenData.token); for (final Map.Entry> typeToIndexedEntries : tokenData.typeToEntries.entrySet()) { for (final IndexedEntry indexedEntry : typeToIndexedEntries.getValue()) { - if (!indexedEntry.isValid) { continue; } if (tokenRow == null) { -// System.out.println("Added TokenRow: " + rows.get(rows.size() - 1)); - tokenRow = new TokenRow(indexIndex, rows.size(), index, tokenData.hasMainEntry); - rows.add(tokenRow); - if (tokenRow.hasMainEntry) { - index.mainTokenCount++; - } + tokenRow = new TokenRow(indexIndex, rows.size(), index, tokenData.hasMainEntry); + rows.add(tokenRow); } - if (indexedEntry.index() == -1) { - indexedEntry.addToDictionary(dictionaryBuilder.dictionary); - assert indexedEntry.index() >= 0; + if (indexedEntry.entry.index() == -1) { + indexedEntry.entry.addToDictionary(dictionaryBuilder.dictionary); + assert indexedEntry.entry.index() >= 0; } if (tokenIndexedEntries.add(indexedEntry)) { - rows.add(indexedEntry.entry.CreateRow(indexedEntry.index(), rows.size(), index)); + rows.add(indexedEntry.entry.CreateRow(rows.size(), index)); ++indexedEntry.entry.entrySource.numEntries; ++numRows; @@ -87,8 +88,17 @@ public class IndexBuilder { } } } - index.sortedIndexEntries.add(new Index.IndexEntry(tokenData.token, index - .normalizer().transliterate(tokenData.token), startRow, numRows)); + + if (tokenRow != null) { + if (tokenRow.hasMainEntry) { + index.mainTokenCount++; + } + + final Index.IndexEntry indexEntry = new Index.IndexEntry(index, tokenData.token, index + .normalizer().transliterate(tokenData.token), startRow, numRows); + indexEntry.htmlEntries.addAll(tokenData.htmlEntries); + index.sortedIndexEntries.add(indexEntry); + } } final List entriesSortedByNumRows = new ArrayList(index.sortedIndexEntries); @@ -103,12 +113,14 @@ public class IndexBuilder { } } - static class TokenData { + public static class TokenData { final String token; final Map> typeToEntries = new EnumMap>(EntryTypeName.class); boolean hasMainEntry = false; + public List htmlEntries = new ArrayList(); + TokenData(final String token) { assert token.equals(token.trim()); assert token.length() > 0; @@ -116,7 +128,7 @@ public class IndexBuilder { } } - private TokenData getOrCreateTokenData(final String token) { + public TokenData getOrCreateTokenData(final String token) { TokenData tokenData = tokenToData.get(token); if (tokenData == null) { tokenData = new TokenData(token);