public static SeaTunnelRow buildSeaTunnelRow()

in seatunnel-connectors-v2/connector-cassandra/src/main/java/org/apache/seatunnel/connectors/seatunnel/cassandra/util/TypeConvertUtil.java [132:291]


    public static SeaTunnelRow buildSeaTunnelRow(Row row) {
        DataType subType;
        Class<?> typeClass;
        Object[] fields = new Object[row.size()];
        ColumnDefinitions metaData = row.getColumnDefinitions();
        for (int i = 0; i < row.size(); i++) {
            switch (metaData.get(i).getType().getProtocolCode()) {
                case ProtocolConstants.DataType.ASCII:
                case ProtocolConstants.DataType.VARCHAR:
                    fields[i] = row.getString(i);
                    break;
                case ProtocolConstants.DataType.VARINT:
                    fields[i] = Objects.requireNonNull(row.getBigInteger(i)).toString();
                    break;
                case ProtocolConstants.DataType.TIMEUUID:
                case ProtocolConstants.DataType.UUID:
                    fields[i] = Objects.requireNonNull(row.getUuid(i)).toString();
                    break;
                case ProtocolConstants.DataType.INET:
                    fields[i] = Objects.requireNonNull(row.getInetAddress(i)).getHostAddress();
                    break;
                case ProtocolConstants.DataType.TINYINT:
                    fields[i] = row.getByte(i);
                    break;
                case ProtocolConstants.DataType.SMALLINT:
                    fields[i] = row.getShort(i);
                    break;
                case ProtocolConstants.DataType.INT:
                    fields[i] = row.getInt(i);
                    break;
                case ProtocolConstants.DataType.BIGINT:
                    fields[i] = row.getLong(i);
                    break;
                case ProtocolConstants.DataType.FLOAT:
                    fields[i] = row.getFloat(i);
                    break;
                case ProtocolConstants.DataType.DOUBLE:
                    fields[i] = row.getDouble(i);
                    break;
                case ProtocolConstants.DataType.DECIMAL:
                    fields[i] = Objects.requireNonNull(row.getBigDecimal(i)).doubleValue();
                    break;
                case ProtocolConstants.DataType.BOOLEAN:
                    fields[i] = row.getBoolean(i);
                    break;
                case ProtocolConstants.DataType.TIME:
                    fields[i] = row.getLocalTime(i);
                    break;
                case ProtocolConstants.DataType.DATE:
                    fields[i] = row.getLocalDate(i);
                    break;
                case ProtocolConstants.DataType.TIMESTAMP:
                    fields[i] =
                            Timestamp.from(Objects.requireNonNull(row.getInstant(i)))
                                    .toLocalDateTime();
                    break;
                case ProtocolConstants.DataType.BLOB:
                    fields[i] =
                            ArrayUtils.toObject(
                                    Objects.requireNonNull(row.getByteBuffer(i)).array());
                    break;
                case ProtocolConstants.DataType.MAP:
                    subType = metaData.get(i).getType();
                    fields[i] =
                            row.getMap(
                                    i,
                                    convert(((DefaultMapType) subType).getKeyType()).getTypeClass(),
                                    convert(((DefaultMapType) subType).getValueType())
                                            .getTypeClass());
                    break;
                case ProtocolConstants.DataType.LIST:
                    typeClass =
                            convert(((DefaultListType) metaData.get(i).getType()).getElementType())
                                    .getTypeClass();
                    if (String.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, String.class))
                                        .toArray(new String[0]);
                    } else if (Byte.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Byte.class))
                                        .toArray(new Byte[0]);
                    } else if (Short.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Short.class))
                                        .toArray(new Short[0]);
                    } else if (Integer.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Integer.class))
                                        .toArray(new Integer[0]);
                    } else if (Long.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Long.class))
                                        .toArray(new Long[0]);
                    } else if (Float.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Float.class))
                                        .toArray(new Float[0]);
                    } else if (Double.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Double.class))
                                        .toArray(new Double[0]);
                    } else if (Boolean.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getList(i, Boolean.class))
                                        .toArray(new Boolean[0]);
                    } else {
                        throw new CassandraConnectorException(
                                CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
                                "List unsupported this data type: " + typeClass.toString());
                    }
                    break;
                case ProtocolConstants.DataType.SET:
                    typeClass =
                            convert(((DefaultSetType) metaData.get(i).getType()).getElementType())
                                    .getTypeClass();
                    if (String.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, String.class))
                                        .toArray(new String[0]);
                    } else if (Byte.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Byte.class))
                                        .toArray(new Byte[0]);
                    } else if (Short.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Short.class))
                                        .toArray(new Short[0]);
                    } else if (Integer.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Integer.class))
                                        .toArray(new Integer[0]);
                    } else if (Long.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Long.class))
                                        .toArray(new Long[0]);
                    } else if (Float.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Float.class))
                                        .toArray(new Float[0]);
                    } else if (Double.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Double.class))
                                        .toArray(new Double[0]);
                    } else if (Boolean.class.equals(typeClass)) {
                        fields[i] =
                                Objects.requireNonNull(row.getSet(i, Boolean.class))
                                        .toArray(new Boolean[0]);
                    } else {
                        throw new CassandraConnectorException(
                                CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
                                "List unsupported this data type: " + typeClass.toString());
                    }
                    break;
                default:
                    fields[i] = row.getObject(i);
            }
        }
        return new SeaTunnelRow(fields);
    }