/* $Id: IllegalModuleDataException.java,v 1.6 2005/08/19 04:11:53 m31 Exp $
 *
 * This file is part of the project "Hilbert II" - http://www.qedeq.org
 *
 * Copyright 2000-2005,  Michael Meyling <mime@qedeq.org>.
 *
 * "Hilbert II" is free software; you can redistribute
 * it and/or modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 */

package org.qedeq.kernel.bo.control;



/**
 * Data validation error. Occurs if a set or add method leads to wrong or inconsistent data.
 *
 * @version $Revision: 1.6 $
 * @author  Michael Meyling
 */
public class IllegalModuleDataException extends Exception {

    /** Serialization information. */
    private static final long serialVersionUID = 1L;

    /** Error code of this Exception. */
    private final int errorCode;

    /** Error location. */
    private Context context;

    /** Reference location to explain the error. */
    private Context referenceContext;

    /**
     * Constructor.
     *
     * @param   errorCode   Error code of this message.
     * @param   message     Error message.
     * @param   context     Error location.
     * @param   referenceContext  Reference location.
     * @param   cause       Detailed exception information.
     */
    public IllegalModuleDataException(final int errorCode, final String message,
            final Context context, final Context referenceContext, final Exception cause) {
        super(message, cause);
        this.errorCode = errorCode;
        this.context = context;
        this.referenceContext = referenceContext;
    }

    /**
     * Constructor.
     *
     * @param   errorCode   Error code of this message.
     * @param   message     Error message.
     * @param   context     Error location.
     * @param   cause       Detailed exception information.
     */
    public IllegalModuleDataException(final int errorCode, final String message,
            final Context context, final Exception cause) {
        super(message, cause);
        this.errorCode = errorCode;
        this.context = context;
        this.referenceContext = null;
    }

    /**
     * Get context information about error location.
     *
     * @return  Error location context.
     */
    public final Context getContext() {
        return context;
    }

    /**
     * Get additional context information about another associated location.
     *
     * @return  Additional error location context.
     */
    public final Context getReferenceContext() {
        return referenceContext;
    }

    /**
     * Get error code.
     *
     * @return  Error code.
     */
    public final int getErrorCode() {
        return errorCode;
    }

}
