Class TZDBZoneRulesCompiler


  • public final class TZDBZoneRulesCompiler
    extends java.lang.Object
    A builder that can read the TZDB TimeZone files and build ZoneRules instances.

    TZDBZoneRulesCompiler is thread-safe.

    • Constructor Summary

      Constructors 
      Constructor Description
      TZDBZoneRulesCompiler​(java.lang.String version, java.util.List<java.io.File> sourceFiles, boolean verbose)
      Constructor used if you want to invoke the compiler manually.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void buildZoneRules()
      Build the rules, zones and links into real zones.
      java.util.SortedMap<java.lang.String,​ZoneRules> compile()
      Compile the rules file.
      (package private) <T> T deduplicate​(T object)
      Deduplicates an object instance.
      static void main​(java.lang.String[] args)
      Reads a set of TZDB files and builds a single combined data file.
      private boolean matches​(java.lang.String str, java.lang.String search)  
      private static void outputFile​(java.io.File dstFile, java.lang.String version, java.util.SortedMap<java.lang.String,​ZoneRules> builtZones)
      Outputs the file.
      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)
      Outputs the file.
      private static void outputHelp()
      Output usage text for the command line.
      private DayOfWeek parseDayOfWeek​(java.lang.String str)  
      private void parseFile​(java.io.File file)
      Parses a source file.
      private void parseFiles()
      Parses the source files.
      private MonthOfYear parseMonth​(java.lang.String str)  
      private void parseMonthDayTime​(java.util.StringTokenizer st, TZDBZoneRulesCompiler.TZDBMonthDayTime mdt)
      Parses a Rule line.
      private ZoneOffset parseOffset​(java.lang.String str)  
      private java.lang.String parseOptional​(java.lang.String str)  
      private Period parsePeriod​(java.lang.String str)  
      private void parseRuleLine​(java.util.StringTokenizer st)
      Parses a Rule line.
      private int parseSecs​(java.lang.String str)  
      private ZoneRulesBuilder.TimeDefinition parseTimeDefinition​(char c)  
      private int parseYear​(java.lang.String str, int defaultYear)  
      private boolean parseZoneLine​(java.util.StringTokenizer st, java.util.List<TZDBZoneRulesCompiler.TZDBZone> zoneList)
      Parses a Zone line.
      private void printVerbose​(java.lang.String message)
      Prints a verbose message.
      private static void process​(java.util.List<java.io.File> srcDirs, java.util.List<java.lang.String> srcFileNames, java.io.File dstDir, boolean verbose)
      Process to create the jar files.
      (package private) void setDeduplicateMap​(java.util.Map<java.lang.Object,​java.lang.Object> deduplicateMap)
      Sets the deduplication map.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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.
      • version

        private final java.lang.String version
        The version to produce.
      • sourceFiles

        private final java.util.List<java.io.File> sourceFiles
        The source files.
      • 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,
                                     boolean verbose)
        Constructor used if you want to invoke the compiler manually.
        Parameters:
        version - the version, such as 2009a, not null
        sourceFiles - the list of source files, not empty, not null
        verbose - whether to output verbose messages
    • Method Detail

      • 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 verbose)
        Process to create the jar files.
      • outputFile

        private static void outputFile​(java.io.File dstFile,
                                       java.lang.String version,
                                       java.util.SortedMap<java.lang.String,​ZoneRules> builtZones)
        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)
        Outputs the file.
      • compile

        public java.util.SortedMap<java.lang.String,​ZoneRules> compile()
                                                                      throws java.lang.Exception
        Compile the rules file.
        Returns:
        the map of region ID to rules, not null
        Throws:
        java.lang.Exception - if an error occurs
      • 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.Exception
        Parses the source files.
        Throws:
        java.lang.Exception - if an error occurs
      • parseFile

        private void parseFile​(java.io.File file)
                        throws java.lang.Exception
        Parses 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 null
        mdt - the object to parse into, not null
      • parseYear

        private int parseYear​(java.lang.String str,
                              int defaultYear)
      • parseMonth

        private MonthOfYear parseMonth​(java.lang.String str)
      • parseDayOfWeek

        private DayOfWeek parseDayOfWeek​(java.lang.String str)
      • matches

        private boolean matches​(java.lang.String str,
                                java.lang.String search)
      • 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 Period parsePeriod​(java.lang.String str)
      • buildZoneRules

        private void buildZoneRules()
                             throws java.lang.Exception
        Build 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