Merge "[HD03] Straighten out attribute key names in Java."

main
Jean Chalard 2014-01-31 08:40:24 +00:00 committed by Android (Google) Code Review
commit 4e6f72cb80
10 changed files with 47 additions and 45 deletions

View File

@ -267,9 +267,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
protected Map<String, String> getHeaderAttributeMap() { protected Map<String, String> getHeaderAttributeMap() {
HashMap<String, String> attributeMap = new HashMap<String, String>(); HashMap<String, String> attributeMap = new HashMap<String, String>();
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, mDictName); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_KEY, mDictName);
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, mLocale.toString()); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY, mLocale.toString());
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_KEY,
String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))); String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
return attributeMap; return attributeMap;
} }

View File

@ -60,7 +60,7 @@ public abstract class AbstractDictDecoder implements DictDecoder {
final FileHeader header = new FileHeader(headerSize, final FileHeader header = new FileHeader(headerSize,
new FusionDictionary.DictionaryOptions(attributes), new FusionDictionary.DictionaryOptions(attributes),
new FormatOptions(version, FileHeader.ATTRIBUTE_VALUE_TRUE.equals( new FormatOptions(version, FileHeader.ATTRIBUTE_VALUE_TRUE.equals(
attributes.get(FileHeader.HAS_HISTORICAL_INFO_ATTRIBUTE)))); attributes.get(FileHeader.HAS_HISTORICAL_INFO_KEY))));
return header; return header;
} }

View File

@ -336,16 +336,19 @@ public final class FormatSpec {
public final int mBodyOffset; public final int mBodyOffset;
public final DictionaryOptions mDictionaryOptions; public final DictionaryOptions mDictionaryOptions;
public final FormatOptions mFormatOptions; public final FormatOptions mFormatOptions;
// Note that these are corresponding definitions in native code in latinime::HeaderPolicy // Note that these are corresponding definitions in native code in latinime::HeaderPolicy
// and latinime::HeaderReadWriteUtils. // and latinime::HeaderReadWriteUtils.
public static final String USES_FORGETTING_CURVE_ATTRIBUTE = "USES_FORGETTING_CURVE"; // TODO: Standardize the key names and bump up the format version, taking care not to
public static final String HAS_HISTORICAL_INFO_ATTRIBUTE = "HAS_HISTORICAL_INFO"; // break format version 2 dictionaries.
public static final String DICTIONARY_VERSION_KEY = "version";
public static final String DICTIONARY_LOCALE_KEY = "locale";
public static final String DICTIONARY_ID_KEY = "dictionary";
public static final String DICTIONARY_DESCRIPTION_KEY = "description";
public static final String DICTIONARY_DATE_KEY = "date";
public static final String HAS_HISTORICAL_INFO_KEY = "HAS_HISTORICAL_INFO";
public static final String USES_FORGETTING_CURVE_KEY = "USES_FORGETTING_CURVE";
public static final String ATTRIBUTE_VALUE_TRUE = "1"; public static final String ATTRIBUTE_VALUE_TRUE = "1";
public static final String DICTIONARY_VERSION_ATTRIBUTE = "version";
public static final String DICTIONARY_LOCALE_ATTRIBUTE = "locale";
public static final String DICTIONARY_ID_ATTRIBUTE = "dictionary";
private static final String DICTIONARY_DESCRIPTION_ATTRIBUTE = "description";
public FileHeader(final int headerSize, final DictionaryOptions dictionaryOptions, public FileHeader(final int headerSize, final DictionaryOptions dictionaryOptions,
final FormatOptions formatOptions) throws UnsupportedFormatException { final FormatOptions formatOptions) throws UnsupportedFormatException {
mDictionaryOptions = dictionaryOptions; mDictionaryOptions = dictionaryOptions;
@ -365,24 +368,24 @@ public final class FormatSpec {
// Helper method to get the locale as a String // Helper method to get the locale as a String
public String getLocaleString() { public String getLocaleString() {
return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_LOCALE_ATTRIBUTE); return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_LOCALE_KEY);
} }
// Helper method to get the version String // Helper method to get the version String
public String getVersion() { public String getVersion() {
return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_VERSION_ATTRIBUTE); return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_VERSION_KEY);
} }
// Helper method to get the dictionary ID as a String // Helper method to get the dictionary ID as a String
public String getId() { public String getId() {
return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_ID_ATTRIBUTE); return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_ID_KEY);
} }
// Helper method to get the description // Helper method to get the description
public String getDescription() { public String getDescription() {
// TODO: Right now each dictionary file comes with a description in its own language. // TODO: Right now each dictionary file comes with a description in its own language.
// It will display as is no matter the device's locale. It should be internationalized. // It will display as is no matter the device's locale. It should be internationalized.
return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_DESCRIPTION_ATTRIBUTE); return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_DESCRIPTION_KEY);
} }
} }

View File

