Package org.threeten.bp.zone
Class TzdbZoneRulesCompiler
- java.lang.Object
-
- org.threeten.bp.zone.TzdbZoneRulesCompiler
-
final class TzdbZoneRulesCompiler extends java.lang.ObjectA builder that can read the TZDB time-zone files and buildZoneRulesinstances.Specification for implementors
This class is a mutable builder. A new instance must be created for each compile.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classTzdbZoneRulesCompiler.LeapSecondRuleClass representing a rule line in the TZDB file.(package private) classTzdbZoneRulesCompiler.TZDBMonthDayTimeClass representing a month-day-time in the TZDB file.(package private) classTzdbZoneRulesCompiler.TZDBRuleClass representing a rule line in the TZDB file.(package private) classTzdbZoneRulesCompiler.TZDBZoneClass representing a linked set of zone lines in the TZDB file.
-
Field Summary
Fields Modifier and Type Field Description private java.util.SortedMap<java.lang.String,ZoneRules>builtZonesThe built zones.private java.util.Map<java.lang.Object,java.lang.Object>deduplicateMapA map to deduplicate object instances.private static java.util.Map<java.lang.String,java.lang.Integer>DOW_LOOKUPprivate java.util.SortedMap<LocalDate,java.lang.Byte>leapSecondsSorted collection of LeapSecondRules.private java.io.FileleapSecondsFileThe leap seconds file.private static java.util.Set<java.lang.String>LINK_LOOKUPprivate java.util.Map<java.lang.String,java.lang.String>linksThe TZDB links.private static java.util.Set<java.lang.String>MAX_YEAR_LOOKUPprivate static java.util.Set<java.lang.String>MIN_YEAR_LOOKUPprivate static java.util.Map<java.lang.String,java.lang.Integer>MONTH_LOOKUPprivate static java.util.Set<java.lang.String>ONLY_YEAR_LOOKUPprivate static java.util.Set<java.lang.String>RULE_LOOKUPprivate java.util.Map<java.lang.String,java.util.List<TzdbZoneRulesCompiler.TZDBRule>>rulesThe TZDB rules.private java.util.List<java.io.File>sourceFilesThe source files.private static DateTimeFormatterTIME_PARSERTime parser.private booleanverboseThe version to produce.private java.lang.StringversionThe version to produce.private static java.util.Set<java.lang.String>ZONE_LOOKUPprivate java.util.Map<java.lang.String,java.util.List<TzdbZoneRulesCompiler.TZDBZone>>zonesThe TZDB zones.
-
Constructor Summary
Constructors Constructor Description TzdbZoneRulesCompiler(java.lang.String version, java.util.List<java.io.File> sourceFiles, java.io.File leapSecondsFile, boolean verbose)Creates an instance if you want to invoke the compiler manually.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidbuildZoneRules()Build the rules, zones and links into real zones.voidcompile()Compile the rules file.(package private) <T> Tdeduplicate(T object)Deduplicates an object instance.private static java.util.Set<java.lang.String>expand(java.lang.String whole, java.lang.String shortest)java.util.SortedMap<LocalDate,java.lang.Byte>getLeapSeconds()Gets the parsed leap seconds.private LocalDategetMostRecentLeapSecond()Gets the most recent leap second.java.util.SortedMap<java.lang.String,ZoneRules>getZones()Gets the parsed zone rules.static voidmain(java.lang.String[] args)Reads a set of TZDB files and builds a single combined data file.private static voidoutputFile(java.io.File dstFile, java.lang.String version, java.util.SortedMap<java.lang.String,ZoneRules> builtZones, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the file.private static voidoutputFile(java.io.File dstFile, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the file.private static voidoutputFilesDat(java.io.File dstDir, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the DAT files.private static voidoutputHelp()Output usage text for the command line.private static voidoutputTzdbDat(java.io.OutputStream jos, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules)Outputs the timezone DAT file.private static voidoutputTzdbEntry(java.util.jar.JarOutputStream jos, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules)Outputs the timezone entry in the JAR file.private DayOfWeekparseDayOfWeek(java.lang.String str)private voidparseFile(java.io.File file)Parses a source file.private voidparseFiles()Parses the source files.private TzdbZoneRulesCompiler.LeapSecondRuleparseLeapSecondRule(java.lang.String line)private voidparseLeapSecondsFile()Parses the leap seconds file.private MonthparseMonth(java.lang.String str)private voidparseMonthDayTime(java.util.StringTokenizer st, TzdbZoneRulesCompiler.TZDBMonthDayTime mdt)Parses a Rule line.private ZoneOffsetparseOffset(java.lang.String str)private java.lang.StringparseOptional(java.lang.String str)private intparsePeriod(java.lang.String str)private voidparseRuleLine(java.util.StringTokenizer st)Parses a Rule line.private intparseSecs(java.lang.String str)private ZoneOffsetTransitionRule.TimeDefinitionparseTimeDefinition(char c)private intparseYear(java.lang.String str, int defaultYear)private booleanparseZoneLine(java.util.StringTokenizer st, java.util.List<TzdbZoneRulesCompiler.TZDBZone> zoneList)Parses a Zone line.private voidprintVerbose(java.lang.String message)Prints a verbose message.private static voidprocess(java.util.List<java.io.File> srcDirs, java.util.List<java.lang.String> srcFileNames, java.io.File dstDir, boolean unpacked, boolean verbose)Process to create the jar files.private static voidput(java.util.Set<java.lang.String> strs, int value, java.util.Map<java.lang.String,java.lang.Integer> map)(package private) voidsetDeduplicateMap(java.util.Map<java.lang.Object,java.lang.Object> deduplicateMap)Sets the deduplication map.
-
-
-
Field Detail
-
TIME_PARSER
private static final DateTimeFormatter TIME_PARSER
Time parser.
-
RULE_LOOKUP
private static final java.util.Set<java.lang.String> RULE_LOOKUP
-
ZONE_LOOKUP
private static final java.util.Set<java.lang.String> ZONE_LOOKUP
-
LINK_LOOKUP
private static final java.util.Set<java.lang.String> LINK_LOOKUP
-
MIN_YEAR_LOOKUP
private static final java.util.Set<java.lang.String> MIN_YEAR_LOOKUP
-
MAX_YEAR_LOOKUP
private static final java.util.Set<java.lang.String> MAX_YEAR_LOOKUP
-
ONLY_YEAR_LOOKUP
private static final java.util.Set<java.lang.String> ONLY_YEAR_LOOKUP
-
MONTH_LOOKUP
private static final java.util.Map<java.lang.String,java.lang.Integer> MONTH_LOOKUP
-
DOW_LOOKUP
private static final java.util.Map<java.lang.String,java.lang.Integer> DOW_LOOKUP
-
rules
private final java.util.Map<java.lang.String,java.util.List<TzdbZoneRulesCompiler.TZDBRule>> rules
The TZDB rules.
-
zones
private final java.util.Map<java.lang.String,java.util.List<TzdbZoneRulesCompiler.TZDBZone>> zones
The TZDB zones.
-
links
private final java.util.Map<java.lang.String,java.lang.String> links
The TZDB links.
-
builtZones
private final java.util.SortedMap<java.lang.String,ZoneRules> builtZones
The built zones.
-
deduplicateMap
private java.util.Map<java.lang.Object,java.lang.Object> deduplicateMap
A map to deduplicate object instances.
-
leapSeconds
private final java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds
Sorted collection of LeapSecondRules.
-
version
private final java.lang.String version
The version to produce.
-
sourceFiles
private final java.util.List<java.io.File> sourceFiles
The source files.
-
leapSecondsFile
private final java.io.File leapSecondsFile
The leap seconds file.
-
verbose
private final boolean verbose
The version to produce.
-
-
Constructor Detail
-
TzdbZoneRulesCompiler
public TzdbZoneRulesCompiler(java.lang.String version, java.util.List<java.io.File> sourceFiles, java.io.File leapSecondsFile, boolean verbose)Creates an instance if you want to invoke the compiler manually.- Parameters:
version- the version, such as 2009a, not nullsourceFiles- the list of source files, not empty, not nullverbose- whether to output verbose messages
-
-
Method Detail
-
put
private static void put(java.util.Set<java.lang.String> strs, int value, java.util.Map<java.lang.String,java.lang.Integer> map)
-
expand
private static java.util.Set<java.lang.String> expand(java.lang.String whole, java.lang.String shortest)
-
main
public static void main(java.lang.String[] args)
Reads a set of TZDB files and builds a single combined data file.- Parameters:
args- the arguments
-
outputHelp
private static void outputHelp()
Output usage text for the command line.
-
process
private static void process(java.util.List<java.io.File> srcDirs, java.util.List<java.lang.String> srcFileNames, java.io.File dstDir, boolean unpacked, boolean verbose)Process to create the jar files.
-
outputFilesDat
private static void outputFilesDat(java.io.File dstDir, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the DAT files.
-
outputFile
private static void outputFile(java.io.File dstFile, java.lang.String version, java.util.SortedMap<java.lang.String,ZoneRules> builtZones, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the file.
-
outputFile
private static void outputFile(java.io.File dstFile, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules, java.util.SortedMap<LocalDate,java.lang.Byte> leapSeconds)Outputs the file.
-
outputTzdbEntry
private static void outputTzdbEntry(java.util.jar.JarOutputStream jos, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules)Outputs the timezone entry in the JAR file.
-
outputTzdbDat
private static void outputTzdbDat(java.io.OutputStream jos, java.util.Map<java.lang.String,java.util.SortedMap<java.lang.String,ZoneRules>> allBuiltZones, java.util.Set<java.lang.String> allRegionIds, java.util.Set<ZoneRules> allRules) throws java.io.IOExceptionOutputs the timezone DAT file.- Throws:
java.io.IOException
-
compile
public void compile() throws java.lang.ExceptionCompile the rules file.Use
getZones()andgetLeapSeconds()to retrieve the parsed data.- Throws:
java.lang.Exception- if an error occurs
-
getZones
public java.util.SortedMap<java.lang.String,ZoneRules> getZones()
Gets the parsed zone rules.- Returns:
- the parsed zone rules, not null
-
getLeapSeconds
public java.util.SortedMap<LocalDate,java.lang.Byte> getLeapSeconds()
Gets the parsed leap seconds.- Returns:
- the parsed and sorted leap seconds, not null
-
getMostRecentLeapSecond
private LocalDate getMostRecentLeapSecond()
Gets the most recent leap second.- Returns:
- the most recent leap second, null if none
-
setDeduplicateMap
void setDeduplicateMap(java.util.Map<java.lang.Object,java.lang.Object> deduplicateMap)
Sets the deduplication map.- Parameters:
deduplicateMap- the map to deduplicate items
-
parseFiles
private void parseFiles() throws java.lang.ExceptionParses the source files.- Throws:
java.lang.Exception- if an error occurs
-
parseLeapSecondsFile
private void parseLeapSecondsFile() throws java.lang.ExceptionParses the leap seconds file.- Throws:
java.lang.Exception- if an error occurs
-
parseLeapSecondRule
private TzdbZoneRulesCompiler.LeapSecondRule parseLeapSecondRule(java.lang.String line)
-
parseFile
private void parseFile(java.io.File file) throws java.lang.ExceptionParses a source file.- Parameters:
file- the file being read, not null- Throws:
java.lang.Exception- if an error occurs
-
parseRuleLine
private void parseRuleLine(java.util.StringTokenizer st)
Parses a Rule line.- Parameters:
st- the tokenizer, not null
-
parseZoneLine
private boolean parseZoneLine(java.util.StringTokenizer st, java.util.List<TzdbZoneRulesCompiler.TZDBZone> zoneList)Parses a Zone line.- Parameters:
st- the tokenizer, not null- Returns:
- true if the zone is complete
-
parseMonthDayTime
private void parseMonthDayTime(java.util.StringTokenizer st, TzdbZoneRulesCompiler.TZDBMonthDayTime mdt)Parses a Rule line.- Parameters:
st- the tokenizer, not nullmdt- the object to parse into, not null
-
parseYear
private int parseYear(java.lang.String str, int defaultYear)
-
parseMonth
private Month parseMonth(java.lang.String str)
-
parseDayOfWeek
private DayOfWeek parseDayOfWeek(java.lang.String str)
-
parseOptional
private java.lang.String parseOptional(java.lang.String str)
-
parseSecs
private int parseSecs(java.lang.String str)
-
parseOffset
private ZoneOffset parseOffset(java.lang.String str)
-
parsePeriod
private int parsePeriod(java.lang.String str)
-
parseTimeDefinition
private ZoneOffsetTransitionRule.TimeDefinition parseTimeDefinition(char c)
-
buildZoneRules
private void buildZoneRules() throws java.lang.ExceptionBuild the rules, zones and links into real zones.- Throws:
java.lang.Exception- if an error occurs
-
deduplicate
<T> T deduplicate(T object)
Deduplicates an object instance.- Type Parameters:
T- the generic type- Parameters:
object- the object to deduplicate- Returns:
- the deduplicated object
-
printVerbose
private void printVerbose(java.lang.String message)
Prints a verbose message.- Parameters:
message- the message, not null
-
-