001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: CollectingErrorHandler.java,v 1.3 2007/03/27 21:59:43 mlipp Exp $
021: *
022: * $Log: CollectingErrorHandler.java,v $
023: * Revision 1.3 2007/03/27 21:59:43 mlipp
024: * Fixed lots of checkstyle warnings.
025: *
026: * Revision 1.2 2006/09/29 12:32:11 drmlipp
027: * Consistently using WfMOpen as projct name now.
028: *
029: * Revision 1.1.1.1 2003/06/30 20:05:12 drmlipp
030: * Initial import
031: *
032: * Revision 1.4 2003/06/27 08:51:46 lipp
033: * Fixed copyright/license information.
034: *
035: * Revision 1.3 2003/04/25 14:50:59 lipp
036: * Fixed javadoc errors and warnings.
037: *
038: * Revision 1.2 2002/02/01 15:06:04 lipp
039: * Added line number.
040: *
041: * Revision 1.1 2002/02/01 14:30:36 lipp
042: * Added error handling for process definition parsing.
043: *
044: */
045: package de.danet.an.util.sax;
046:
047: import java.util.List;
048: import java.util.ArrayList;
049:
050: import org.xml.sax.ErrorHandler;
051: import org.xml.sax.SAXException;
052: import org.xml.sax.SAXParseException;
053:
054: /**
055: * This class collects errors while parsing documents.
056: */
057: public class CollectingErrorHandler implements ErrorHandler {
058:
059: private List warnings = new ArrayList();
060: private List errors = new ArrayList();
061: private List fatals = new ArrayList();
062: private List messages = new ArrayList();
063:
064: /**
065: * Return all accumulated warnings.
066: * @return list with warning messages (may be an empty list).
067: */
068: public List getWarnings() {
069: return warnings;
070: }
071:
072: /**
073: * Return all accumulated errors.
074: * @return list with error messages (may be an empty list).
075: */
076: public List getErrors() {
077: return errors;
078: }
079:
080: /**
081: * Return all accumulated fatal errors.
082: * @return list with fatal error messages (may be an empty list).
083: */
084: public List getFatalErrors() {
085: return fatals;
086: }
087:
088: /**
089: * Return all accumulated messages, i.e. warnings, errors and
090: * fatal errors.
091: * @return list with error messages (may be an empty list).
092: */
093: public List getMessages() {
094: return messages;
095: }
096:
097: private String layoutMessage(SAXParseException exc) {
098: return Integer.toString(exc.getLineNumber()) + ": "
099: + exc.getMessage();
100: }
101:
102: /**
103: * Handles parser warnings.
104: * @param exc Parser exception
105: */
106: public void warning(SAXParseException exc) {
107: String s = layoutMessage(exc);
108: warnings.add(s);
109: messages.add(s);
110: }
111:
112: /**
113: * Handles parser errors.
114: * @param exc Parser exception
115: * @throws SAXException Propagation of given SAXParseException
116: */
117: public void error(SAXParseException exc) throws SAXException {
118: String s = layoutMessage(exc);
119: errors.add(s);
120: messages.add(s);
121: }
122:
123: /**
124: * Handles fatal parser errors.
125: * @param exc Parser exception
126: * @throws SAXException Propagation of given SAXParseException
127: */
128: public void fatalError(SAXParseException exc) throws SAXException {
129: String s = layoutMessage(exc);
130: fatals.add(s);
131: messages.add(s);
132: }
133:
134: /**
135: * Append a message with the given level. This method may be used to
136: * add a message from outside the immediate scope of the parser, e.g.
137: * from a file not found, and handle it like a parse exception.
138: * @param severity the severity of the message, one of
139: * {@link #WARNING <code>WARNING</code>},
140: * {@link #ERROR <code>ERROR</code>} or
141: * {@link #FATAL_ERROR <code>FATAL_ERROR</code>}
142: * @param message the message.
143: */
144: public void appendMessage(int severity, String message) {
145: switch (severity) {
146: case WARNING:
147: warnings.add(message);
148: break;
149: case ERROR:
150: errors.add(message);
151: break;
152: case FATAL_ERROR:
153: fatals.add(message);
154: break;
155: }
156: messages.add(message);
157: }
158:
159: /** Indicates message severity "warning" when calling
160: * {@link #appendMessage <code>appendMessage</code>}. */
161: public static final int WARNING = 1;
162: /** Indicates message severity "error" when calling
163: * {@link #appendMessage <code>appendMessage</code>}. */
164: public static final int ERROR = 2;
165: /** Indicates message severity "fatal error" when calling
166: * {@link #appendMessage <code>appendMessage</code>}. */
167: public static final int FATAL_ERROR = 3;
168: }
|