\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