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

com.huaweicloud.dws.client.handler.AbstractActionHandler Maven / Gradle / Ivy


package com.huaweicloud.dws.client.handler;

import com.huaweicloud.dws.client.exception.DwsClientException;
import com.huaweicloud.dws.client.model.Column;
import com.huaweicloud.dws.client.model.Record;
import com.huaweicloud.dws.client.worker.ConnectionProvider;
import lombok.extern.slf4j.Slf4j;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

/**
 * @ProjectName: dws-connector
 * @ClassName: AbstractActionHandler
 * @Description:
 * @Date: 2023/1/16 15:01
 * @Version: 1.0
 */
@Slf4j
public abstract class AbstractActionHandler {
    public final ConnectionProvider connectionProvider;

    public AbstractActionHandler(ConnectionProvider connectionProvider) {
        this.connectionProvider = connectionProvider;
    }

    public abstract void handle(T action) throws DwsClientException;

    public static void fillRecord(Record record, int recordIndex, ResultSet rs, int resultSetIndex, Column column)
            throws SQLException {
        switch (column.getType()) {
            case Types.SMALLINT:
                if (rs.getObject(resultSetIndex) != null) {
                    record.setValue(recordIndex, rs.getShort(resultSetIndex));
                    break;
                }
            case Types.OTHER:
            default:
                record.setValue(recordIndex, rs.getObject(resultSetIndex));
        }
    }

    public Connection getConnection() throws DwsClientException {
        try {
            return connectionProvider.getOrInitConnection();
        } catch (Exception e) {
            log.error("get connection fail", e);
            throw DwsClientException.fromException(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy