X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryInfo.java;h=4a135202322014530939e5d3e94822b4334eb931;hp=46aafead0216c9c1f9e4de2cab458280dcf8d46a;hb=e79165503392ed6a7cb7a8eadc15eaae0cda9443;hpb=d80531dd96b68d3c05c3825bbe732275b0f9fe02 diff --git a/src/com/hughes/android/dictionary/DictionaryInfo.java b/src/com/hughes/android/dictionary/DictionaryInfo.java index 46aafea..4a13520 100644 --- a/src/com/hughes/android/dictionary/DictionaryInfo.java +++ b/src/com/hughes/android/dictionary/DictionaryInfo.java @@ -15,53 +15,91 @@ package com.hughes.android.dictionary; import java.io.Serializable; +import java.util.ArrayList; public class DictionaryInfo implements Serializable { - - private static final long serialVersionUID = -6850863377577700388L; - - // Stuff populated from the text file. - public final String[] langIsos = new String[2]; - public String uncompressedFilename; - public String downloadUrl; - public long uncompressedSize; - public long creationMillis; - public final int[] allTokenCounts = new int[2]; - public final int[] mainTokenCounts = new int[2]; - - String name; // Determined at runtime based on locale on device--user editable. - String localFile; // Determined based on device's Environment. - - public String toTabSeparatedString() { - return String.format("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d", langIsos[0], - langIsos[1], uncompressedFilename, downloadUrl, creationMillis, uncompressedSize, - mainTokenCounts[0], mainTokenCounts[1], allTokenCounts[0], - allTokenCounts[1]); - } - - public DictionaryInfo(final String line) { - final String[] fields = line.split("\t"); - int i = 0; - langIsos[0] = fields[i++]; - langIsos[1] = fields[i++]; - uncompressedFilename = fields[i++]; - downloadUrl = fields[i++]; - creationMillis = Long.parseLong(fields[i++]); - uncompressedSize = Long.parseLong(fields[i++]); - mainTokenCounts[0] = Integer.parseInt(fields[i++]); - mainTokenCounts[1] = Integer.parseInt(fields[i++]); - allTokenCounts[0] = Integer.parseInt(fields[i++]); - allTokenCounts[1] = Integer.parseInt(fields[i++]); - } - - public DictionaryInfo() { - // Blank object. - } - - @Override - public String toString() { - return name; - } + private static final long serialVersionUID = -6850863377577700388L; + + public static final class IndexInfo implements Serializable { + private static final long serialVersionUID = 6524751236198309438L; + + static final int NUM_CSV_FIELDS = 3; + + public final String shortName; // Often LangISO. + final int allTokenCount; + public final int mainTokenCount; + + public IndexInfo(String shortName, int allTokenCount, int mainTokenCount) { + this.shortName = shortName; + this.allTokenCount = allTokenCount; + this.mainTokenCount = mainTokenCount; + } + + void append(StringBuilder result) { + result.append(shortName); + result.append("\t").append(allTokenCount); + result.append("\t").append(mainTokenCount); + } + + public IndexInfo(final String[] fields, int i) { + shortName = fields[i++]; + allTokenCount = Integer.parseInt(fields[i++]); + mainTokenCount = Integer.parseInt(fields[i++]); + } + } + + // Stuff populated from the text file. + public String uncompressedFilename; // used as a key throughout the program. + public String downloadUrl; + public long uncompressedBytes; + public long zipBytes; + public long creationMillis; + public final ArrayList indexInfos = new ArrayList<>(); + public String dictInfo; + + public DictionaryInfo() { + // Blank object. + } + + public boolean isValid() { + return !indexInfos.isEmpty(); + } + + public StringBuilder append(final StringBuilder result) { + result.append(uncompressedFilename); + result.append("\t").append(downloadUrl); + result.append("\t").append(creationMillis); + result.append("\t").append(uncompressedBytes); + result.append("\t").append(zipBytes); + result.append("\t").append(indexInfos.size()); + for (final IndexInfo indexInfo : indexInfos) { + indexInfo.append(result.append("\t")); + } + result.append("\t").append(dictInfo.replace("\n", "\\\\n")); + return result; + } + + public DictionaryInfo(final String line) { + final String[] fields = line.split("\t"); + int i = 0; + uncompressedFilename = fields[i++]; + downloadUrl = fields[i++]; + creationMillis = Long.parseLong(fields[i++]); + uncompressedBytes = Long.parseLong(fields[i++]); + zipBytes = Long.parseLong(fields[i++]); + final int size = Integer.parseInt(fields[i++]); + indexInfos.ensureCapacity(size); + for (int j = 0; j < size; ++j) { + indexInfos.add(new IndexInfo(fields, i)); + i += IndexInfo.NUM_CSV_FIELDS; + } + dictInfo = fields[i++].replace("\\\\n", "\n"); + } + + @Override + public String toString() { + return uncompressedFilename; + } }