001 /*
002 * Copyright (c) 2009 The JOMC Project
003 * Copyright (c) 2005 Christian Schulte <cs@jomc.org>
004 * All rights reserved.
005 *
006 * Redistribution and use in source and binary forms, with or without
007 * modification, are permitted provided that the following conditions
008 * are met:
009 *
010 * o Redistributions of source code must retain the above copyright
011 * notice, this list of conditions and the following disclaimer.
012 *
013 * o Redistributions in binary form must reproduce the above copyright
014 * notice, this list of conditions and the following disclaimer in
015 * the documentation and/or other materials provided with the
016 * distribution.
017 *
018 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS"
019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR
022 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
027 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
028 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029 *
030 * $Id: ModelExceptionErrorHandler.java 509 2009-09-21 13:54:49Z schulte2005 $
031 *
032 */
033 package org.jomc.model;
034
035 import java.util.LinkedList;
036 import java.util.List;
037 import java.util.logging.Level;
038 import org.xml.sax.ErrorHandler;
039 import org.xml.sax.SAXException;
040 import org.xml.sax.SAXParseException;
041
042 /**
043 * {@code ErrorHander} collecting {@code ModelException.Detail}s.
044 *
045 * @author <a href="mailto:cs@jomc.org">Christian Schulte</a>
046 * @version $Id: ModelExceptionErrorHandler.java 509 2009-09-21 13:54:49Z schulte2005 $
047 *
048 * @see #getDetails()
049 */
050 final class ModelExceptionErrorHandler implements ErrorHandler
051 {
052
053 /** The details of the instance. */
054 private final List<ModelException.Detail> details = new LinkedList<ModelException.Detail>();
055
056 /** Creates a new {@code ModelExceptionErrorHandler} instance. */
057 ModelExceptionErrorHandler()
058 {
059 super();
060 }
061
062 /**
063 * Gets the details of the instance.
064 *
065 * @return The details of the instance.
066 */
067 public List<ModelException.Detail> getDetails()
068 {
069 return this.details;
070 }
071
072 public void warning( final SAXParseException exception ) throws SAXException
073 {
074 if ( exception.getMessage() != null )
075 {
076 this.getDetails().add( new ModelException.Detail( Level.WARNING, exception.getMessage() ) );
077 }
078 }
079
080 public void error( final SAXParseException exception ) throws SAXException
081 {
082 if ( exception.getMessage() != null )
083 {
084 this.getDetails().add( new ModelException.Detail( Level.SEVERE, exception.getMessage() ) );
085 }
086
087 throw exception;
088 }
089
090 public void fatalError( final SAXParseException exception ) throws SAXException
091 {
092 if ( exception.getMessage() != null )
093 {
094 this.getDetails().add( new ModelException.Detail( Level.SEVERE, exception.getMessage() ) );
095 }
096
097 throw exception;
098 }
099
100 }