diff options
| author | krasimir <krasimir@chalmers.se> | 2015-07-01 09:44:56 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2015-07-01 09:44:56 +0000 |
| commit | 34ef01f613339c858fedafdc555df3aacf1ac83d (patch) | |
| tree | 888ed2d473b7dfc29e302d776208ed33ba4f1a46 /src/ui | |
| parent | fa13e1834c531ea704f54c6398e98f1befb2e2ca (diff) | |
the Android app now can show Glosses from WordNet
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/android/src/org/grammaticalframework/ui/android/Translator.java | 66 |
1 files changed, 55 insertions, 11 deletions
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index 88271c941..f5eba7bb0 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -5,6 +5,8 @@ import android.content.SharedPreferences; import android.util.Log; import android.util.Pair; import android.view.inputmethod.CompletionInfo; +import android.database.sqlite.SQLiteDatabase; +import android.database.Cursor; import org.grammaticalframework.pgf.*; import java.io.*; @@ -45,6 +47,7 @@ public class Translator { private ConcrLoader mSourceLoader; private ConcrLoader mTargetLoader; private ConcrLoader mOtherLoader; + private DBManager mDBManager; private static final String SOURCE_LANG_KEY = "source_lang"; private static final String TARGET_LANG_KEY = "target_lang"; @@ -94,6 +97,8 @@ public class Translator { } mOtherLoader = null; + + mDBManager = new DBManager(context); } public List<Language> getAvailableLanguages() { @@ -360,22 +365,61 @@ public class Translator { } public String getInflectionTable(String lemma) { + SQLiteDatabase db = mDBManager.getReadableDatabase(); + Cursor crs = db.rawQuery("select def from defs where fun=?1", new String[] { lemma }); + String def = ""; + if (crs.moveToNext()) { + def = escapeHtml(crs.getString(0)); + } + crs.close(); + Concr targetLang = getTargetConcr(); String cat = getGrammar().getFunctionType(lemma).getCategory(); - if (!targetLang.hasLinearization(lemma)) + if (targetLang.hasLinearization(lemma) && + targetLang.hasLinearization("Inflection"+cat)) { + Expr e = Expr.readExpr("MkDocument \""+def+"\" (Inflection"+cat+" "+lemma+") \"\""); + String html = + "<html><head><meta charset=\"UTF-8\"/></head><body>" + + targetLang.linearize(e) + + "</body>"; + return html; + } else if (def != "") { + return "<p style=\"font-size:20px\">"+def+"</p>"; + } else { return null; + } + } + + private static String escapeHtml(CharSequence text) { + StringBuilder out = new StringBuilder(); + + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + + if (c == '<') { + out.append("<"); + } else if (c == '>') { + out.append(">"); + } else if (c == '&') { + out.append("&"); + } else if (c == '"') { + out.append("""); + } else if (c > 0x7E || c < ' ') { + out.append("&#").append((int) c).append(";"); + } else if (c == ' ') { + while (i + 1 < text.length() && text.charAt(i + 1) == ' ') { + out.append(" "); + i++; + } - if (!targetLang.hasLinearization("Inflection"+cat)) - return null; - - Expr e = Expr.readExpr("MkDocument \"\" (Inflection"+cat+" "+lemma+") \"\""); - String html = - "<html><head><meta charset=\"UTF-8\"/></head><body>" + - targetLang.linearize(e) + - "</body>"; - - return html; + out.append(' '); + } else { + out.append(c); + } + } + + return out.toString(); } public List<MorphoAnalysis> lookupMorpho(String sentence) { |
