public static Object transOdpsToJava()

in odps-sdk-impl/odps-common-local/src/main/java/com/aliyun/odps/local/common/utils/TypeConvertUtils.java [190:246]


  public static Object transOdpsToJava(Object value, TypeInfo typeInfo) {
    if (value == null) {
      return null;
    }
    if (value instanceof Writable) {
      return LocalWritableUtils.convert((Writable)value, typeInfo);
    }
    switch (typeInfo.getOdpsType()) {
      case BIGINT:
      case BOOLEAN:
      case DOUBLE:
      case DECIMAL:
      case TINYINT:
      case SMALLINT:
      case INT:
      case FLOAT:
      case DATE:
      case TIMESTAMP:
        return value;
      case CHAR:
      case VARCHAR:
        return value.toString();
      case STRING:
        try {
          if (value instanceof byte[]) {
            return new String((byte[])value, UTF8);
          } else {
            return value;
          }
        } catch (Exception e) {
          throw new RuntimeException(" to readable string failed!", e);
        }
      case DATETIME:
        if (value instanceof ZonedDateTime) {
          value = Date.from(((ZonedDateTime)value).toInstant());
        }
        return DATE_FORMAT.format((Date) value);
      case INTERVAL_DAY_TIME:
        return transIntervalDayTimeToJavaMap((IntervalDayTime)value);
      case INTERVAL_YEAR_MONTH:
        return transIntervalYearMonthToJavaMap((IntervalYearMonth)value);
      case BINARY:
        try {
          return LocalRunUtils.toReadableString(((Binary)value).data());
        } catch (Exception e) {
          throw new RuntimeException(" to readable string failed!", e);
        }
      case STRUCT:
        return transOdpsStructToJavaMap((Struct) value);
      case MAP:
        return transOdpsMapToJavaMap((Map)value, (MapTypeInfo) typeInfo);
      case ARRAY:
        return transOdpsArrayToJavaList((List) value, (ArrayTypeInfo) typeInfo);
      default:
        throw new RuntimeException(" Unknown column type: " + typeInfo.getOdpsType());
    }
  }