import com.hughes.util.raf.UniformFileList;\r
\r
public final class Dictionary implements RAFSerializable<Dictionary> {\r
+ \r
+ private static final String VERSION_CODE = "DictionaryVersion=1.5";\r
\r
static final RAFSerializer<Entry> ENTRY_SERIALIZER = new RAFSerializableSerializer<Entry>(\r
Entry.RAF_FACTORY);\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
+ }\r
}\r
\r
public void write(RandomAccessFile raf) throws IOException {\r
FileList.write(raf, entries, ENTRY_SERIALIZER);\r
languageDatas[0].write(raf);\r
languageDatas[1].write(raf);\r
+ raf.writeUTF(VERSION_CODE);\r
}\r
\r
final class LanguageData implements RAFSerializable<LanguageData> {\r
FileList.write(raf, sortedIndex, INDEX_ENTRY_SERIALIZER);\r
}\r
\r
- String rowToString(final Row row) {\r
+ String rowToString(final Row row, final boolean onlyFirstSubentry) {\r
return row.isToken() ? sortedIndex.get(row.getIndex()).word : entries\r
- .get(row.getIndex()).toString();\r
+ .get(row.getIndex()).getRawText(onlyFirstSubentry);\r
}\r
\r
int lookup(String word, final AtomicBoolean interrupted) {\r