Merge "[HD03] Straighten out attribute key names in Java."
commit
4e6f72cb80
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue