]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryInfo.java
Fixed themes, fixing DictionaryInfo, DictionaryVersion 2. Better
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryInfo.java
index 46aafead0216c9c1f9e4de2cab458280dcf8d46a..e965994a2251e3f294b09d294603896ea890a23c 100644 (file)
 package com.hughes.android.dictionary;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 public class DictionaryInfo implements Serializable {
   
   private static final long serialVersionUID = -6850863377577700388L;
   
+  public static final class IndexInfo {
+    public IndexInfo(String langIso, int allTokenCount, int mainTokenCount) {
+      this.langIso = langIso;
+      this.allTokenCount = allTokenCount;
+      this.mainTokenCount = mainTokenCount;
+    }
+    public final String langIso;
+    public final int allTokenCount;
+    public final int mainTokenCount;
+    
+    public static final int SIZE = 3;
+    
+    public StringBuilder append(StringBuilder result) {
+      result.append("\t").append(langIso);
+      result.append("\t").append(allTokenCount);
+      result.append("\t").append(mainTokenCount);
+      return result;
+    }
+
+    public IndexInfo(final String[] fields, int i) {
+      langIso = fields[i++];
+      allTokenCount = Integer.parseInt(fields[i++]);
+      mainTokenCount = Integer.parseInt(fields[i++]);
+    }
+
+  }
+  
   // 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];
+  public String dictInfo;
+  public final List<IndexInfo> indexInfos = new ArrayList<DictionaryInfo.IndexInfo>();
 
-  String name;  // Determined at runtime based on locale on device--user editable.
+  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 StringBuilder append(final StringBuilder result) {
+    result.append(uncompressedFilename).append("\t");
+    result.append(downloadUrl).append("\t");
+    result.append(creationMillis).append("\t");
+    result.append(uncompressedSize).append("\t");
+    result.append(dictInfo).append("\t");
+    result.append(indexInfos.size()).append("\t");
+    for (final IndexInfo indexInfo : indexInfos) {
+      indexInfo.append(result);
+    }
+    return result;
   }
 
   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++]);
+    dictInfo = fields[i++];
+    final int size = Integer.parseInt(fields[i++]);
+    for (int j = 0; j < size; ++j) {
+      indexInfos.add(new IndexInfo(fields, i));
+      i += IndexInfo.SIZE;
+    }
   }
 
   public DictionaryInfo() {