
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 com.huaweicloud.dws.client.util.AssertUtil;
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);
AssertUtil.isTrue(action instanceof PutAction, clientException);
return new DwsClientRecordException(clientException, ((PutAction) action).getRecords());
} catch (Exception exception) {
log.error("action result exception.", exception);
DwsClientException clientException = DwsClientException.fromException(exception);
AssertUtil.isTrue(action instanceof PutAction, clientException);
return new DwsClientRecordException(clientException, ((PutAction) action).getRecords());
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy