public static Object parseFromString()

in cassandrawriter/src/main/java/com/alibaba/datax/plugin/writer/cassandrawriter/CassandraWriterHelper.java [46:143]


  public static Object parseFromString(String s, DataType sqlType ) throws Exception {
    if (s == null || s.isEmpty()) {
      if (sqlType.getName() == Name.ASCII || sqlType.getName() == Name.TEXT ||
          sqlType.getName() == Name.VARCHAR) {
        return s;
      } else {
        return null;
      }
    }
    switch (sqlType.getName()) {
    case ASCII:
    case TEXT:
    case VARCHAR:
      return s;

    case BLOB:
      if (s.length() == 0) {
        return new byte[0];
      }
      byte[] byteArray = new byte[s.length() / 2];
      for (int i = 0; i < byteArray.length; i++) {
        String subStr = s.substring(2 * i, 2 * i + 2);
        byteArray[i] = ((byte) Integer.parseInt(subStr, 16));
      }
      return ByteBuffer.wrap(byteArray);

    case BOOLEAN:
      return Boolean.valueOf(s);

    case TINYINT:
      return Byte.valueOf(s);

    case SMALLINT:
      return Short.valueOf(s);

    case INT:
      return Integer.valueOf(s);

    case BIGINT:
      return Long.valueOf(s);

    case VARINT:
      return new BigInteger(s, 10);

    case FLOAT:
      return Float.valueOf(s);

    case DOUBLE:
      return Double.valueOf(s);

    case DECIMAL:
      return new BigDecimal(s);

    case DATE: {
      String[] a = s.split("-");
      if (a.length != 3) {
        throw new Exception(String.format("DATE类型数据 '%s' 格式不正确,必须为yyyy-mm-dd格式", s));
      }
      return LocalDate.fromYearMonthDay(Integer.valueOf(a[0]), Integer.valueOf(a[1]),
          Integer.valueOf(a[2]));
    }

    case TIME:
      return Long.valueOf(s);

    case TIMESTAMP:
      return new Date(Long.valueOf(s));

    case UUID:
    case TIMEUUID:
      return UUID.fromString(s);

    case INET:
      String[] b = s.split("/");
      if (b.length < 2) {
        return InetAddress.getByName(s);
      }
      byte[] addr = InetAddress.getByName(b[1]).getAddress();
      return InetAddress.getByAddress(b[0], addr);

    case DURATION:
      return Duration.from(s);

    case LIST:
    case MAP:
    case SET:
    case TUPLE:
    case UDT:
      Object jsonObject = JSON.parse(s);
      return parseFromJson(jsonObject,sqlType);

    default:
      throw DataXException.asDataXException(CassandraWriterErrorCode.CONF_ERROR,
          "不支持您配置的列类型:" + sqlType + ", 请检查您的配置 或者 联系 管理员.");

    } // end switch

  }