-package com.hughes.android.dictionary;\r
-\r
-import java.util.regex.Pattern;\r
-\r
-public final class Entry {\r
-\r
- static final byte LANG1 = 0;\r
- static final byte LANG2 = 1;\r
-\r
- static final Pattern lineSplitPattern = Pattern.compile("\\s+::\\s+");\r
-\r
- String lang1 = "";\r
- String lang2 = "";\r
-\r
- Entry() {}\r
-\r
- Entry(final String line) {\r
- final boolean parsed = parseFromLine(line);\r
- assert parsed;\r
- }\r
-\r
- boolean parseFromLine(final String line) {\r
- final String[] parts = lineSplitPattern.split(line);\r
- if (parts.length != 2) {\r
- System.err.println("Entry:" + "Invalid line: " + line);\r
- return false;\r
- }\r
- lang1 = parts[0];\r
- lang2 = parts[1];\r
- return true;\r
- }\r
-\r
- String getAllText(final byte lang) {\r
- if (lang == LANG1) {\r
- return lang1;\r
- }\r
- assert lang == LANG2;\r
- return lang2;\r
- }\r
- \r
- String getIndexableText(final byte lang) {\r
- String text = getAllText(lang);\r
- text = text.replaceAll("[\"\\.!?,]", "");\r
- text = text.replaceAll("\\{[^}]+\\}", "");\r
- return text;\r
- }\r
-\r
- public Object getFormattedEntry(final byte lang) {\r
- return getAllText(lang) + "\n" + getAllText(OtherLang(lang));\r
- }\r
-\r
- private byte OtherLang(final byte lang) {\r
- assert lang == LANG1 || lang == LANG2;\r
- return lang == LANG1 ? LANG2 : LANG1;\r
- }\r
-\r
- public String getRawText() {\r
- return getAllText(LANG1) + " :: " + getAllText(LANG2);\r
- }\r
-\r
-}\r
+package com.hughes.android.dictionary;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+import com.hughes.util.raf.RAFFactory;
+import com.hughes.util.raf.RAFSerializable;
+
+public interface Entry extends RAFSerializable<Entry> {
+
+ public static final RAFFactory<Entry> RAF_FACTORY = new RAFFactory<Entry>() {
+ public Entry create(RandomAccessFile raf) throws IOException {
+ final byte type = raf.readByte();
+ switch (type) {
+ case 0:
+ return SimpleEntry.RAF_FACTORY.create(raf);
+ }
+ throw new RuntimeException("Invalid entry type: " + type);
+ }};
+
+
+}