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

com.alibaba.hologres.client.exception.HoloClientWithDetailsException Maven / Gradle / Ivy

There is a newer version: 2.5.5
Show newest version
/*
 * Copyright (c) 2020. Alibaba Group Holding Limited
 */

package com.alibaba.hologres.client.exception;

import com.alibaba.hologres.client.model.Record;

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

/**
 * A subclass of {@link com.alibaba.hologres.client.exception.HoloClientException}.
 * It is thrown when we have more information about which records were causing which
 * exceptions.
 */
public class HoloClientWithDetailsException extends HoloClientException {

	List failedList;
	List exceptionList;

	public HoloClientWithDetailsException(HoloClientException e) {
		super(e.getCode(), e.getMessage(), e.getCause());
	}

	public HoloClientWithDetailsException(ExceptionCode code, String msg, Record record) {
		super(code, msg);
		HoloClientException e = new HoloClientException(code, msg);
		add(record, e);
	}

	public void add(List failList, HoloClientException e) {
		for (Record record : failList) {
			add(record, e);
		}
	}

	public void add(Record record, HoloClientException e) {
		if (failedList == null) {
			failedList = new ArrayList<>();
			exceptionList = new ArrayList<>();
		}
		failedList.add(record);
		exceptionList.add(e);
	}

	public int size() {
		return failedList == null ? 0 : failedList.size();
	}

	public Record getFailRecord(int index) {
		return failedList.get(index);
	}

	public HoloClientException getException(int index) {

		return exceptionList.get(index);

	}

	public HoloClientException getException() {
		return exceptionList.get(0);
	}

	public HoloClientWithDetailsException merge(HoloClientWithDetailsException other) {
		this.failedList.addAll(other.failedList);
		this.exceptionList.addAll(other.exceptionList);
		return this;
	}

	@Override
	public String getLocalizedMessage() {
		return getMessage();
	}

	@Override
	public String getMessage() {
		if (size() > 0) {
			StringBuilder sb = new StringBuilder();
			sb.append("failed records " + size() + ", first:" + getFailRecord(0) + ",first err:" + getException(0).getMessage());
			return sb.toString();
		} else {
			return super.getMessage();
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy