Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.util;
 
 
 
 import static com.facebook.presto.spi.type.TimeZoneKey.isUtcZoneId;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.Sets.filter;
 import static com.google.common.collect.Sets.intersection;
 import static java.lang.Math.abs;
 
 public final class GenerateTimeZoneIndex
 {
     private GenerateTimeZoneIndex()
     {
     }
 
     public static void main(String[] args)
             throws InterruptedException
     {
         //
         // Header
         //
         ..println("#");
         ..println("# DO NOT REMOVE OR MODIFY EXISTING ENTRIES");
         ..println("#");
         ..println("# This file contain the fixed numeric id of every supported time zone id.");
         ..println("# Every zone id in this file must be supported by java.util.TimeZone and the");
         ..println("# Joda time library.  This is because Presto uses both java.util.TimeZone and");
         ..println("# the Joda time## for during execution.");
         ..println("#");
         ..println("# suppress inspection \"UnusedProperty\" for whole file");
 
         //
         // We assume 0 is UTC and do not generate it
         //
 
         //
         // Negative offset
         //
         short nextZoneKey = 1;
         for (int offset = 14 * 60; offset > 0; offset--) {
             String zoneId = String.format("-%02d:%02d"offset / 60, abs(offset % 60));
 
             short zoneKey = nextZoneKey++;
 
             ..println(zoneKey + " " + zoneId);
         }
 
         //
         // Positive offset
         //
         for (int offset = 1; offset <= 14 * 60; offset++) {
             String zoneId = String.format("+%02d:%02d"offset / 60, abs(offset % 60));
 
             short zoneKey = nextZoneKey++;
 
             ..println(zoneKey + " " + zoneId);
         }
 
         //
         // IANA regional zones: region/city
         //
 
         TreeSet<StringjodaZones = new TreeSet<>(DateTimeZone.getAvailableIDs());
         TreeSet<StringjdkZones = new TreeSet<>(Arrays.asList(TimeZone.getAvailableIDs()));
 
         TreeSet<StringzoneIds = new TreeSet<>(filter(intersection(jodaZonesjdkZones), not(ignoredZone())));
 
         for (String zoneId : zoneIds) {
             if (zoneId.indexOf('/') < 0) {
                 continue;
             }
             short zoneKey = nextZoneKey++;
 
             ..println(zoneKey + " " + zoneId);
         }
 
         //
         // Other zones
         //
        for (String zoneId : zoneIds) {
            if (zoneId.indexOf('/') >= 0) {
                continue;
            }
            short zoneKey = nextZoneKey++;
            ..println(zoneKey + " " + zoneId);
        }
        ..println();
        ..println("# Zones not supported in Java");
        for (String invalidZone : filter(Sets.difference(jodaZonesjdkZones), not(ignoredZone()))) {
            ..println("# " + invalidZone);
        }
        ..println();
        ..println("# Zones not supported in Joda");
        for (String invalidZone : filter(Sets.difference(jdkZonesjodaZones), not(ignoredZone()))) {
            ..println("# " + invalidZone);
        }
        Thread.sleep(1000);
    }
    public static Predicate<StringignoredZone()
    {
        return zoneId -> isUtcZoneId(zoneId) || zoneId.startsWith("Etc/");
    }
New to GrepCode? Check out our FAQ X