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

com.huaweicloud.dws.client.exception.DwsClientRecordException Maven / Gradle / Ivy

package com.huaweicloud.dws.client.exception;

import com.huaweicloud.dws.client.action.AbstractAction;
import com.huaweicloud.dws.client.action.PutAction;
import com.huaweicloud.dws.client.model.Record;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

/**
 * @ProjectName: dws-connector
 * @ClassName: DwsClientWriteException
 * @Description: 数据写入至数据库失败
 * @Date: 2023/1/16 17:27
 * @Version: 1.0
 */
@Getter
@Slf4j
public class DwsClientRecordException extends DwsClientException {
    /**
     * 异常的record
     */
    private final List records;

    /**
     * recode对应的异常,同一批数据会是同一个异常
     */
    private final List exceptions = new ArrayList<>();

    public DwsClientRecordException(DwsClientException e, List records) {
        super(e.getCode(), e.getMessage(), e.getOriginal());
        this.records = records;
        // 收集这批异常
        for (int i = 0; i < records.size(); i++) {
            exceptions.add(e);
        }
    }

    /**
     * 将两个异常内容合并
     * @return
     */
    public DwsClientRecordException merge(DwsClientRecordException e) {
        this.records.addAll(e.getRecords());
        this.exceptions.addAll(e.getExceptions());
        return this;
    }

    public static DwsClientRecordException fromAction(AbstractAction action) throws DwsClientException {
        try {
            action.getResult();
        } catch (DwsClientRecordException e) {
            log.error("action result exception.", e);
            return e;
        } catch (DwsClientException clientException) {
            log.error("action result exception.", clientException);
            if (action instanceof PutAction) {
                return new DwsClientRecordException(clientException, ((PutAction) action).getRecords());
            }
            throw clientException;
        } catch (Exception exception) {
            log.error("action result exception.", exception);
            DwsClientException clientException = DwsClientException.fromException(exception);
            if (action instanceof PutAction) {
                return new DwsClientRecordException(clientException, ((PutAction) action).getRecords());
            }
            throw clientException;
        }
        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy