static OdpsObjectConverter getFormatter()

in odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/data/converter/ObjectConverterFactory.java [778:862]


    static OdpsObjectConverter getFormatter(OdpsType odpsType, OdpsRecordConverterBuilder.Config config) {
        switch (odpsType) {
            case TINYINT:
                return TinyIntConverter.INSTANCE;
            case SMALLINT:
                return SmallIntConverter.INSTANCE;
            case INT:
                return IntConverter.INSTANCE;
            case BIGINT:
                return BigIntConverter.INSTANCE;
            case CHAR:
                return config.quoteStrings ? CharConverter.QUOTE_INSTANCE : CharConverter.INSTANCE;
            case VARCHAR:
                return config.quoteStrings ? VarcharConverter.QUOTE_INSTANCE
                                           : VarcharConverter.INSTANCE;
            case STRING:
                return config.quoteStrings ? StringConverter.QUOTE_INSTANCE
                                           : StringConverter.INSTANCE;
            case FLOAT:
                switch (config.floatingNumberOutputFormat) {
                    case FLOATING_NUMBER_OUTPUT_FORMAT_TO_STRING:
                        return FloatConverter.TO_STRING;
                    case FLOATING_NUMBER_OUTPUT_FORMAT_SQL_COMPATIBLE:
                        return FloatConverter.SQL_COMPATIBLE;
                    default:
                        throw new IllegalArgumentException("unsupported float format type");
                }
            case JSON:
                return JsonConverter.INSTANCE;
            case BOOLEAN:
                return BooleanConverter.INSTANCE;
            case DOUBLE:
                switch (config.floatingNumberOutputFormat) {
                    case FLOATING_NUMBER_OUTPUT_FORMAT_TO_STRING:
                        return DoubleConverter.TO_STRING;
                    case FLOATING_NUMBER_OUTPUT_FORMAT_SQL_COMPATIBLE:
                        return DoubleConverter.SQL_COMPATIBLE;
                    default:
                        throw new IllegalArgumentException("unsupported double format type");
                }
            case DECIMAL:
                switch (config.decimalOutputFormat) {
                    case DECIMAL_OUTPUT_FORMAT_NORMAL:
                        return DecimalConverter.NO_PADDING;
                    case DECIMAL_OUTPUT_FORMAT_ZERO_PADDING:
                        return DecimalConverter.PADDING;
                    default:
                        throw new IllegalArgumentException("unsupported decimal format type");
                }
            case DATE:
                return new DateConverter(config);
            case DATETIME:
                return new DatetimeConverter(config);
            case TIMESTAMP:
                return new TimestampConverter(config);
            case TIMESTAMP_NTZ:
                return new TimestampNtzConverter(config);
            case BINARY:
                switch (config.binaryFormat) {
                    case BINARY_FORMAT_BASE64:
                        return BinaryConverter.BASE64;
                    case BINARY_FORMAT_UTF8:
                        return BinaryConverter.UTF8;
                    case BINARY_FORMAT_QUOTED_PRINTABLE:
                        return BinaryConverter.QUOTED_PRINTABLE;
                    case BINARY_FORMAT_HEX:
                        return BinaryConverter.HEX;
                    case BINARY_FORMAT_SQL_FORMAT:
                        return BinaryConverter.SQL_FORMAT;
                }
            case ARRAY:
            case MAP:
            case STRUCT:
                switch (config.complexTypeFormat) {
                    case COMPLEX_TYPE_FORMAT_JSON:
                        return ComplexObjectConverter.JSON;
                    case COMPLEX_TYPE_FORMAT_JSON_STR:
                        return ComplexObjectConverter.JSON_ALL_STR;
                    case COMPLEX_TYPE_OUTPUT_FORMAT_HUMAN_READABLE:
                        return ComplexObjectConverter.HUMAN_READABLE;
                }
            default:
                throw new IllegalArgumentException("unsupported data type");
        }
    }