package eu.dnetlib.enabling.aas;

/**
 * DNet common security error.
 * @author mhorst
 *
 */
public class DNetAAError {

	public static final String UNKNOWN_ERROR		= "UnknownError";
	public static final String SYSTEM_ERROR			= "SystemError";
	public static final String INVALID_REQ_ERROR	= "InvalidRequestError";
	public static final String EVALUATION_ERROR		= "EvaluationError";
	
//	WARN
	public static final String WARN_ASSERTION_OUTDATED 		= "WARN_ASSERTION_OUTDATED";
	public static final String WARN_ASSERTION_PERM_EXPIRED 	= "WARN_ASSERTION_PERM_EXPIRED";
	
	/**
	 * Error identifier.
	 */
	private String errorId;
	
	/**
	 * Additional error message.
	 */
	private String message;
	
	/**
	 * Error throwable.
	 */
	private Throwable throwable;

	/**
	 * Auxiliary data.
	 */
	private String data;
	
	/**
	 * Default constructor.
	 */
	public DNetAAError() {
		
	}
	
	public DNetAAError(String errorId) {
		this.errorId = errorId;
	}
	
	public DNetAAError(String errorId, String message) {
		this.errorId = errorId;
		this.message = message;
	}
	
	public DNetAAError(String errorId, String message, Throwable throwable) {
		this.errorId = errorId;
		this.message = message;
		this.throwable = throwable;
	}
	
	public DNetAAError(String errorId, String message, Throwable throwable,
			String data) {
		this.errorId = errorId;
		this.message = message;
		this.throwable = throwable;
		this.data = data;
	}
	
	public String getErrorId() {
		return errorId;
	}

	public void setErrorId(String errorId) {
		this.errorId = errorId;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Throwable getThrowable() {
		return throwable;
	}

	public void setThrowable(Throwable throwable) {
		this.throwable = throwable;
	}

	/**
	 * Returns auxiliary data.
	 * @return auxiliary data
	 */
	public String getData() {
		return data;
	}

	/**
	 * Sets auxiliary data.
	 * @param data
	 */
	public void setData(String data) {
		this.data = data;
	}
	
}
