private static void appendAsJava()

in core/src/main/java/org/apache/calcite/rex/RexLiteral.java [642:768]


  private static void appendAsJava(@Nullable Comparable value, StringBuilder sb,
      SqlTypeName typeName, RelDataType type, boolean java,
      RexDigestIncludeType includeType) {
    switch (typeName) {
    case CHAR:
      NlsString nlsString = (NlsString) castNonNull(value);
      if (java) {
        Util.printJavaString(
            sb,
            nlsString.getValue(),
            true);
      } else {
        boolean includeCharset =
            (nlsString.getCharsetName() != null)
                && !nlsString.getCharsetName().equals(
                CalciteSystemProperty.DEFAULT_CHARSET.value());
        sb.append(nlsString.asSql(includeCharset, false));
      }
      break;
    case BOOLEAN:
      assert value instanceof Boolean;
      sb.append(value);
      break;
    case DECIMAL:
      assert value instanceof BigDecimal;
      sb.append(value);
      break;
    case DOUBLE:
    case FLOAT:
      if (value instanceof BigDecimal) {
        sb.append(Util.toScientificNotation((BigDecimal) value));
      } else {
        assert value instanceof Double;
        Double d = (Double) value;
        String repr = Util.toScientificNotation(d);
        sb.append(repr);
      }
      break;
    case BIGINT:
      assert value instanceof BigDecimal;
      long narrowLong = ((BigDecimal) value).longValue();
      sb.append(narrowLong);
      sb.append('L');
      break;
    case BINARY:
      assert value instanceof ByteString;
      sb.append("X'");
      sb.append(((ByteString) value).toString(16));
      sb.append("'");
      break;
    case NULL:
      assert value == null;
      sb.append("null");
      break;
    case SARG:
      assert value instanceof Sarg;
      //noinspection unchecked,rawtypes
      Util.asStringBuilder(sb, sb2 ->
          printSarg(sb2, (Sarg) value, type));
      break;
    case UUID:
      assert value instanceof UUID;
      sb.append(value);
      break;
    case SYMBOL:
      assert value instanceof Enum;
      sb.append("FLAG(");
      sb.append(value);
      sb.append(")");
      break;
    case DATE:
      assert value instanceof DateString;
      sb.append(value);
      break;
    case TIME:
    case TIME_WITH_LOCAL_TIME_ZONE:
      assert value instanceof TimeString;
      sb.append(value);
      break;
    case TIME_TZ:
      assert value instanceof TimeWithTimeZoneString;
      sb.append(value);
      break;
    case TIMESTAMP:
    case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
      assert value instanceof TimestampString;
      sb.append(value);
      break;
    case TIMESTAMP_TZ:
      assert value instanceof TimestampWithTimeZoneString;
      sb.append(value);
      break;
    case INTERVAL_YEAR:
    case INTERVAL_YEAR_MONTH:
    case INTERVAL_MONTH:
    case INTERVAL_DAY:
    case INTERVAL_DAY_HOUR:
    case INTERVAL_DAY_MINUTE:
    case INTERVAL_DAY_SECOND:
    case INTERVAL_HOUR:
    case INTERVAL_HOUR_MINUTE:
    case INTERVAL_HOUR_SECOND:
    case INTERVAL_MINUTE:
    case INTERVAL_MINUTE_SECOND:
    case INTERVAL_SECOND:
      assert value instanceof BigDecimal;
      sb.append(value);
      break;
    case MULTISET:
    case ROW:
    case ARRAY:
      assert value instanceof List : "value must implement List: " + value;
      @SuppressWarnings("unchecked") final List<RexLiteral> list =
          (List<RexLiteral>) castNonNull(value);
      Util.asStringBuilder(sb, sb2 ->
          Util.printList(sb, list.size(), (sb3, i) ->
              sb3.append(list.get(i).computeDigest(includeType))));
      break;
    case GEOMETRY:
      final String wkt = SpatialTypeFunctions.ST_AsWKT((Geometry) castNonNull(value));
      sb.append(wkt);
      break;
    default:
      assert valueMatchesType(value, typeName, true);
      throw Util.needToImplement(typeName);
    }
  }