/**
 * Copyright (c) 2000-2017 Liferay, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of the Liferay Enterprise
 * pSubscription License ("License"). You may not use this file except in
 * compliance with the License. You can obtain a copy of the License by
 * contacting Liferay, Inc. See the License for the specific language governing
 * permissions and limitations under the License, including but not limited to
 * distribution rights of the Software.
 *
 *
 *
 */

package com.liferay.portal.kernel.exception;

import com.liferay.portal.kernel.util.ClassUtil;
import com.liferay.portal.kernel.util.StackTraceUtil;

import java.util.Collection;

/**
 * @author Michael C. Han
 */
public class BulkException extends Exception {

	public BulkException(String message, Collection<Throwable> causes) {
		super(message);

		_causes = causes;
	}

	public Collection<Throwable> getCauses() {
		return _causes;
	}

	@Override
	public String getMessage() {
		StringBuilder sb = new StringBuilder(7 * _causes.size() + 4);

		sb.append("{message = ");
		sb.append(super.getMessage());
		sb.append("\n");

		for (Throwable cause : _causes) {
			sb.append("{");
			sb.append(ClassUtil.getClassName(cause));
			sb.append(":");
			sb.append(cause.getMessage());
			sb.append(", ");
			sb.append(StackTraceUtil.getStackTrace(cause));
			sb.append("}\n");
		}

		sb.append("}");

		return sb.toString();
	}

	private final Collection<Throwable> _causes;

}