/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.apache.tajo.util.datetime;

import java.util.HashMap;
import java.util.Map;

public class DateTimeConstants {
  public enum DateStyle {
    XSO_DATES,
    ISO_DATES,
    SQL_DATES
  };

  public static final int[][]	DAY_OF_MONTH = {
    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0},
    {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}
  };

  /** assumes leap year every four years */
  public static final double DAYS_PER_YEAR = 365.25;
  public static final int MONTHS_PER_YEAR = 12;


  // DAYS_PER_MONTH is very imprecise.  The more accurate value is
  // 365.2425/12 = 30.436875, or '30 days_full 10:29:06'.  Right now we only
  // return an integral number of days_full, but someday perhaps we should
  // also return a 'time' value to be used as well.	ISO 8601 suggests
  // 0 days_full.

  /** assumes exactly 30 days_full per month */
  public static final int DAYS_PER_MONTH	= 30;
  /** assume no daylight savings time changes */
  public static final int HOURS_PER_DAY = 24;

  // This doesn't adjust for uneven daylight savings time intervals or leap
  // seconds, and it crudely estimates leap years.  A more accurate value
  // for days_full per years is 365.2422.

  /** avoid floating-point computation */
  public static final int SECS_PER_YEAR	= 36525 * 864;
  public static final int SECS_PER_DAY = 86_400;
  public static final int SECS_PER_HOUR	= 3600;
  public static final int SECS_PER_MINUTE = 60;
  public static final int MINS_PER_HOUR	= 60;

  public static final long MSECS_PER_DAY = 86_400_000L;
  public static final long MSECS_PER_SEC = 1000L;

  public static final long USECS_PER_DAY = 86_400_000_000L;
  public static final long USECS_PER_HOUR	= 3_600_000_000L;
  public static final long USECS_PER_MINUTE = 60_000_000L;
  public static final long USECS_PER_SEC = 1_000_000L;
  public static final long USECS_PER_MSEC = 1000L;

  public static final int JULIAN_MINYEAR = -4713;
  public static final int JULIAN_MINMONTH = 11;
  public static final int JULIAN_MINDAY = 24;
  public static final int JULIAN_MAXYEAR = 5874898;

  /** == DateTimeUtil.toJulianDate(JULIAN_MAXYEAR, 1, 1) */
  public static final int JULIAN_MAX = 2147483494;
  
  /** the first ISO day of week */
  public static final int MONDAY = 1;
  
  /** the second ISO day of week */
  public static final int TUESDAY = 2;

  /** the third ISO day of week */
  public static final int WEDNESDAY = 3;

  /** the fourth ISO day of week */
  public static final int THURSDAY = 4;

  /** the fifth ISO day of week */
  public static final int FRIDAY = 5;

  /** the sixth ISO day of week */
  public static final int SATURDAY = 6;

  /** the seventh ISO day of week */
  public static final int SUNDAY = 7;

  // Julian-date equivalents of Day 0 in Unix and Postgres reckoning
  /** == DateTimeUtil.toJulianDate(1970, 1, 1) */
  public static final int UNIX_EPOCH_JDATE =     2_440_588;
  /** == DateTimeUtil.toJulianDate(2000, 1, 1) */
  public static final int POSTGRES_EPOCH_JDATE = 2_451_545;
  /** == (POSTGRES_EPOCH_JDATE * SECS_PER_DAY) - (UNIX_EPOCH_JDATE * SECS_PER_DAY); */
  public static final long SECS_DIFFERENCE_BETWEEN_JULIAN_AND_UNIXTIME = 946_684_800;

  public static final int MAX_TZDISP_HOUR	=	15;	/* maximum allowed hour part */
  public static final int TZDISP_LIMIT =	((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR);

  public static final int INTERVAL_FULL_RANGE = 0x7FFF;

  public static final String DAGO =			"ago";
  public static final String DCURRENT =		"current";
  public static final String EPOCH =			"epoch";
  public static final String INVALID =			"invalid";
  public static final String EARLY =			"-infinity";
  public static final String LATE	=		"infinity";
  public static final String NOW =				"now";
  public static final String TODAY	=		"today";
  public static final String TOMORROW	=	"tomorrow";
  public static final String YESTERDAY =		"yesterday";
  public static final String ZULU	 =		"zulu";

  public static final String DMICROSEC	=	"usecond";
  public static final String DMILLISEC =		"msecond";
  public static final String DSECOND	=		"second";
  public static final String DMINUTE =			"minute";
  public static final String DHOUR	=		"hour";
  public static final String DDAY	 =		"day";
  public static final String DWEEK	=		"week";
  public static final String DMONTH	=		"month";
  public static final String DQUARTER	=	"quarter";
  public static final String DYEAR		=	"year";
  public static final String DDECADE	=		"decade";
  public static final String DCENTURY	=	"century";
  public static final String DMILLENNIUM	=	"millennium";
  public static final String DA_D		=	"ad";
  public static final String DB_C		=	"bc";
  public static final String DTIMEZONE	=	"timezone";

  public static final int DATEORDER_YMD = 0;
  public static final int DATEORDER_DMY = 1;
  public static final int DATEORDER_MDY = 2;

  public static enum TokenField {
    DECIMAL(0),

    AM(0), PM(1), HR24(2),

    AD(0), BC(1),

    DTK_NUMBER(0),
    DTK_STRING(1),

    DTK_DATE(2),
    DTK_TIME(3),
    DTK_TZ(4),
    DTK_AGO(5),

    DTK_SPECIAL(6),
    DTK_INVALID(7),
    DTK_CURRENT(8),
    DTK_EARLY(9),
    DTK_LATE(10),
    DTK_EPOCH(11),
    DTK_NOW(12),
    DTK_YESTERDAY(13),
    DTK_TODAY(14),
    DTK_TOMORROW(15),
    DTK_ZULU(16),

    DTK_DELTA(17),
    DTK_SECOND(18),
    DTK_MINUTE(19),
    DTK_HOUR(20),
    DTK_DAY(21),
    DTK_WEEK(22),
    DTK_MONTH(23),
    DTK_QUARTER(24),
    DTK_YEAR(25),
    DTK_DECADE(26),
    DTK_CENTURY(27),
    DTK_MILLENNIUM(28),
    DTK_MILLISEC(29),
    DTK_MICROSEC(30),
    DTK_JULIAN(31),

    DTK_DOW(32),
    DTK_DOY(33),
    DTK_TZ_HOUR(34),
    DTK_TZ_MINUTE(35),
    DTK_ISOYEAR(36),
    DTK_ISODOW(37),

    RESERV(0),
    MONTH(1),
    YEAR(2),
    DAY(3),
    JULIAN(4),
    TZ(5),
    DTZ(6),
    DTZMOD(7),
    IGNORE_DTF(8),
    AMPM(9),
    HOUR(10),
    MINUTE(11),
    SECOND(12),
    MILLISECOND(13),
    MICROSECOND(14),
    DOY(15),
    DOW(16),
    UNITS(17),
    ADBC(18),
    /* these are only for relative dates */
    AGO(19),
    ABS_BEFORE(20),
    ABS_AFTER(21),
    /* generic fields to help with parsing */
    ISODATE(22),
    ISOTIME(23),
    /* these are only for parsing intervals */
    WEEK(24),
    DECADE(25),
    CENTURY(26),
    MILLENNIUM(27),
    /* reserved for unrecognized string values */
    UNKNOWN_FIELD(28);

    int value;
    TokenField(int value) {
      this.value = value;
    }

    public int getValue() {
      return value;
    }
  }

  static Object datetktbl[][] = {
    /*	text, token, lexval */
    {"-infinity", TokenField.RESERV, TokenField.DTK_EARLY}, /* "-infinity" reserved for "early time" */
    {"acsst", TokenField.DTZ, 42},	/* Cent. Australia */
    {"acst", TokenField.DTZ, -16},		/* Atlantic/Porto Acre */
    {"act", TokenField.TZ, -20},		/* Atlantic/Porto Acre */
    {DA_D, TokenField.ADBC, TokenField.AD},			/* "ad" for years >= 0 */
    {"adt", TokenField.DTZ, -12},		/* Atlantic Daylight Time */
    {"aesst", TokenField.DTZ, 44},	/* E. Australia */
    {"aest", TokenField.TZ, 40},		/* Australia Eastern Std Time */
    {"aft", TokenField.TZ, 18},		/* Kabul */
    {"ahst", TokenField.TZ, -40},		/* Alaska-Hawaii Std Time */
    {"akdt", TokenField.DTZ, -32},		/* Alaska Daylight Time */
    {"akst", TokenField.DTZ, -36},		/* Alaska Standard Time */
    {"allballs", TokenField.RESERV, TokenField.DTK_ZULU},		/* 00:00:00 */
    {"almst", TokenField.TZ, 28},		/* Almaty Savings Time */
    {"almt", TokenField.TZ, 24},		/* Almaty Time */
    {"am", TokenField.AMPM, TokenField.AM},
    {"amst", TokenField.DTZ, 20},		/* Armenia Summer Time (Yerevan) */
    {"amt", TokenField.TZ, 16},		/* Armenia Time (Yerevan) */
    {"anast", TokenField.DTZ, 52},	/* Anadyr Summer Time (Russia) */
    {"anat", TokenField.TZ, 48},		/* Anadyr Time (Russia) */
    {"apr", TokenField.MONTH, 4},
    {"april", TokenField.MONTH, 4},
    {"art", TokenField.TZ, -12},		/* Argentina Time */
    {"ast", TokenField.TZ, -16},		/* Atlantic Std Time (Canada) */
    {"at", TokenField.IGNORE_DTF, 0},		/* "at" (throwaway) */
    {"aug", TokenField.MONTH, 8},
    {"august", TokenField.MONTH, 8},
    {"awsst", TokenField.DTZ, 36},	/* W. Australia */
    {"awst", TokenField.TZ, 32},		/* W. Australia */
    {"awt", TokenField.DTZ, -12},
    {"azost", TokenField.DTZ, 0},		/* Azores Summer Time */
    {"azot", TokenField.TZ, -4},		/* Azores Time */
    {"azst", TokenField.DTZ, 20},		/* Azerbaijan Summer Time */
    {"azt", TokenField.TZ, 16},		/* Azerbaijan Time */
    {DB_C, TokenField.ADBC, TokenField.BC},			/* "bc" for years < 0 */
    {"bdst", TokenField.TZ, 8},		/* British Double Summer Time */
    {"bdt", TokenField.TZ, 24},		/* Dacca */
    {"bnt", TokenField.TZ, 32},		/* Brunei Darussalam Time */
    {"bort", TokenField.TZ, 32},		/* Borneo Time (Indonesia) */
    {"bot", TokenField.TZ, -16},		/* Bolivia Time */
    {"bra", TokenField.TZ, -12},		/* Brazil Time */
    {"bst", TokenField.DTZ, 4},		/* British Summer Time */
    {"bt", TokenField.TZ, 12},		/* Baghdad Time */
    {"btt", TokenField.TZ, 24},		/* Bhutan Time */
    {"cadt", TokenField.DTZ, 42},		/* Central Australian DST */
    {"cast", TokenField.TZ, 38},		/* Central Australian ST */
    {"cat", TokenField.TZ, -40},		/* Central Alaska Time */
    {"cct", TokenField.TZ, 32},		/* China Coast Time */
    {"cdt", TokenField.DTZ, -20},		/* Central Daylight Time */
    {"cest", TokenField.DTZ, 8},		/* Central European Dayl.Time */
    {"cet", TokenField.TZ, 4},		/* Central European Time */
    {"cetdst", TokenField.DTZ, 8},	/* Central European Dayl.Time */
    {"chadt", TokenField.DTZ, 55},	/* Chatham Island Daylight Time (13:45) */
    {"chast", TokenField.TZ, 51},		/* Chatham Island Time (12:45) */
    {"ckt", TokenField.TZ, 48},		/* Cook Islands Time */
    {"clst", TokenField.DTZ, -12},		/* Chile Summer Time */
    {"clt", TokenField.TZ, -16},		/* Chile Time */
    {"cot", TokenField.TZ, -20},		/* Columbia Time */
    {"cst", TokenField.TZ, -24},		/* Central Standard Time */
    {DCURRENT, TokenField.RESERV, TokenField.DTK_CURRENT},	/* "current" is always now */
    {"cvt", TokenField.TZ, 28},		/* Christmas Island Time (Indian Ocean) */
    {"cxt", TokenField.TZ, 28},		/* Christmas Island Time (Indian Ocean) */
    {"d", TokenField.UNITS, TokenField.DTK_DAY},		/* "day of month" for ISO input */
    {"davt", TokenField.TZ, 28},		/* Davis Time (Antarctica) */
    {"ddut", TokenField.TZ, 40},		/* Dumont-d'Urville Time (Antarctica) */
    {"dec", TokenField.MONTH, 12},
    {"december", TokenField.MONTH, 12},
    {"dnt", TokenField.TZ, 4},		/* Dansk Normal Tid */
    {"dow", TokenField.RESERV, TokenField.DTK_DOW},	/* day of week */
    {"doy", TokenField.RESERV, TokenField.DTK_DOY},	/* day of year */
    {"dst", TokenField.DTZMOD, 6},
    {"easst", TokenField.DTZ, -20},	/* Easter Island Summer Time */
    {"east", TokenField.TZ, -24},		/* Easter Island Time */
    {"eat", TokenField.TZ, 12},		/* East Africa Time */
    {"edt", TokenField.DTZ, -16},		/* Eastern Daylight Time */
    {"eest", TokenField.DTZ, 12},		/* Eastern Europe Summer Time */
    {"eet", TokenField.TZ, 8},		/* East. Europe, USSR Zone 1 */
    {"eetdst", TokenField.DTZ, 12},	/* Eastern Europe Daylight Time */
    {"egst", TokenField.DTZ, 0},		/* East Greenland Summer Time */
    {"egt", TokenField.TZ, -4},		/* East Greenland Time */
    {EPOCH, TokenField.RESERV, TokenField.DTK_EPOCH}, /* "epoch" reserved for system epoch time */
    {"est", TokenField.TZ, -20},		/* Eastern Standard Time */
    {"feb", TokenField.MONTH, 2},
    {"february", TokenField.MONTH, 2},
    {"fjst", TokenField.DTZ, -52},		/* Fiji Summer Time (13 hour offset!) */
    {"fjt", TokenField.TZ, -48},		/* Fiji Time */
    {"fkst", TokenField.DTZ, -12},		/* Falkland Islands Summer Time */
    {"fkt", TokenField.TZ, -8},		/* Falkland Islands Time */
    {"fri", TokenField.DOW, 5},
    {"friday", TokenField.DOW, 5},
    {"fst", TokenField.TZ, 4},		/* French Summer Time */
    {"fwt", TokenField.DTZ, 8},		/* French Winter Time  */
    {"galt", TokenField.TZ, -24},		/* Galapagos Time */
    {"gamt", TokenField.TZ, -36},		/* Gambier Time */
    {"gest", TokenField.DTZ, 20},		/* Georgia Summer Time */
    {"get", TokenField.TZ, 16},		/* Georgia Time */
    {"gft", TokenField.TZ, -12},		/* French Guiana Time */
    {"gilt", TokenField.TZ, 48},		/* Gilbert Islands Time */
    {"gmt", TokenField.TZ, 0},		/* Greenwish Mean Time */
    {"gst", TokenField.TZ, 40},		/* Guam Std Time, USSR Zone 9 */
    {"gyt", TokenField.TZ, -16},		/* Guyana Time */
    {"h", TokenField.UNITS, TokenField.DTK_HOUR},		/* "hour" */
    {"hdt", TokenField.DTZ, -36},		/* Hawaii/Alaska Daylight Time */
    {"hkt", TokenField.TZ, 32},		/* Hong Kong Time */
    {"hst", TokenField.TZ, -40},		/* Hawaii Std Time */
    {"ict", TokenField.TZ, 28},		/* Indochina Time */
    {"idle", TokenField.TZ, 48},		/* Intl. Date Line, East */
    {"idlw", TokenField.TZ, -48},		/* Intl. Date Line, West */
    {LATE, TokenField.RESERV, TokenField.DTK_LATE},	/* "infinity" reserved for "late time" */
    {INVALID, TokenField.RESERV, TokenField.DTK_INVALID},		/* "invalid" reserved for bad time */
    {"iot", TokenField.TZ, 20},		/* Indian Chagos Time */
    {"irkst", TokenField.DTZ, 36},	/* Irkutsk Summer Time */
    {"irkt", TokenField.TZ, 32},		/* Irkutsk Time */
    {"irt", TokenField.TZ, 14},		/* Iran Time */
    {"isodow", TokenField.RESERV, TokenField.DTK_ISODOW},		/* ISO day of week, Sunday == 7 */
    {"ist", TokenField.TZ, 8},		/* Israel */
    {"it", TokenField.TZ, 14},		/* Iran Time */
    {"j", TokenField.UNITS, TokenField.DTK_JULIAN},
    {"jan", TokenField.MONTH, 1},
    {"january", TokenField.MONTH, 1},
    {"javt", TokenField.TZ, 28},		/* Java Time (07:00? see JT) */
    {"jayt", TokenField.TZ, 36},		/* Jayapura Time (Indonesia) */
    {"jd", TokenField.UNITS, TokenField.DTK_JULIAN},
    {"jst", TokenField.TZ, 36},		/* Japan Std Time,USSR Zone 8 */
    {"jt", TokenField.TZ, 30},		/* Java Time (07:30? see JAVT) */
    {"jul", TokenField.MONTH, 7},
    {"julian", TokenField.UNITS, TokenField.DTK_JULIAN},
    {"july", TokenField.MONTH, 7},
    {"jun", TokenField.MONTH, 6},
    {"june", TokenField.MONTH, 6},
    {"kdt", TokenField.DTZ, 40},		/* Korea Daylight Time */
    {"kgst", TokenField.DTZ, 24},		/* Kyrgyzstan Summer Time */
    {"kgt", TokenField.TZ, 20},		/* Kyrgyzstan Time */
    {"kost", TokenField.TZ, 48},		/* Kosrae Time */
    {"krast", TokenField.DTZ, 28},	/* Krasnoyarsk Summer Time */
    {"krat", TokenField.TZ, 32},		/* Krasnoyarsk Standard Time */
    {"kst", TokenField.TZ, 36},		/* Korea Standard Time */
    {"lhdt", TokenField.DTZ, 44},		/* Lord Howe Daylight Time, Australia */
    {"lhst", TokenField.TZ, 42},		/* Lord Howe Standard Time, Australia */
    {"ligt", TokenField.TZ, 40},		/* From Melbourne, Australia */
    {"lint", TokenField.TZ, 56},		/* Line Islands Time (Kiribati; +14 hours!) */
    {"lkt", TokenField.TZ, 24},		/* Lanka Time */
    {"m", TokenField.UNITS, TokenField.DTK_MONTH},	/* "month" for ISO input */
    {"magst", TokenField.DTZ, 48},	/* Magadan Summer Time */
    {"magt", TokenField.TZ, 44},		/* Magadan Time */
    {"mar", TokenField.MONTH, 3},
    {"march", TokenField.MONTH, 3},
    {"mart", TokenField.TZ, -38},		/* Marquesas Time */
    {"mawt", TokenField.TZ, 24},		/* Mawson, Antarctica */
    {"may", TokenField.MONTH, 5},
    {"mdt", TokenField.DTZ, -24},		/* Mountain Daylight Time */
    {"mest", TokenField.DTZ, 8},		/* Middle Europe Summer Time */
    {"met", TokenField.TZ, 4},		/* Middle Europe Time */
    {"metdst", TokenField.DTZ, 8},	/* Middle Europe Daylight Time */
    {"mewt", TokenField.TZ, 4},		/* Middle Europe Winter Time */
    {"mez", TokenField.TZ, 4},		/* Middle Europe Zone */
    {"mht", TokenField.TZ, 48},		/* Kwajalein */
    {"mm", TokenField.UNITS, TokenField.DTK_MINUTE},	/* "minute" for ISO input */
    {"mmt", TokenField.TZ, 26},		/* Myannar Time */
    {"mon", TokenField.DOW, 1},
    {"monday", TokenField.DOW, 1},
    {"mpt", TokenField.TZ, 40},		/* North Mariana Islands Time */
    {"msd", TokenField.DTZ, 16},		/* Moscow Summer Time */
    {"msk", TokenField.TZ, 12},		/* Moscow Time */
    {"mst", TokenField.TZ, -28},		/* Mountain Standard Time */
    {"mt", TokenField.TZ, 34},		/* Moluccas Time */
    {"mut", TokenField.TZ, 16},		/* Mauritius Island Time */
    {"mvt", TokenField.TZ, 20},		/* Maldives Island Time */
    {"myt", TokenField.TZ, 32},		/* Malaysia Time */
    {"nct", TokenField.TZ, 44},		/* New Caledonia Time */
    {"ndt", TokenField.DTZ, -10},		/* Nfld. Daylight Time */
    {"nft", TokenField.TZ, -14},		/* Newfoundland Standard Time */
    {"nor", TokenField.TZ, 4},		/* Norway Standard Time */
    {"nov", TokenField.MONTH, 11},
    {"november", TokenField.MONTH, 11},
    {"novst", TokenField.DTZ, 28},	/* Novosibirsk Summer Time */
    {"novt", TokenField.TZ, 24},		/* Novosibirsk Standard Time */
    {NOW, TokenField.RESERV, TokenField.DTK_NOW},		/* current transaction time */
    {"npt", TokenField.TZ, 23},		/* Nepal Standard Time (GMT-5:45) */
    {"nst", TokenField.TZ, -14},		/* Nfld. Standard Time */
    {"nt", TokenField.TZ, -44},		/* Nome Time */
    {"nut", TokenField.TZ, -44},		/* Niue Time */
    {"nzdt", TokenField.DTZ, 52},		/* New Zealand Daylight Time */
    {"nzst", TokenField.TZ, 48},		/* New Zealand Standard Time */
    {"nzt", TokenField.TZ, 48},		/* New Zealand Time */
    {"oct", TokenField.MONTH, 10},
    {"october", TokenField.MONTH, 10},
    {"omsst", TokenField.DTZ, 28},	/* Omsk Summer Time */
    {"omst", TokenField.TZ, 24},		/* Omsk Time */
    {"on", TokenField.IGNORE_DTF, 0},		/* "on" (throwaway) */
    {"pdt", TokenField.DTZ, -28},		/* Pacific Daylight Time */
    {"pet", TokenField.TZ, -20},		/* Peru Time */
    {"petst", TokenField.DTZ, 52},	/* Petropavlovsk-Kamchatski Summer Time */
    {"pett", TokenField.TZ, 48},		/* Petropavlovsk-Kamchatski Time */
    {"pgt", TokenField.TZ, 40},		/* Papua New Guinea Time */
    {"phot", TokenField.TZ, 52},		/* Phoenix Islands (Kiribati) Time */
    {"pht", TokenField.TZ, 32},		/* Philippine Time */
    {"pkt", TokenField.TZ, 20},		/* Pakistan Time */
    {"pm", TokenField.AMPM, TokenField.PM},
    {"pmdt", TokenField.DTZ, -8},		/* Pierre & Miquelon Daylight Time */
    {"pont", TokenField.TZ, 44},		/* Ponape Time (Micronesia) */
    {"pst", TokenField.TZ, -32},		/* Pacific Standard Time */
    {"pwt", TokenField.TZ, 36},		/* Palau Time */
    {"pyst", TokenField.DTZ, -12},		/* Paraguay Summer Time */
    {"pyt", TokenField.TZ, -16},		/* Paraguay Time */
    {"ret", TokenField.DTZ, 16},		/* Reunion Island Time */
    {"s", TokenField.UNITS, TokenField.DTK_SECOND},	/* "seconds" for ISO input */
    {"sadt", TokenField.DTZ, 42},		/* S. Australian Dayl. Time */
    {"sast", TokenField.TZ, 38},		/* South Australian Std Time */
    {"sat", TokenField.DOW, 6},
    {"saturday", TokenField.DOW, 6},
    {"sct", TokenField.DTZ, 16},		/* Mahe Island Time */
    {"sep", TokenField.MONTH, 9},
    {"sept", TokenField.MONTH, 9},
    {"september", TokenField.MONTH, 9},
    {"set", TokenField.TZ, -4},		/* Seychelles Time ?? */
    {"sst", TokenField.DTZ, 8},		/* Swedish Summer Time */
    {"sun", TokenField.DOW, 0},
    {"sunday", TokenField.DOW, 0},
    {"swt", TokenField.TZ, 4},		/* Swedish Winter Time */
    {"t", TokenField.ISOTIME, TokenField.DTK_TIME},	/* Filler for ISO time fields */
    {"tft", TokenField.TZ, 20},		/* Kerguelen Time */
    {"that", TokenField.TZ, -40},		/* Tahiti Time */
    {"thu", TokenField.DOW, 4},
    {"thur", TokenField.DOW, 4},
    {"thurs", TokenField.DOW, 4},
    {"thursday", TokenField.DOW, 4},
    {"tjt", TokenField.TZ, 20},		/* Tajikistan Time */
    {"tkt", TokenField.TZ, -40},		/* Tokelau Time */
    {"tmt", TokenField.TZ, 20},		/* Turkmenistan Time */
    {TODAY, TokenField.RESERV, TokenField.DTK_TODAY}, /* midnight */
    {TOMORROW, TokenField.RESERV, TokenField.DTK_TOMORROW},	/* tomorrow midnight */
    {"truk", TokenField.TZ, 40},		/* Truk Time */
    {"tue", TokenField.DOW, 2},
    {"tues", TokenField.DOW, 2},
    {"tuesday", TokenField.DOW, 2},
    {"tvt", TokenField.TZ, 48},		/* Tuvalu Time */
    {"ulast", TokenField.DTZ, 36},	/* Ulan Bator Summer Time */
    {"ulat", TokenField.TZ, 32},		/* Ulan Bator Time */
    {"undefined", TokenField.RESERV, TokenField.DTK_INVALID}, /* pre-v6.1 invalid time */
    {"ut", TokenField.TZ, 0},
    {"utc", TokenField.TZ, 0},
    {"uyst", TokenField.DTZ, -8},		/* Uruguay Summer Time */
    {"uyt", TokenField.TZ, -12},		/* Uruguay Time */
    {"uzst", TokenField.DTZ, 24},		/* Uzbekistan Summer Time */
    {"uzt", TokenField.TZ, 20},		/* Uzbekistan Time */
    {"vet", TokenField.TZ, -16},		/* Venezuela Time */
    {"vlast", TokenField.DTZ, 44},	/* Vladivostok Summer Time */
    {"vlat", TokenField.TZ, 40},		/* Vladivostok Time */
    {"vut", TokenField.TZ, 44},		/* Vanuata Time */
    {"wadt", TokenField.DTZ, 32},		/* West Australian DST */
    {"wakt", TokenField.TZ, 48},		/* Wake Time */
    {"wast", TokenField.TZ, 28},		/* West Australian Std Time */
    {"wat", TokenField.TZ, -4},		/* West Africa Time */
    {"wdt", TokenField.DTZ, 36},		/* West Australian DST */
    {"wed", TokenField.DOW, 3},
    {"wednesday", TokenField.DOW, 3},
    {"weds", TokenField.DOW, 3},
    {"west", TokenField.DTZ, 4},		/* Western Europe Summer Time */
    {"wet", TokenField.TZ, 0},		/* Western Europe */
    {"wetdst", TokenField.DTZ, 4},	/* Western Europe Daylight Savings Time */
    {"wft", TokenField.TZ, 48},		/* Wallis and Futuna Time */
    {"wgst", TokenField.DTZ, -8},		/* West Greenland Summer Time */
    {"wgt", TokenField.TZ, -12},		/* West Greenland Time */
    {"wst", TokenField.TZ, 32},		/* West Australian Standard Time */
    {"y", TokenField.UNITS, TokenField.DTK_YEAR},		/* "year" for ISO input */
    {"yakst", TokenField.DTZ, 40},	/* Yakutsk Summer Time */
    {"yakt", TokenField.TZ, 36},		/* Yakutsk Time */
    {"yapt", TokenField.TZ, 40},		/* Yap Time (Micronesia) */
    {"ydt", TokenField.DTZ, -32},		/* Yukon Daylight Time */
    {"yekst", TokenField.DTZ, 24},	/* Yekaterinburg Summer Time */
    {"yekt", TokenField.TZ, 20},		/* Yekaterinburg Time */
    {YESTERDAY, TokenField.RESERV, TokenField.DTK_YESTERDAY}, /* yesterday midnight */
    {"yst", TokenField.TZ, -36},		/* Yukon Standard Time */
    {"z", TokenField.TZ, 0},			/* time zone tag per ISO-8601 */
    {"zp4", TokenField.TZ, -16},		/* UTC +4  hours. */
    {"zp5", TokenField.TZ, -20},		/* UTC +5  hours. */
    {"zp6", TokenField.TZ, -24},		/* UTC +6  hours. */
    {ZULU, TokenField.TZ, 0},			/* UTC */
  };

  static Object[][] deltatktbl = {
	  /* text, token, lexval */
    {"@", TokenField.IGNORE_DTF, 0},		/* postgres relative prefix */
    {DAGO, TokenField.AGO, 0},				/* "ago" indicates negative time offset */
    {"c", TokenField.UNITS, TokenField.DTK_CENTURY},	/* "century" relative */
    {"cent", TokenField.UNITS, TokenField.DTK_CENTURY},		/* "century" relative */
    {"centuries", TokenField.UNITS, TokenField.DTK_CENTURY},	/* "centuries" relative */
    {DCENTURY, TokenField.UNITS, TokenField.DTK_CENTURY},		/* "century" relative */
    {"d", TokenField.UNITS, TokenField.DTK_DAY},		/* "day" relative */
    {DDAY, TokenField.UNITS, TokenField.DTK_DAY},		/* "day" relative */
    {"days_full", TokenField.UNITS, TokenField.DTK_DAY},	/* "days_full" relative */
    {"dec", TokenField.UNITS, TokenField.DTK_DECADE}, /* "decade" relative */
    {DDECADE, TokenField.UNITS, TokenField.DTK_DECADE},		/* "decade" relative */
    {"decades", TokenField.UNITS, TokenField.DTK_DECADE},		/* "decades" relative */
    {"decs", TokenField.UNITS, TokenField.DTK_DECADE},	/* "decades" relative */
    {"h", TokenField.UNITS, TokenField.DTK_HOUR},		/* "hour" relative */
    {DHOUR, TokenField.UNITS, TokenField.DTK_HOUR},	/* "hour" relative */
    {"hours", TokenField.UNITS, TokenField.DTK_HOUR}, /* "hours" relative */
    {"hr", TokenField.UNITS, TokenField.DTK_HOUR},	/* "hour" relative */
    {"hrs", TokenField.UNITS, TokenField.DTK_HOUR},	/* "hours" relative */
    {INVALID, TokenField.RESERV, TokenField.DTK_INVALID},		/* reserved for invalid time */
    {"m", TokenField.UNITS, TokenField.DTK_MINUTE},	/* "minute" relative */
    {"microsecon", TokenField.UNITS, TokenField.DTK_MICROSEC},		/* "microsecond" relative */
    {"mil", TokenField.UNITS, TokenField.DTK_MILLENNIUM},		/* "millennium" relative */
    {"millennia", TokenField.UNITS, TokenField.DTK_MILLENNIUM},		/* "millennia" relative */
    {DMILLENNIUM, TokenField.UNITS, TokenField.DTK_MILLENNIUM},		/* "millennium" relative */
    {"millisecon", TokenField.UNITS, TokenField.DTK_MILLISEC},		/* relative */
    {"mils", TokenField.UNITS, TokenField.DTK_MILLENNIUM},	/* "millennia" relative */
    {"min", TokenField.UNITS, TokenField.DTK_MINUTE}, /* "minute" relative */
    {"mins", TokenField.UNITS, TokenField.DTK_MINUTE},	/* "minutes" relative */
    {DMINUTE, TokenField.UNITS, TokenField.DTK_MINUTE},		/* "minute" relative */
    {"minutes", TokenField.UNITS, TokenField.DTK_MINUTE},		/* "minutes" relative */
    {"mon", TokenField.UNITS, TokenField.DTK_MONTH},	/* "months_short" relative */
    {"mons", TokenField.UNITS, TokenField.DTK_MONTH}, /* "months_short" relative */
    {DMONTH, TokenField.UNITS, TokenField.DTK_MONTH}, /* "month" relative */
    {"months_short", TokenField.UNITS, TokenField.DTK_MONTH},
    {"ms", TokenField.UNITS, TokenField.DTK_MILLISEC},
    {"msec", TokenField.UNITS, TokenField.DTK_MILLISEC},
    {DMILLISEC, TokenField.UNITS, TokenField.DTK_MILLISEC},
    {"mseconds", TokenField.UNITS, TokenField.DTK_MILLISEC},
    {"msecs", TokenField.UNITS, TokenField.DTK_MILLISEC},
    {"qtr", TokenField.UNITS, TokenField.DTK_QUARTER},	/* "quarter" relative */
    {DQUARTER, TokenField.UNITS, TokenField.DTK_QUARTER},		/* "quarter" relative */
    {"s", TokenField.UNITS, TokenField.DTK_SECOND},
    {"sec", TokenField.UNITS, TokenField.DTK_SECOND},
    {DSECOND, TokenField.UNITS, TokenField.DTK_SECOND},
    {"seconds", TokenField.UNITS, TokenField.DTK_SECOND},
    {"secs", TokenField.UNITS, TokenField.DTK_SECOND},
    {DTIMEZONE, TokenField.UNITS, TokenField.DTK_TZ}, /* "timezone" time offset */
    {"timezone_h", TokenField.UNITS, TokenField.DTK_TZ_HOUR}, /* timezone hour units */
    {"timezone_m", TokenField.UNITS, TokenField.DTK_TZ_MINUTE},		/* timezone minutes units */
    {"undefined", TokenField.RESERV, TokenField.DTK_INVALID}, /* pre-v6.1 invalid time */
    {"us", TokenField.UNITS, TokenField.DTK_MICROSEC},	/* "microsecond" relative */
    {"usec", TokenField.UNITS, TokenField.DTK_MICROSEC},		/* "microsecond" relative */
    {DMICROSEC, TokenField.UNITS, TokenField.DTK_MICROSEC},	/* "microsecond" relative */
    {"useconds", TokenField.UNITS, TokenField.DTK_MICROSEC},	/* "microseconds" relative */
    {"usecs", TokenField.UNITS, TokenField.DTK_MICROSEC},		/* "microseconds" relative */
    {"w", TokenField.UNITS, TokenField.DTK_WEEK},		/* "week" relative */
    {DWEEK, TokenField.UNITS, TokenField.DTK_WEEK},	/* "week" relative */
    {"weeks", TokenField.UNITS, TokenField.DTK_WEEK}, /* "weeks" relative */
    {"y", TokenField.UNITS, TokenField.DTK_YEAR},		/* "year" relative */
    {DYEAR, TokenField.UNITS, TokenField.DTK_YEAR},	/* "year" relative */
    {"years", TokenField.UNITS, TokenField.DTK_YEAR}, /* "years" relative */
    {"yr", TokenField.UNITS, TokenField.DTK_YEAR},	/* "year" relative */
    {"yrs", TokenField.UNITS, TokenField.DTK_YEAR},	/* "years" relative */
  };

  public static class DateToken {
    String key;
    TokenField type;
    int value;
    TokenField valueType;

    public String getKey() {
      return key;
    }

    public TokenField getType() {
      return type;
    }

    public int getValue() {
      return value;
    }

    public TokenField getValueType() {
      return valueType;
    }
  }
  public static final Map<String, DateToken> dateTokenMap = new HashMap<>();

  static {
    for (Object[] eachToken: datetktbl) {
      DateToken dateToken = new DateToken();
      dateToken.key = eachToken[0].toString();
      dateToken.type = (TokenField)eachToken[1];
      if (eachToken[2] instanceof TokenField) {
        dateToken.valueType = (TokenField)eachToken[2];
        dateToken.value = dateToken.valueType.getValue();
      } else {
        dateToken.valueType = TokenField.DECIMAL;
        dateToken.value = ((Integer)eachToken[2]).intValue();
      }
      dateTokenMap.put(dateToken.key, dateToken);
    }

    /*
     * TODO
     * Currently, tajo does not support intervals, yet.
     * The below code must be restored to support intervals.
     */
//    for (Object[] eachToken: deltatktbl) {
//      DateToken dateToken = new DateToken();
//      dateToken.key = eachToken[0].toString();
//      dateToken.type = (TokenField)eachToken[1];
//      if (eachToken[2] instanceof TokenField) {
//        dateToken.valueType = (TokenField)eachToken[2];
//        dateToken.value = dateToken.valueType.getValue();
//      } else {
//        dateToken.valueType = TokenField.DECIMAL;
//        dateToken.value = ((Integer)eachToken[2]).intValue();
//      }
//      dateTokenMap.put(dateToken.key, dateToken);
//    }
  }

  public static int INTERVAL_MASK(TokenField t) { return (1 << (t.getValue())); }
  public static int DTK_M(TokenField t) { return (0x01 << (t.getValue())); }

  public static final int DTK_ALL_SECS_M = (DTK_M(TokenField.SECOND) |
        DTK_M(TokenField.MILLISECOND) |
        DTK_M(TokenField.MICROSECOND));
  public static final int DTK_DATE_M = (DTK_M(TokenField.YEAR) | DTK_M(TokenField.MONTH) | DTK_M(TokenField.DAY));
  public static final int DTK_TIME_M = (DTK_M(TokenField.HOUR) | DTK_M(TokenField.MINUTE) | DTK_M(TokenField.SECOND));
}
