All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.wz2cool.canal.utils.converter.postgresql.PostgresqlValuePlaceholderConverter Maven / Gradle / Ivy

The newest version!
package com.github.wz2cool.canal.utils.converter.postgresql;

import com.github.wz2cool.canal.utils.converter.IValuePlaceholderConverter;
import com.github.wz2cool.canal.utils.model.MysqlDataType;
import com.github.wz2cool.canal.utils.model.PostgresqlDataType;
import com.github.wz2cool.canal.utils.model.ValuePlaceholder;

import java.nio.charset.StandardCharsets;

public class PostgresqlValuePlaceholderConverter implements IValuePlaceholderConverter {
    @Override
    public ValuePlaceholder convert(MysqlDataType mysqlDataType, String value) {
        ValuePlaceholder result = new ValuePlaceholder();
        String commonPlaceholder = "?::%s";
        switch (mysqlDataType) {
            case BIT:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.BIT.getText()));
                result.setValue(value);
                break;
            case TINYINT:
            case SMALLINT:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.SMALLINT.getText()));
                result.setValue(value);
                break;
            case MEDIUMINT:
            case INT:
            case INTEGER:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.INT.getText()));
                result.setValue(value);
                break;
            case BIGINT:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.BIGINT.getText()));
                result.setValue(value);
                break;
            case FLOAT:
            case DOUBLE:
            case DECIMAL:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.NUMERIC.getText()));
                result.setValue(value);
                break;
            case DATE:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.DATE.getText()));
                result.setValue(value);
                break;
            case DATETIME:
            case TIMESTAMP:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.TIMESTAMP.getText()));
                result.setValue(value);
                break;
            case TIME:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.TIME.getText()));
                result.setValue(value);
                break;
            case CHAR:
            case VARCHAR:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.VARCHAR.getText()));
                result.setValue(value);
                break;
            case MEDIUMBLOB:
            case TINYBLOB:
            case BLOB:
            case LONGBLOB:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.BYTEA.getText()));
                result.setValue(value == null ? null : value.getBytes(StandardCharsets.ISO_8859_1));
                break;
            case TINYTEXT:
            case TEXT:
            case MEDIUMTEXT:
            case LONGTEXT:
                result.setPlaceholder(String.format(commonPlaceholder, MysqlDataType.TEXT.getText()));
                result.setValue(value);
                break;
            case JSON:
                result.setPlaceholder(String.format(commonPlaceholder, PostgresqlDataType.JSON.getText()));
                result.setValue(value);
                break;
        }
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy