]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/Entry.java
6187ab8c4c600ffa72e9f5f9d9377e97ec6fbfd8
[Dictionary.git] / src / com / hughes / android / dictionary / Entry.java
1 package com.hughes.android.dictionary;\r
2 \r
3 import java.util.regex.Pattern;\r
4 \r
5 public final class Entry {\r
6 \r
7   static final byte LANG1 = 0;\r
8   static final byte LANG2 = 1;\r
9 \r
10   static final Pattern lineSplitPattern = Pattern.compile("\\s+::\\s+");\r
11 \r
12   String lang1 = "";\r
13   String lang2 = "";\r
14 \r
15   Entry() {}\r
16 \r
17   Entry(final String line) {\r
18     final boolean parsed = parseFromLine(line);\r
19     assert parsed;\r
20   }\r
21 \r
22   boolean parseFromLine(final String line) {\r
23     final String[] parts = lineSplitPattern.split(line);\r
24     if (parts.length != 2) {\r
25       System.err.println("Entry:" + "Invalid line: " + line);\r
26       return false;\r
27     }\r
28     lang1 = parts[0];\r
29     lang2 = parts[1];\r
30     return true;\r
31   }\r
32 \r
33   String getAllText(final byte lang) {\r
34     if (lang == LANG1) {\r
35       return lang1;\r
36     }\r
37     assert lang == LANG2;\r
38     return lang2;\r
39   }\r
40   \r
41   String getIndexableText(final byte lang) {\r
42     String text = getAllText(lang);\r
43     text = text.replaceAll("[\"\\.!?,]", "");\r
44     text = text.replaceAll("\\{[^}]+\\}", "");\r
45     return text;\r
46   }\r
47 \r
48   public String normalizeToken(final String token, final byte lang) {\r
49     return token.toLowerCase().replaceAll("ß", "ss").replaceAll("ä", "ae")\r
50         .replaceAll("ö", "oe").replaceAll("ü", "ue")\r
51         .replaceAll("[^A-Za-z]", "");\r
52   }\r
53 \r
54   public Object getFormattedEntry(final byte lang) {\r
55     return getAllText(lang) + "\n" + getAllText(OtherLang(lang));\r
56   }\r
57 \r
58   private byte OtherLang(final byte lang) {\r
59     assert lang == LANG1 || lang == LANG2;\r
60     return lang == LANG1 ? LANG2 : LANG1;\r
61   }\r
62 \r
63 }\r