17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ****************************************************************************** 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2007-2009, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ****************************************************************************** 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.impl.duration.impl; 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.ArrayList; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.List; 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * DataRecord contains the data used by PeriodFormatterData. Fields are 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * package-private for ease of access. This is a struct, it knows how to read 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * and write itself to/from simple XML, that's all. 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class DataRecord { 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte pl; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[][] pluralNames; 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] genders; // EGender 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] singularNames; 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] halfNames; 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] numberNames; 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] mediumNames; 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] shortNames; 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] measures; 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] rqdSuffixes; 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] optSuffixes; 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] halves; 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] halfPlacements; // EHalfPlacement 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte[] halfSupport; // EHalfSupport 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String fifteenMinutes; 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String fiveMinutes; 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean requiresDigitSeparator; 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String digitPrefix; 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String countSep; 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String shortUnitSep; 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] unitSep; 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean[] unitSepRequiresDP; 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean[] requiresSkipMarker; 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte numberSystem; // ENumberSystem 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char zero; 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char decimalSep; 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean omitSingularCount; 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean omitDualCount; 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte zeroHandling; // EZeroHandling 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte decimalHandling; // EDecimalHandling 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte fractionHandling; // EFractionHandling 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String skippedUnitMarker; 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean allowZero; 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean weeksAloneOnly; 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert byte useMilliseconds; // EMilliSupport 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ScopeData[] scopeData; 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static DataRecord read(String ln, RecordReader in) { 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.open("DataRecord")) { 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert DataRecord record = new DataRecord(); 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.pl = in.namedIndex("pl", EPluralization.names); 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.pluralNames = in.stringTable("pluralName"); 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.genders = in.namedIndexArray("gender", EGender.names); 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.singularNames = in.stringArray("singularName"); 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.halfNames = in.stringArray("halfName"); 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.numberNames = in.stringArray("numberName"); 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.mediumNames = in.stringArray("mediumName"); 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.shortNames = in.stringArray("shortName"); 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.measures = in.stringArray("measure"); 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.rqdSuffixes = in.stringArray("rqdSuffix"); 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.optSuffixes = in.stringArray("optSuffix"); 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.halves = in.stringArray("halves"); 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.halfPlacements = in.namedIndexArray("halfPlacement", 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EHalfPlacement.names); 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.halfSupport = in.namedIndexArray("halfSupport", 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EHalfSupport.names); 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.fifteenMinutes = in.string("fifteenMinutes"); 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.fiveMinutes = in.string("fiveMinutes"); 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.requiresDigitSeparator = in.bool("requiresDigitSeparator"); 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.digitPrefix = in.string("digitPrefix"); 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.countSep = in.string("countSep"); 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.shortUnitSep = in.string("shortUnitSep"); 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.unitSep = in.stringArray("unitSep"); 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.unitSepRequiresDP = in.boolArray("unitSepRequiresDP"); 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.requiresSkipMarker = in.boolArray("requiresSkipMarker"); 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.numberSystem = in.namedIndex("numberSystem", 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ENumberSystem.names); 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.zero = in.character("zero"); 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.decimalSep = in.character("decimalSep"); 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.omitSingularCount = in.bool("omitSingularCount"); 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.omitDualCount = in.bool("omitDualCount"); 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.zeroHandling = in.namedIndex("zeroHandling", 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EZeroHandling.names); 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.decimalHandling = in.namedIndex("decimalHandling", 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EDecimalHandling.names); 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.fractionHandling = in.namedIndex("fractionHandling", 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EFractionHandling.names); 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.skippedUnitMarker = in.string("skippedUnitMarker"); 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.allowZero = in.bool("allowZero"); 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.weeksAloneOnly = in.bool("weeksAloneOnly"); 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.useMilliseconds = in.namedIndex("useMilliseconds", 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EMilliSupport.names); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.open("ScopeDataList")) { 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert List<ScopeData> list = new ArrayList<ScopeData>(); // of ScopeData 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ScopeData data; 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert while (null != (data = ScopeData.read(in))) { 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert list.add(data); 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.close()) { 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert record.scopeData = list.toArray(new ScopeData[list.size()]); 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.close()) { 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return record; 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert throw new InternalError("did not find DataRecord while reading " 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert + ln); 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert throw new InternalError("null data read while reading " + ln); 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Thread.dumpStack(); 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // return null; 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void write(RecordWriter out) { 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.open("DataRecord"); 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("pl", EPluralization.names, pl); 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringTable("pluralName", pluralNames); 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndexArray("gender", EGender.names, genders); 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("singularName", singularNames); 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("halfName", halfNames); 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("numberName", numberNames); 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("mediumName", mediumNames); 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("shortName", shortNames); 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("measure", measures); 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("rqdSuffix", rqdSuffixes); 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("optSuffix", optSuffixes); 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("halves", halves); 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndexArray("halfPlacement", EHalfPlacement.names, 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert halfPlacements); 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndexArray("halfSupport", EHalfSupport.names, halfSupport); 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("fifteenMinutes", fifteenMinutes); 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("fiveMinutes", fiveMinutes); 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("requiresDigitSeparator", requiresDigitSeparator); 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("digitPrefix", digitPrefix); 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("countSep", countSep); 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("shortUnitSep", shortUnitSep); 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.stringArray("unitSep", unitSep); 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.boolArray("unitSepRequiresDP", unitSepRequiresDP); 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.boolArray("requiresSkipMarker", requiresSkipMarker); 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("numberSystem", ENumberSystem.names, numberSystem); 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.character("zero", zero); 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.character("decimalSep", decimalSep); 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("omitSingularCount", omitSingularCount); 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("omitDualCount", omitDualCount); 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("zeroHandling", EZeroHandling.names, zeroHandling); 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("decimalHandling", EDecimalHandling.names, 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert decimalHandling); 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("fractionHandling", EFractionHandling.names, 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fractionHandling); 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("skippedUnitMarker", skippedUnitMarker); 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("allowZero", allowZero); 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("weeksAloneOnly", weeksAloneOnly); 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.namedIndex("useMilliseconds", EMilliSupport.names, useMilliseconds); 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (scopeData != null) { 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.open("ScopeDataList"); 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < scopeData.length; ++i) { 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert scopeData[i].write(out); 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.close(); 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.close(); 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static class ScopeData { 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String prefix; 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean requiresDigitPrefix; 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String suffix; 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void write(RecordWriter out) { 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.open("ScopeData"); 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("prefix", prefix); 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.bool("requiresDigitPrefix", requiresDigitPrefix); 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.string("suffix", suffix); 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert out.close(); 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static ScopeData read(RecordReader in) { 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.open("ScopeData")) { 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ScopeData scope = new ScopeData(); 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert scope.prefix = in.string("prefix"); 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert scope.requiresDigitPrefix = in.bool("requiresDigitPrefix"); 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert scope.suffix = in.string("suffix"); 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (in.close()) { 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return scope; 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return null; 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface ETimeLimit { 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NOLIMIT = 0; 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte LT = 1; 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte MT = 2; 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "NOLIMIT", "LT", "MT" }; 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface ETimeDirection { 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NODIRECTION = 0; 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte PAST = 1; 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FUTURE = 2; 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "NODIRECTION", "PAST", "FUTURE" }; 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EUnitVariant { 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte PLURALIZED = 0; 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte MEDIUM = 1; 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte SHORT = 2; 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "PLURALIZED", "MEDIUM", "SHORT" }; 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface ECountVariant { 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte INTEGER = 0; 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte INTEGER_CUSTOM = 1; 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte HALF_FRACTION = 2; 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DECIMAL1 = 3; 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DECIMAL2 = 4; 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DECIMAL3 = 5; 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "INTEGER", "INTEGER_CUSTOM", 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "HALF_FRACTION", "DECIMAL1", "DECIMAL2", "DECIMAL3" }; 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EPluralization { 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NONE = 0; 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte PLURAL = 1; 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DUAL = 2; 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte PAUCAL = 3; 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte HEBREW = 4; 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte ARABIC = 5; 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "NONE", "PLURAL", "DUAL", 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "PAUCAL", "HEBREW", "ARABIC" }; 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EHalfPlacement { 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte PREFIX = 0; 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte AFTER_FIRST = 1; 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte LAST = 2; 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "PREFIX", "AFTER_FIRST", "LAST" }; 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface ENumberSystem { 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DEFAULT = 0; 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte CHINESE_TRADITIONAL = 1; 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte CHINESE_SIMPLIFIED = 2; 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte KOREAN = 3; 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "DEFAULT", 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "CHINESE_TRADITIONAL", "CHINESE_SIMPLIFIED", "KOREAN" }; 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EZeroHandling { 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte ZPLURAL = 0; 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte ZSINGULAR = 1; 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "ZPLURAL", "ZSINGULAR" }; 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EDecimalHandling { 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DPLURAL = 0; 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DSINGULAR = 1; 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DSINGULAR_SUBONE = 2; 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte DPAUCAL = 3; 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "DPLURAL", "DSINGULAR", 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "DSINGULAR_SUBONE", "DPAUCAL" }; 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EFractionHandling { 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FPLURAL = 0; 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FSINGULAR_PLURAL = 1; 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FSINGULAR_PLURAL_ANDAHALF = 2; 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FPAUCAL = 3; 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "FPLURAL", "FSINGULAR_PLURAL", 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "FSINGULAR_PLURAL_ANDAHALF", "FPAUCAL" }; 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EHalfSupport { 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte YES = 0; 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NO = 1; 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte ONE_PLUS = 2; 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "YES", "NO", "ONE_PLUS" }; 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EMilliSupport { 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte YES = 0; 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NO = 1; 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte WITH_SECONDS = 2; 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "YES", "NO", "WITH_SECONDS" }; 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface ESeparatorVariant { 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte NONE = 0; 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte SHORT = 1; 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte FULL = 2; 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "NONE", "SHORT", "FULL" }; 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static interface EGender { 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte M = 0; 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte F = 1; 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final byte N = 2; 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final String[] names = { "M", "F", "N" }; 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 312