From 105db47ee4869358e4c7b066ad2947bc5a7681b9 Mon Sep 17 00:00:00 2001 From: krasimir Date: Mon, 16 Nov 2015 14:57:32 +0000 Subject: [PATCH] now the Documentation module contains a category Definition which is used to generate definitions and examples for words in the App. --- .../ui/android/SemanticGraphManager.java | 31 ++++++++++++++----- .../ui/android/Translator.java | 21 ++++++++----- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/SemanticGraphManager.java b/src/ui/android/src/org/grammaticalframework/ui/android/SemanticGraphManager.java index 19080dfef..0d5d5e227 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/SemanticGraphManager.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/SemanticGraphManager.java @@ -76,22 +76,39 @@ public class SemanticGraphManager implements Closeable { } } - public Expr getGloss(Expr lemma) { - Expr obj = null; + public Expr getDefinition(Expr lemma, boolean withExample) { + Expr gloss = null; + Expr example = null; try { createDatabaseFromAssets(); - TripleResult res = mDB.queryTriple(lemma, Expr.readExpr("gloss"), null); - if (res.hasNext()) { - obj = res.getObject(); + + { + TripleResult res = mDB.queryTriple(lemma, Expr.readExpr("gloss"), null); + if (res.hasNext()) { + gloss = res.getObject(); + } + res.close(); + } + + if (withExample) { + TripleResult res = mDB.queryTriple(lemma, Expr.readExpr("example"), null); + if (res.hasNext()) { + example = res.getObject(); + } + res.close(); } - res.close(); } catch (IOException e) { // nothing } catch (SGError e) { // nothing } - return obj; + if (gloss == null) + return null; + else if (example == null) + return new Expr("MkDefinition", gloss); + else + return new Expr("MkDefinitionEx", gloss, example); } } 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 aaae8368f..e6d5362f3 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -367,26 +367,31 @@ public class Translator { } public String getInflectionTable(String lemma) { - Expr lemmaExpr = Expr.readExpr(lemma); - Expr gloss = mSGManager.getGloss(lemmaExpr); - Expr empty = Expr.readExpr("\"\""); + boolean withExample = + (getSourceLanguage().getLangCode().equals("en-US") || + getTargetLanguage().getLangCode().equals("en-US")); + Expr def = + mSGManager.getDefinition(Expr.readExpr(lemma), withExample); Concr targetLang = getTargetConcr(); String cat = getGrammar().getFunctionType(lemma).getCategory(); if (targetLang.hasLinearization(lemma) && targetLang.hasLinearization("Inflection"+cat)) { - if (gloss == null) - gloss = empty; + if (def == null) + def = new Expr("NoDefinition"); - Expr e = new Expr("MkDocument", gloss, Expr.readExpr("Inflection"+cat+" "+lemma), empty); + Expr e = new Expr("MkDocument", + def, + Expr.readExpr("Inflection"+cat+" "+lemma), + Expr.readExpr("\"\"")); String html = "" + targetLang.linearize(e) + ""; return html; - } else if (gloss != null) { - return "

"+targetLang.linearize(gloss)+"

"; + } else if (def != null) { + return targetLang.linearize(def); } else { return null; }