]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/Dictionary.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / Dictionary.java
index dfca94617d2327b67a307c48436ffada79dbd9af..d8fd3c6b3bd95d6bc8e5d7e1cc806d4ca7944cbb 100755 (executable)
@@ -16,39 +16,44 @@ import com.hughes.util.raf.UniformFileList;
 \r
 public final class Dictionary implements RAFSerializable<Dictionary> {\r
   \r
-  private static final String VERSION_CODE = "DictionaryVersion=1.5";\r
+  private static final String VERSION_CODE = "DictionaryVersion=2.0";\r
 \r
-  static final RAFSerializer<Entry> ENTRY_SERIALIZER = new RAFSerializableSerializer<Entry>(\r
-      Entry.RAF_FACTORY);\r
+  static final RAFSerializer<SimpleEntry> ENTRY_SERIALIZER = new RAFSerializableSerializer<SimpleEntry>(\r
+      SimpleEntry.RAF_FACTORY);\r
   static final RAFSerializer<Row> ROW_SERIALIZER = new RAFSerializableSerializer<Row>(\r
       Row.RAF_FACTORY);\r
   static final RAFSerializer<IndexEntry> INDEX_ENTRY_SERIALIZER = new RAFSerializableSerializer<IndexEntry>(\r
       IndexEntry.RAF_FACTORY);\r
 \r
   final String dictionaryInfo;\r
+  final List<String> sources;\r
   final List<Entry> entries;\r
   final LanguageData[] languageDatas = new LanguageData[2];\r
 \r
   public Dictionary(final String dictionaryInfo, final Language language0, final Language language1) {\r
     this.dictionaryInfo = dictionaryInfo;\r
-    languageDatas[0] = new LanguageData(this, language0, Entry.LANG1);\r
-    languageDatas[1] = new LanguageData(this, language1, Entry.LANG2);\r
+    sources = new ArrayList<String>();\r
+    languageDatas[0] = new LanguageData(this, language0, SimpleEntry.LANG1);\r
+    languageDatas[1] = new LanguageData(this, language1, SimpleEntry.LANG2);\r
     entries = new ArrayList<Entry>();\r
   }\r
 \r
   public Dictionary(final RandomAccessFile raf) throws IOException {\r
     dictionaryInfo = raf.readUTF();\r
+    sources = new ArrayList<String>(FileList.create(raf, RAFSerializer.STRING, raf.getFilePointer()));\r
     entries = CachingList.create(FileList.create(raf, ENTRY_SERIALIZER, raf\r
         .getFilePointer()), 10000);\r
-    languageDatas[0] = new LanguageData(this, raf, Entry.LANG1);\r
-    languageDatas[1] = new LanguageData(this, raf, Entry.LANG2);\r
-    if (!VERSION_CODE.equals(raf.readUTF())) {\r
-      throw new IOException("Invalid dictionary version, expected: " + VERSION_CODE);\r
+    languageDatas[0] = new LanguageData(this, raf, SimpleEntry.LANG1);\r
+    languageDatas[1] = new LanguageData(this, raf, SimpleEntry.LANG2);\r
+    final String version = raf.readUTF();\r
+    if (!VERSION_CODE.equals(version)) {\r
+      throw new IOException("Invalid dictionary version, found " + version + ", expected: " + VERSION_CODE);\r
     }\r
   }\r
 \r
   public void write(RandomAccessFile raf) throws IOException {\r
     raf.writeUTF(dictionaryInfo);\r
+    FileList.write(raf, sources, RAFSerializer.STRING);\r
     FileList.write(raf, entries, ENTRY_SERIALIZER);\r
     languageDatas[0].write(raf);\r
     languageDatas[1].write(raf);\r