1 package com.hughes.android.dictionary;
\r
3 import java.util.Comparator;
\r
4 import java.util.LinkedHashMap;
\r
5 import java.util.Map;
\r
7 import com.hughes.util.StringUtil;
\r
9 public abstract class Language {
\r
11 final String symbol;
\r
12 final Comparator<String> tokenComparator;
\r
14 public Language(final String symbol) {
\r
15 this.symbol = symbol;
\r
16 this.tokenComparator = new Comparator<String>() {
\r
17 public int compare(final String s1, final String s2) {
\r
18 final String norm1 = normalizeTokenForSort(s1);
\r
19 final String norm2 = normalizeTokenForSort(s2);
\r
20 final int c = norm1.compareTo(norm2);
\r
24 return StringUtil.reverse(s1).compareTo(StringUtil.reverse(s2));
\r
29 public String toString() {
\r
33 abstract String normalizeTokenForSort(final String token);
\r
36 // ----------------------------------------------------------------
\r
38 public static final Language EN = new Language("EN") {
\r
40 public String normalizeTokenForSort(final String token) {
\r
41 return token.toLowerCase().replaceAll("ß", "ss").replaceAll("ä", "a")
\r
42 .replaceAll("ö", "o").replaceAll("ü", "u").replaceAll("[^A-Za-z0-9]",
\r
47 public static final Language DE = new Language("DE") {
\r
49 String normalizeTokenForSort(final String token) {
\r
50 return token.toLowerCase().replaceAll("ß", "ss").replaceAll("ä", "a")
\r
51 .replaceAll("ae", "a").replaceAll("ö", "o").replaceAll("oe", "o")
\r
52 .replaceAll("ü", "u").replaceAll("ue", "u").replaceAll(
\r
53 "[^A-Za-z0-9]", "");
\r
57 // ----------------------------------------------------------------
\r
59 private static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();
\r
62 symbolToLangauge.put(EN.symbol, EN);
\r
63 symbolToLangauge.put(DE.symbol, DE);
\r
66 static Language lookup(final String symbol) {
\r
67 return symbolToLangauge.get(symbol);
\r