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

org.qedeq.kernel.se.common.ModuleDataException Maven / Gradle / Ivy

/* This file is part of the project "Hilbert II" - http://www.qedeq.org
 *
 * Copyright 2000-2013,  Michael Meyling .
 *
 * "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.se.common;

import org.qedeq.base.utility.EqualsUtility;

/**
 * Data validation error for a QEDEQ module. An error has always a reference to its
 * location. Maybe an additional reference for another location is provided.
 * 
* An error code, message and location should fix a certain data validation error, so only these * informations are used for {@link #hashCode()} and {@link #equals(Object)}. * * @author Michael Meyling */ public abstract class ModuleDataException extends QedeqException { /** Error location. */ private final ModuleContext context; /** Reference location to explain the error. */ private final ModuleContext 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 ModuleDataException(final int errorCode, final String message, final ModuleContext context, final ModuleContext referenceContext, final Exception cause) { super(errorCode, message, cause); // use copy constructor this.context = (context == null ? null : new ModuleContext(context)); this.referenceContext = (referenceContext == null ? null : new ModuleContext(referenceContext)); } /** * Constructor. * * @param errorCode Error code of this message. * @param message Error message. * @param context Error location. * @param referenceContext Reference location. */ public ModuleDataException(final int errorCode, final String message, final ModuleContext context, final ModuleContext referenceContext) { super(errorCode, message); // use copy constructor this.context = (context == null ? null : new ModuleContext(context)); this.referenceContext = (referenceContext == null ? null : new ModuleContext(referenceContext)); } /** * Constructor. * * @param errorCode Error code of this message. * @param message Error message. * @param context Error location. * @param cause Detailed exception information. */ public ModuleDataException(final int errorCode, final String message, final ModuleContext context, final Exception cause) { super(errorCode, message, cause); // use copy constructor this.context = (context == null ? null : new ModuleContext(context)); this.referenceContext = null; } /** * Constructor. Copies module context, so original can be changed. * * @param errorCode Error code of this message. * @param message Error message. * @param context Error location. */ public ModuleDataException(final int errorCode, final String message, final ModuleContext context) { super(errorCode, message); // use copy constructor this.context = (context == null ? null : new ModuleContext(context)); this.referenceContext = null; } /** * Get context information about error location. * * @return Error location context. */ public final ModuleContext getContext() { return context; } /** * Get additional context information about another associated location. * * @return Additional error location context. */ public final ModuleContext getReferenceContext() { return referenceContext; } public final int hashCode() { return getErrorCode() ^ context.hashCode() ^ getMessage().hashCode(); } public final boolean equals(final Object obj) { if (!(obj instanceof ModuleDataException)) { return false; } final ModuleDataException other = (ModuleDataException) obj; return (getErrorCode() == other.getErrorCode()) && EqualsUtility.equals(getMessage(), other.getMessage()) && EqualsUtility.equals(context, other.context); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy