static

in core/src/main/java/org/apache/calcite/util/format/FormatModels.java [116:237]


  static {
    final Map<String, FormatElement> map = new LinkedHashMap<>();
    for (FormatElementEnum fe : FormatElementEnum.values()) {
      map.put(fe.toString(), fe);
    }
    DEFAULT = create(map);

    map.clear();
    map.put("%A", Day);
    map.put("%a", Dy);
    map.put("%B", Month);
    map.put("%b", Mon);
    map.put("%c",
        compositeElement("The date and time representation (English);",
            Dy, literalElement(" "), Mon, literalElement(" "),
            DD, literalElement(" "), HH24, literalElement(":"),
            MI, literalElement(":"), SS, literalElement(" "),
            YYYY));
    map.put("%d", DD);
    map.put("%E1S", FF1);
    map.put("%E2S", FF2);
    map.put("%E3S", FF3);
    map.put("%E4S", FF4);
    map.put("%E5S", FF5);
    map.put("%E*S", FF6);
    map.put("%e", E);
    map.put("%F",
        compositeElement("The date in the format %Y-%m-%d.", YYYY, literalElement("-"), MM,
            literalElement("-"), DD));
    map.put("%G", IYYYY);
    map.put("%g", IYY);
    map.put("%H", HH24);
    map.put("%I", HH12);
    map.put("%j", DDD);
    map.put("%M", MI);
    map.put("%m", MM);
    map.put("%p", PM);
    map.put("%Q", Q);
    map.put("%R",
        compositeElement("The time in the format %H:%M",
            HH24, literalElement(":"), MI));
    map.put("%S", SS);
    map.put("%T",
        compositeElement("The time in the format %H:%M:%S.",
            HH24, literalElement(":"), MI, literalElement(":"), SS));
    map.put("%u", ID);
    map.put("%V", IW);
    map.put("%W", WW);
    map.put("%x",
        compositeElement("The date representation in MM/DD/YY format",
            MM, literalElement("/"), DD, literalElement("/"), YY));
    map.put("%Y", pctY);
    map.put("%y", YY);
    map.put("%Z", TZR);

    map.put("HH12", HH12);
    map.put("HH24", HH24);
    map.put("MI", MI);
    map.put("SSSSS", SSSSS);
    map.put("SS", SS);
    map.put("MS", MS);
    map.put("FF1", FF1);
    map.put("FF2", FF2);
    map.put("FF3", FF3);
    map.put("FF4", FF4);
    map.put("FF5", FF5);
    map.put("FF6", FF6);
    map.put("FF7", FF7);
    map.put("FF8", FF8);
    map.put("FF9", FF9);
    map.put("YYYY", YYYY);
    map.put("YYY", YYY);
    map.put("YY", YY);
    map.put("Y", Y);
    map.put("RRRR", YYYY);
    map.put("RR", YY);
    map.put("DAY", DAY);
    map.put("Day", Day);
    map.put("day", day);
    map.put("DY", DY);
    map.put("Dy", Dy);
    map.put("dy", dy);
    map.put("month", month);
    map.put("Month", Month);
    map.put("MONTH", MONTH);
    map.put("mon", mon);
    map.put("Mon", Mon);
    map.put("MON", MON);
    map.put("MM", MM);
    map.put("CC", CC);
    map.put("DDD", DDD);
    map.put("DD", DD);
    map.put("D", D);
    map.put("WW", WW);
    map.put("W", W);
    map.put("IW", IW);
    map.put("Q", Q);
    map.put("AM", AMPM);
    map.put("A.M.", AM_PM);
    map.put("am", ampm);
    map.put("a.m.", am_pm);
    map.put("PM", AMPM);
    map.put("P.M.", AM_PM);
    map.put("pm", ampm);
    map.put("p.m.", am_pm);

    // Our implementation of TO_CHAR does not support TIMESTAMPTZ
    // As PostgreSQL, we will skip the timezone when formatting TIMESTAMP values
    map.put("TZ", TZR);

    // Add lowercase mappings for formats that can also work case-insensitive.
    final Map<String, FormatElement> lowercaseMap = new LinkedHashMap<>();
    map.forEach((key, value) -> {
      String lowerKey = key.toLowerCase(Locale.ROOT);
      if (!map.containsKey(lowerKey)) {
        lowercaseMap.put(lowerKey, value);
      }
    });
    map.putAll(lowercaseMap);
    BIG_QUERY = create(map);
    POSTGRESQL = create(map);
  }