summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2015-07-01 09:44:56 +0000
committerkrasimir <krasimir@chalmers.se>2015-07-01 09:44:56 +0000
commit34ef01f613339c858fedafdc555df3aacf1ac83d (patch)
tree888ed2d473b7dfc29e302d776208ed33ba4f1a46 /src/ui
parentfa13e1834c531ea704f54c6398e98f1befb2e2ca (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.java66
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("&lt;");
+ } else if (c == '>') {
+ out.append("&gt;");
+ } else if (c == '&') {
+ out.append("&amp;");
+ } else if (c == '"') {
+ out.append("&quot;");
+ } 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("&nbsp;");
+ 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) {