View Javadoc

1   /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">http://www.qedeq.org
2    *
3    * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13   * GNU General Public License for more details.
14   */
15  
16  package org.qedeq.kernel.bo.logic.common;
17  
18  import org.qedeq.kernel.se.base.list.Element;
19  import org.qedeq.kernel.se.common.ModuleContext;
20  import org.qedeq.kernel.se.common.ModuleDataException;
21  
22  /**
23   * This is the basis for an exception for logical errors within a QEDEQ module.
24   *
25   * @author  Michael Meyling
26   */
27  public abstract class LogicalCheckException extends ModuleDataException {
28  
29      /**
30       * This element causes the error.
31       */
32      private final Element element;
33  
34      /**
35       * Constructs an exception.
36       *
37       * @param   errorCode           ErrorCode of this message.
38       * @param   message             What is the problem.
39       * @param   element             Problematic line.
40       * @param   context             Error location.
41       * @param   referenceContext    Reference location.
42       */
43      public LogicalCheckException(final int errorCode, final String message, final Element element,
44              final ModuleContext context, final ModuleContext referenceContext) {
45          super(errorCode, message, context, referenceContext);
46          this.element = element;
47      }
48  
49      /**
50       * Constructs an exception.
51       *
52       * @param  errorCode        ErrorCode of this message.
53       * @param  message          What is the problem.
54       * @param  element          Problematic formula.
55       * @param  context          Error location.
56       */
57      public LogicalCheckException(final int errorCode, final String message,
58              final Element element, final ModuleContext context) {
59          super(errorCode, message, context);
60          this.element = element;
61      }
62  
63      /**
64       * Constructs an exception.
65       *
66       * @param  errorCode        ErrorCode of this message.
67       * @param  message          What is the problem.
68       * @param  context          Error location.
69       */
70      public LogicalCheckException(final int errorCode, final String message,
71              final ModuleContext context) {
72          super(errorCode, message, context);
73          this.element = null;
74      }
75  
76      /**
77       * Get the problematic element. Might be <code>null</code>.
78       *
79       * @return  Element.
80       */
81      public final Element getElement() {
82          return this.element;
83      }
84  
85      /**
86       * Returns a short description of this throwable.
87       * If this <code>Throwable</code> object was created with a non-null detail
88       * message string, then the result is the concatenation of five strings:
89       * <ul>
90       * <li>The name of the actual class of this object
91       * <li>": " (a colon and a space)
92       * <li>The result of the {@link Throwable#getMessage()} method for this object
93       * <li>"\n" (a newline)
94       * <li>A string representation of the {@link #getElement()} method for this object
95       *     (might be empty).
96       * </ul>
97       *
98       * @return a string representation of this throwable.
99       */
100     public final String toString() {
101         return super.toString() + "\n"
102             + (getElement() != null ? getElement().toString() : "");
103     }
104 
105 }