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

com.huaweicloud.dws.client.collector.ITableCollector Maven / Gradle / Ivy

package com.huaweicloud.dws.client.collector;

import com.huaweicloud.dws.client.TableConfig;
import com.huaweicloud.dws.client.exception.DwsClientException;
import com.huaweicloud.dws.client.model.TableSchema;
import com.huaweicloud.dws.client.op.Delete;
import com.huaweicloud.dws.client.op.IConvert;
import com.huaweicloud.dws.client.op.Operate;
import com.huaweicloud.dws.client.op.Write;
import com.huaweicloud.dws.client.util.StringUtils;

/**
 * @ProjectName: dws-connector
 * @ClassName: ITableActionCollector
 * @Description:
 * @Date: 2023/12/8 17:12
 * @Version: 1.0
 */
public interface ITableCollector extends ICollector {

    /**
     * 当前收集器中存得表定义
     */
    TableSchema getTableSchema();


    /**
     * 获取当前表配置
     * @return
     */
    TableConfig getTableConfig();

    /**
     * 直接写数据
     */
    default Operate write() {
        return new Write(getTableSchema(), this, getTableConfig());
    }

    /**
     * 接口只支持全列更新场景,values为表结构顺序,如果values长度少于数据库表字段数,后面字段全部补充为null
     * @param convert 数据转换接口
     */
    default Operate write(Object[] values, IConvert convert) throws DwsClientException {
        return new Write(getTableSchema(), this, getTableConfig(), values, convert);
    }

    /**
     * 接口只支持全列更新场景,data为用split分割得全列数据并且和收集器得表结构顺序对应,如果data长度少于数据库表字段数,后面字段全部补充为null
     * @param convert 数据转换接口
     */
    default Operate write(String data, IConvert convert, String split) throws DwsClientException {
        TableSchema tableSchema = getTableSchema();
        String[] values = new String[tableSchema.getColumns().size()];
        StringUtils.split(data, values, split);
        return new Write(tableSchema, this, getTableConfig(), values, convert);
    }

    /**
     * 直接写数据
     */
    default Operate delete() {
        return new Delete(getTableSchema(), this);
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy