001 /* ========================================================================
002 * JCommon : a free general purpose class library for the Java(tm) platform
003 * ========================================================================
004 *
005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jcommon/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * ------------------------------
028 * ElementDefinitionException.java
029 * ------------------------------
030 * (C)opyright 2002-2004, by Object Refinery Limited.
031 *
032 * $Id: ElementDefinitionException.java,v 1.3 2005/10/18 13:25:44 mungady Exp $
033 *
034 * Changes
035 * -------
036 * 24-Apr-2002 : Initial version
037 * 31-Aug-2002 : Documentation; changed PrintStackTrace for better tracing
038 * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon
039 */
040 package org.jfree.xml;
041
042 import java.io.PrintStream;
043 import java.io.PrintWriter;
044
045 import org.xml.sax.Locator;
046
047 /**
048 * A reportdefinition exception is thrown when the parsing of the report definition
049 * failed because invalid or missing attributes are encountered.
050 *
051 * @author Thomas Morgner
052 */
053 public class ElementDefinitionException extends ParseException {
054
055 /** The parent exception. */
056 private Exception parent;
057
058 /**
059 * Creates a new ElementDefinitionException without an parent exception and with the given
060 * message as explanation.
061 *
062 * @param message a detail message explaining the reasons for this exception.
063 */
064 public ElementDefinitionException(final String message) {
065 super(message);
066 }
067
068 /**
069 * Creates a new ElementDefinitionException with an parent exception and with the parents
070 * message as explaination.
071 *
072 * @param e the parentException that caused this exception
073 */
074 public ElementDefinitionException(final Exception e) {
075 this(e, e.getMessage());
076 }
077
078 /**
079 * Creates a new ElementDefinitionException with an parent exception and with the given
080 * message as explaination.
081 *
082 * @param e the parentException that caused this exception
083 * @param message a detail message explaining the reasons for this exception
084 */
085 public ElementDefinitionException(final Exception e, final String message) {
086 this(message);
087 this.parent = e;
088 }
089
090 /**
091 * Creates a new ParseException with the given root exception
092 * and the locator.
093 *
094 * @param e the exception
095 * @param locator the locator of the parser
096 */
097 public ElementDefinitionException(final Exception e, final Locator locator) {
098 super(e, locator);
099 this.parent = e;
100 }
101
102 /**
103 * Creates a new ParseException with the given message and the locator.
104 *
105 * @param message the message
106 * @param locator the locator of the parser
107 */
108 public ElementDefinitionException(final String message, final Locator locator) {
109 super(message, locator);
110 }
111
112 /**
113 * Creates a new ParseException with the given message, root exception
114 * and the locator.
115 *
116 * @param s the message
117 * @param e the exception
118 * @param locator the locator of the parser
119 */
120 public ElementDefinitionException(final String s, final Exception e, final Locator locator) {
121 super(s, e, locator);
122 this.parent = e;
123 }
124
125 /**
126 * Returns the parent exception.
127 *
128 * @return the parent exception.
129 */
130 public Exception getParentException() {
131 return this.parent;
132 }
133
134 /**
135 * Prints the stack trace. If an inner exception exists, use
136 * its stack trace.
137 *
138 * @param s the stream for writing to.
139 */
140 public void printStackTrace(final PrintStream s) {
141 super.printStackTrace(s);
142 if (this.parent != null) {
143 s.print("ParentException:");
144 this.parent.printStackTrace(s);
145 }
146 else {
147 s.println("ParentException: <null>");
148 }
149 }
150
151 /**
152 * Prints the stack trace. If an inner exception exists, use
153 * its stack trace.
154 *
155 * @param s the stream for writing to.
156 */
157 public void printStackTrace(final PrintWriter s) {
158 super.printStackTrace(s);
159 if (this.parent != null) {
160 s.print("ParentException:");
161 this.parent.printStackTrace(s);
162 }
163 else {
164 s.println("ParentException: <null>");
165 }
166 }
167
168 }