@ -62,7 +62,7 @@ public class Ver4DictEncoder implements DictEncoder {
final BinaryDictionary binaryDict = new BinaryDictionary(mDictPlacedDir.getAbsolutePath(), final BinaryDictionary binaryDict = new BinaryDictionary(mDictPlacedDir.getAbsolutePath(),
0l, mDictPlacedDir.length(), true /* useFullEditDistance */, 0l, mDictPlacedDir.length(), true /* useFullEditDistance */,
LocaleUtils.constructLocaleFromString(dict.mOptions.mAttributes.get( LocaleUtils.constructLocaleFromString(dict.mOptions.mAttributes.get(
FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE)), FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY)),
Dictionary.TYPE_USER /* Dictionary type. Does not matter for us */, Dictionary.TYPE_USER /* Dictionary type. Does not matter for us */,
true /* isUpdatable */); true /* isUpdatable */);
if (!binaryDict.isValidDictionary()) { if (!binaryDict.isValidDictionary()) {

View File

@ -95,13 +95,13 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB
@Override @Override
protected Map<String, String> getHeaderAttributeMap() { protected Map<String, String> getHeaderAttributeMap() {
HashMap<String, String> attributeMap = new HashMap<String, String>(); HashMap<String, String> attributeMap = new HashMap<String, String>();
attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_KEY,
FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE); FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
attributeMap.put(FormatSpec.FileHeader.HAS_HISTORICAL_INFO_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.HAS_HISTORICAL_INFO_KEY,
FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE); FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, mDictName); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_KEY, mDictName);
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, mLocale.toString()); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY, mLocale.toString());
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_KEY,
String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))); String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
return attributeMap; return attributeMap;
} }

View File

