public Object castFromSingleValue()

in java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java [183:275]


  public Object castFromSingleValue(TSDataType sourceType, Object value) {
    if (Objects.isNull(value)) {
      return null;
    }
    switch (this) {
      case BOOLEAN:
        if (sourceType == TSDataType.BOOLEAN) {
          return value;
        } else {
          break;
        }
      case INT32:
        if (sourceType == TSDataType.INT32) {
          return value;
        } else {
          break;
        }
      case INT64:
        if (sourceType == TSDataType.INT64) {
          return value;
        } else if (sourceType == INT32) {
          return (long) ((int) value);
        } else if (sourceType == TIMESTAMP) {
          return value;
        } else {
          break;
        }
      case FLOAT:
        if (sourceType == TSDataType.FLOAT) {
          return value;
        } else if (sourceType == INT32) {
          return (float) ((int) value);
        } else {
          break;
        }
      case DOUBLE:
        if (sourceType == TSDataType.DOUBLE) {
          return value;
        } else if (sourceType == INT32) {
          return (double) ((int) value);
        } else if (sourceType == INT64) {
          return (double) ((long) value);
        } else if (sourceType == FLOAT) {
          return (double) ((float) value);
        } else if (sourceType == TIMESTAMP) {
          return (double) ((long) value);
        } else {
          break;
        }
      case TEXT:
        if (sourceType == TSDataType.TEXT || sourceType == TSDataType.STRING) {
          return value;
        } else {
          break;
        }
      case TIMESTAMP:
        if (sourceType == TSDataType.TIMESTAMP) {
          return value;
        } else if (sourceType == INT32) {
          return (long) ((int) value);
        } else if (sourceType == INT64) {
          return value;
        } else {
          break;
        }
      case DATE:
        if (sourceType == TSDataType.DATE) {
          return value;
        } else {
          break;
        }
      case BLOB:
        if (sourceType == TSDataType.BLOB
            || sourceType == TSDataType.STRING
            || sourceType == TSDataType.TEXT) {
          return value;
        } else {
          break;
        }
      case STRING:
        if (sourceType == TSDataType.STRING || sourceType == TSDataType.TEXT) {
          return value;
        } else {
          break;
        }
      case VECTOR:
      case UNKNOWN:
      default:
        break;
    }
    throw new ClassCastException(
        String.format("Unsupported cast: from %s to %s", sourceType, this));
  }