DomainException.java

package de.japrost.jabudget.domain;

/**
 * Thrown on exceptions handling the domain.
 */
// TODO generate messages 
public class DomainException extends Exception {

	private static final long serialVersionUID = 1L;
	private final DomainFailure failure;

	/**
	 * Create an instance based on a {@link Throwable}.
	 * 
	 * @param failure the failure code
	 * @param cause the cause of the failure
	 */
	public DomainException(DomainFailure failure, Throwable cause) {
		super(failure.toString(), cause);
		this.failure = failure;
	}

	/**
	 * Create an instance.
	 * 
	 * @param failure the failure code
	 */
	public DomainException(DomainFailure failure) {
		super(failure.toString());
		this.failure = failure;
	}

	/**
	 * Get the failure code.
	 * 
	 * @return the code
	 */
	public DomainFailure getFailure() {
		return failure;
	}

}