@ -22,6 +22,7 @@ import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils; import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
import com.android.inputmethod.latin.makedict.DictDecoder; import com.android.inputmethod.latin.makedict.DictDecoder;
import com.android.inputmethod.latin.makedict.DictEncoder; import com.android.inputmethod.latin.makedict.DictEncoder;
import com.android.inputmethod.latin.makedict.FormatSpec;
import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions; import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
import com.android.inputmethod.latin.makedict.FusionDictionary; import com.android.inputmethod.latin.makedict.FusionDictionary;
import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray; import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
@ -44,9 +45,6 @@ import java.util.concurrent.TimeUnit;
public final class UserHistoryDictIOUtils { public final class UserHistoryDictIOUtils {
private static final String TAG = UserHistoryDictIOUtils.class.getSimpleName(); private static final String TAG = UserHistoryDictIOUtils.class.getSimpleName();
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
private static final String USES_FORGETTING_CURVE_KEY = "USES_FORGETTING_CURVE";
private static final String USES_FORGETTING_CURVE_VALUE = "1";
private static final String DATE_KEY = "date";
public interface OnAddWordListener { public interface OnAddWordListener {
/** /**
@ -75,8 +73,9 @@ public final class UserHistoryDictIOUtils {
final BigramDictionaryInterface dict, final UserHistoryDictionaryBigramList bigrams, final BigramDictionaryInterface dict, final UserHistoryDictionaryBigramList bigrams,
final FormatOptions formatOptions, final HashMap<String, String> options) { final FormatOptions formatOptions, final HashMap<String, String> options) {
final FusionDictionary fusionDict = constructFusionDictionary(dict, bigrams, options); final FusionDictionary fusionDict = constructFusionDictionary(dict, bigrams, options);
fusionDict.addOptionAttribute(USES_FORGETTING_CURVE_KEY, USES_FORGETTING_CURVE_VALUE); fusionDict.addOptionAttribute(FormatSpec.FileHeader.USES_FORGETTING_CURVE_KEY,
fusionDict.addOptionAttribute(DATE_KEY, FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
fusionDict.addOptionAttribute(FormatSpec.FileHeader.DICTIONARY_DATE_KEY,
String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))); String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
try { try {
dictEncoder.writeDictionary(fusionDict, formatOptions); dictEncoder.writeDictionary(fusionDict, formatOptions);

View File

@ -102,13 +102,13 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
getContext().getCacheDir()); getContext().getCacheDir());
FileUtils.deleteRecursively(file); FileUtils.deleteRecursively(file);
Map<String, String> attributeMap = new HashMap<String, String>(); Map<String, String> attributeMap = new HashMap<String, String>();
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, dictId); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_KEY, dictId);
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, dictId); attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY, dictId);
attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.DICTIONARY_VERSION_KEY,
String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()))); String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_KEY,
FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE); FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
attributeMap.put(FormatSpec.FileHeader.HAS_HISTORICAL_INFO_ATTRIBUTE, attributeMap.put(FormatSpec.FileHeader.HAS_HISTORICAL_INFO_KEY,
FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE); FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
if (BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(), if (BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(),
FormatSpec.VERSION4, attributeMap)) { FormatSpec.VERSION4, attributeMap)) {

View File

@ -39,13 +39,13 @@ public class BinaryDictUtils {
public static DictionaryOptions makeDictionaryOptions(final String id, final String version, public static DictionaryOptions makeDictionaryOptions(final String id, final String version,
final FormatSpec.FormatOptions formatOptions) { final FormatSpec.FormatOptions formatOptions) {
final DictionaryOptions options = new DictionaryOptions(new HashMap<String, String>()); final DictionaryOptions options = new DictionaryOptions(new HashMap<String, String>());
options.mAttributes.put(FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, "en_US"); options.mAttributes.put(FileHeader.DICTIONARY_LOCALE_KEY, "en_US");
options.mAttributes.put(FileHeader.DICTIONARY_ID_ATTRIBUTE, id); options.mAttributes.put(FileHeader.DICTIONARY_ID_KEY, id);
options.mAttributes.put(FileHeader.DICTIONARY_VERSION_ATTRIBUTE, version); options.mAttributes.put(FileHeader.DICTIONARY_VERSION_KEY, version);
if (formatOptions.mHasTimestamp) { if (formatOptions.mHasTimestamp) {
options.mAttributes.put(FileHeader.HAS_HISTORICAL_INFO_ATTRIBUTE, options.mAttributes.put(FileHeader.HAS_HISTORICAL_INFO_KEY,
FileHeader.ATTRIBUTE_VALUE_TRUE); FileHeader.ATTRIBUTE_VALUE_TRUE);
options.mAttributes.put(FileHeader.USES_FORGETTING_CURVE_ATTRIBUTE, options.mAttributes.put(FileHeader.USES_FORGETTING_CURVE_KEY,
FileHeader.ATTRIBUTE_VALUE_TRUE); FileHeader.ATTRIBUTE_VALUE_TRUE);
} }
return options; return options;

View File

@ -56,9 +56,9 @@ public class UserHistoryDictIOUtilsTests extends AndroidTestCase
private static final String TEST_DICT_FILE_EXTENSION = ".testDict"; private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
private static final HashMap<String, String> HEADER_OPTIONS = new HashMap<String, String>(); private static final HashMap<String, String> HEADER_OPTIONS = new HashMap<String, String>();
static { static {
HEADER_OPTIONS.put(FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, "en_US"); HEADER_OPTIONS.put(FileHeader.DICTIONARY_LOCALE_KEY, "en_US");
HEADER_OPTIONS.put(FileHeader.DICTIONARY_ID_ATTRIBUTE, "test"); HEADER_OPTIONS.put(FileHeader.DICTIONARY_ID_KEY, "test");
HEADER_OPTIONS.put(FileHeader.DICTIONARY_VERSION_ATTRIBUTE, "1000"); HEADER_OPTIONS.put(FileHeader.DICTIONARY_VERSION_KEY, "1000");
} }
/** /**

View File

@ -48,9 +48,9 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
// Create a thrice-compressed dictionary file. // Create a thrice-compressed dictionary file.
final DictionaryOptions testOptions = new DictionaryOptions(new HashMap<String, String>()); final DictionaryOptions testOptions = new DictionaryOptions(new HashMap<String, String>());
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE, VERSION); testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_VERSION_KEY, VERSION);
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, LOCALE); testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY, LOCALE);
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, ID); testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_ID_KEY, ID);
final FusionDictionary dict = new FusionDictionary(new PtNodeArray(), testOptions); final FusionDictionary dict = new FusionDictionary(new PtNodeArray(), testOptions);
dict.add("foo", TEST_FREQ, null, false /* isNotAWord */); dict.add("foo", TEST_FREQ, null, false /* isNotAWord */);
dict.add("fta", 1, null, false /* isNotAWord */); dict.add("fta", 1, null, false /* isNotAWord */);
@ -80,11 +80,11 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
null /* dict : an optional dictionary to add words to, or null */, null /* dict : an optional dictionary to add words to, or null */,
false /* deleteDictIfBroken */); false /* deleteDictIfBroken */);
assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get( assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get(
FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE)); FormatSpec.FileHeader.DICTIONARY_VERSION_KEY));
assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get( assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get(
FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE)); FormatSpec.FileHeader.DICTIONARY_LOCALE_KEY));
assertEquals("Wrong id attribute", ID, resultDict.mOptions.mAttributes.get( assertEquals("Wrong id attribute", ID, resultDict.mOptions.mAttributes.get(
FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE)); FormatSpec.FileHeader.DICTIONARY_ID_KEY));
assertEquals("Dictionary can't be read back correctly", assertEquals("Dictionary can't be read back correctly",
FusionDictionary.findWordInTree(resultDict.mRootNodeArray, "foo").getFrequency(), FusionDictionary.findWordInTree(resultDict.mRootNodeArray, "foo").getFrequency(),
TEST_FREQ); TEST_FREQ);