Remove constructors

And small cleanup.

Change-Id: I1de903f42c1b8d57a488be2162e0b94055a6d1f2
main
Jean Chalard 2012-04-06 16:20:35 +09:00
parent 8cf1a8d04f
commit b8060399c7
3 changed files with 26 additions and 20 deletions

View File

@ -249,16 +249,6 @@ public class FusionDictionary implements Iterable<Word> {
public final DictionaryOptions mOptions; public final DictionaryOptions mOptions;
public final Node mRoot; public final Node mRoot;
public FusionDictionary() {
mRoot = new Node();
mOptions = new DictionaryOptions(new HashMap<String, String>());
}
public FusionDictionary(final HashMap<String, String> attributes) {
mRoot = new Node();
mOptions = new DictionaryOptions(attributes);
}
public FusionDictionary(final Node root, final DictionaryOptions options) { public FusionDictionary(final Node root, final DictionaryOptions options) {
mRoot = root; mRoot = root;
mOptions = options; mOptions = options;

View File

@ -16,6 +16,8 @@
package com.android.inputmethod.latin.makedict; package com.android.inputmethod.latin.makedict;
import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import java.io.IOException; import java.io.IOException;
@ -61,7 +63,7 @@ public class XmlDictInputOutput {
private static final int END = 5; private static final int END = 5;
private static final int UNKNOWN = 6; private static final int UNKNOWN = 6;
final FusionDictionary mDictionary; FusionDictionary mDictionary;
int mState; // the state of the parser int mState; // the state of the parser
int mFreq; // the currently read freq int mFreq; // the currently read freq
String mWord; // the current word String mWord; // the current word
@ -71,13 +73,12 @@ public class XmlDictInputOutput {
/** /**
* Create the handler. * Create the handler.
* *
* @param dict the dictionary to construct. * @param shortcuts the shortcuts as a map. This may be empty, but may not be null.
* @param bigrams the bigrams as a map. This may be empty, but may not be null. * @param bigrams the bigrams as a map. This may be empty, but may not be null.
*/ */
public UnigramHandler(final FusionDictionary dict, public UnigramHandler(final HashMap<String, ArrayList<WeightedString>> shortcuts,
final HashMap<String, ArrayList<WeightedString>> shortcuts,
final HashMap<String, ArrayList<WeightedString>> bigrams) { final HashMap<String, ArrayList<WeightedString>> bigrams) {
mDictionary = dict; mDictionary = null;
mShortcutsMap = shortcuts; mShortcutsMap = shortcuts;
mBigramsMap = bigrams; mBigramsMap = bigrams;
mWord = ""; mWord = "";
@ -85,6 +86,17 @@ public class XmlDictInputOutput {
mFreq = 0; mFreq = 0;
} }
public FusionDictionary getFinalDictionary() {
final FusionDictionary dict = mDictionary;
mDictionary = null;
mShortcutsMap.clear();
mBigramsMap.clear();
mWord = "";
mState = START;
mFreq = 0;
return dict;
}
@Override @Override
public void startElement(String uri, String localName, String qName, Attributes attrs) { public void startElement(String uri, String localName, String qName, Attributes attrs) {
if (WORD_TAG.equals(localName)) { if (WORD_TAG.equals(localName)) {
@ -97,10 +109,12 @@ public class XmlDictInputOutput {
} }
} }
} else if (ROOT_TAG.equals(localName)) { } else if (ROOT_TAG.equals(localName)) {
final HashMap<String, String> attributes = new HashMap<String, String>();
for (int attrIndex = 0; attrIndex < attrs.getLength(); ++attrIndex) { for (int attrIndex = 0; attrIndex < attrs.getLength(); ++attrIndex) {
final String attrName = attrs.getLocalName(attrIndex); final String attrName = attrs.getLocalName(attrIndex);
mDictionary.mOptions.mAttributes.put(attrName, attrs.getValue(attrIndex)); attributes.put(attrName, attrs.getValue(attrIndex));
} }
mDictionary = new FusionDictionary(new Node(), new DictionaryOptions(attributes));
} else { } else {
mState = UNKNOWN; mState = UNKNOWN;
} }
@ -235,12 +249,11 @@ public class XmlDictInputOutput {
final ShortcutHandler shortcutHandler = new ShortcutHandler(); final ShortcutHandler shortcutHandler = new ShortcutHandler();
if (null != shortcuts) parser.parse(shortcuts, shortcutHandler); if (null != shortcuts) parser.parse(shortcuts, shortcutHandler);
final FusionDictionary dict = new FusionDictionary();
final UnigramHandler unigramHandler = final UnigramHandler unigramHandler =
new UnigramHandler(dict, shortcutHandler.getShortcutMap(), new UnigramHandler(shortcutHandler.getShortcutMap(),
bigramHandler.getBigramMap()); bigramHandler.getBigramMap());
parser.parse(unigrams, unigramHandler); parser.parse(unigrams, unigramHandler);
return dict; return unigramHandler.getFinalDictionary();
} }
/** /**

View File

@ -16,9 +16,11 @@
package com.android.inputmethod.latin.makedict; package com.android.inputmethod.latin.makedict;
import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
import com.android.inputmethod.latin.makedict.FusionDictionary.Node; import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -38,7 +40,8 @@ public class BinaryDictInputOutputTest extends TestCase {
// Test the flattened array contains the expected number of nodes, and // Test the flattened array contains the expected number of nodes, and
// that it does not contain any duplicates. // that it does not contain any duplicates.
public void testFlattenNodes() { public void testFlattenNodes() {
final FusionDictionary dict = new FusionDictionary(); final FusionDictionary dict = new FusionDictionary(new Node(),
new DictionaryOptions(new HashMap<String, String>()));
dict.add("foo", 1, null, null); dict.add("foo", 1, null, null);
dict.add("fta", 1, null, null); dict.add("fta", 1, null, null);
dict.add("ftb", 1, null, null); dict.add("ftb", 1, null, null);