aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2011-12-26 18:15:37 +0900
committerJean Chalard <jchalard@google.com>2011-12-28 16:01:04 +0900
commit4c34454a70bc75633e1c76478f86f4bcce0b64d4 (patch)
tree59655445905b94fa4c8674c6846853e990c77774
parent8b6f788e18844b281b80256c91c35573fcd97946 (diff)
downloadlatinime-4c34454a70bc75633e1c76478f86f4bcce0b64d4.tar.gz
latinime-4c34454a70bc75633e1c76478f86f4bcce0b64d4.tar.xz
latinime-4c34454a70bc75633e1c76478f86f4bcce0b64d4.zip
Make bigram handler a son of a more generic class (B1)
Change-Id: I71aa109d3e67ff139e4f385344882d906f687c77
-rw-r--r--tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java71
1 files changed, 47 insertions, 24 deletions
diff --git a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java b/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java
index 1535eb0b8..838cda535 100644
--- a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java
+++ b/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java
@@ -113,15 +113,12 @@ public class XmlDictInputOutput {
}
}
- /**
- * SAX handler for a bigram XML file.
- */
- static private class BigramHandler extends DefaultHandler {
- private final static String BIGRAM_W1_TAG = "bi";
- private final static String BIGRAM_W2_TAG = "w";
- private final static String BIGRAM_W1_ATTRIBUTE = "w1";
- private final static String BIGRAM_W2_ATTRIBUTE = "w2";
- private final static String BIGRAM_FREQ_ATTRIBUTE = "p";
+ static private class AssociativeListHandler extends DefaultHandler {
+ private final String SRC_TAG;
+ private final String SRC_ATTRIBUTE;
+ private final String DST_TAG;
+ private final String DST_ATTRIBUTE;
+ private final String DST_FREQ;
// In this version of the XML file, the bigram frequency is given as an int 0..XML_MAX
private final static int XML_MAX = 256;
@@ -129,31 +126,57 @@ public class XmlDictInputOutput {
private final static int MEMORY_MAX = 16;
private final static int XML_TO_MEMORY_RATIO = XML_MAX / MEMORY_MAX;
- String mW1;
- final HashMap<String, ArrayList<WeightedString>> mBigramsMap;
-
- public BigramHandler() {
- mW1 = null;
- mBigramsMap = new HashMap<String, ArrayList<WeightedString>>();
+ private String mSrc;
+ private final HashMap<String, ArrayList<WeightedString>> mAssocMap;
+
+ public AssociativeListHandler(final String srcTag, final String srcAttribute,
+ final String dstTag, final String dstAttribute, final String dstFreq) {
+ SRC_TAG = srcTag;
+ SRC_ATTRIBUTE = srcAttribute;
+ DST_TAG = dstTag;
+ DST_ATTRIBUTE = dstAttribute;
+ DST_FREQ = dstFreq;
+ mSrc = null;
+ mAssocMap = new HashMap<String, ArrayList<WeightedString>>();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attrs) {
- if (BIGRAM_W1_TAG.equals(localName)) {
- mW1 = attrs.getValue(uri, BIGRAM_W1_ATTRIBUTE);
- } else if (BIGRAM_W2_TAG.equals(localName)) {
- String w2 = attrs.getValue(uri, BIGRAM_W2_ATTRIBUTE);
- int freq = Integer.parseInt(attrs.getValue(uri, BIGRAM_FREQ_ATTRIBUTE));
- WeightedString bigram = new WeightedString(w2, freq / XML_TO_MEMORY_RATIO);
- ArrayList<WeightedString> bigramList = mBigramsMap.get(mW1);
+ if (SRC_TAG.equals(localName)) {
+ mSrc = attrs.getValue(uri, SRC_ATTRIBUTE);
+ } else if (DST_TAG.equals(localName)) {
+ String dst = attrs.getValue(uri, DST_ATTRIBUTE);
+ int freq = Integer.parseInt(attrs.getValue(uri, DST_FREQ));
+ WeightedString bigram = new WeightedString(dst, freq / XML_TO_MEMORY_RATIO);
+ ArrayList<WeightedString> bigramList = mAssocMap.get(mSrc);
if (null == bigramList) bigramList = new ArrayList<WeightedString>();
bigramList.add(bigram);
- mBigramsMap.put(mW1, bigramList);
+ mAssocMap.put(mSrc, bigramList);
}
}
+ public HashMap<String, ArrayList<WeightedString>> getAssocMap() {
+ return mAssocMap;
+ }
+ }
+
+ /**
+ * SAX handler for a bigram XML file.
+ */
+ static private class BigramHandler extends AssociativeListHandler {
+ private final static String BIGRAM_W1_TAG = "bi";
+ private final static String BIGRAM_W2_TAG = "w";
+ private final static String BIGRAM_W1_ATTRIBUTE = "w1";
+ private final static String BIGRAM_W2_ATTRIBUTE = "w2";
+ private final static String BIGRAM_FREQ_ATTRIBUTE = "p";
+
+ public BigramHandler() {
+ super(BIGRAM_W1_TAG, BIGRAM_W1_ATTRIBUTE, BIGRAM_W2_TAG, BIGRAM_W2_ATTRIBUTE,
+ BIGRAM_FREQ_ATTRIBUTE);
+ }
+
public HashMap<String, ArrayList<WeightedString>> getBigramMap() {
- return mBigramsMap;
+ return getAssocMap();
}
}