KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > configuration > ConfigurationReader


1 /*
2  * $Id: ConfigurationReader.java,v 1.8.2.3 2003/02/25 10:36:01 jeremias Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.configuration;
52
53 // SAX
54
import org.xml.sax.XMLReader JavaDoc;
55 import org.xml.sax.SAXException JavaDoc;
56 import org.xml.sax.InputSource JavaDoc;
57
58 // Java
59
import java.io.IOException JavaDoc;
60 import javax.xml.parsers.*;
61
62 // FOP
63
import org.apache.fop.messaging.MessageHandler;
64 import org.apache.fop.apps.FOPException;
65
66 /**
67  * Entry class for reading configuration from file and creating a configuration
68  * class. Example of typical use:
69  *
70  * <pre>ConfigurationReader reader = new ConfigurationReader ("config.xml","standard");
71  * try {
72  * reader.start();
73  * }
74  * catch (org.apache.fop.apps.FOPException error) {
75  * reader.dumpError(error);
76  * }</pre>
77  *
78  * Once the configuration has been setup, the information can be accessed with
79  * the methods of StandardConfiguration.
80  *
81  * @version $Revision: 1.8.2.3 $
82  */

83 public class ConfigurationReader {
84
85     /**
86      * show a full dump on error
87      */

88     private static boolean errorDump = false;
89
90     /**
91      * inputsource for configuration file
92      */

93     private InputSource JavaDoc filename;
94
95
96     /**
97      * creates a configuration reader
98      * @param filename the file which contains the configuration information
99      */

100     public ConfigurationReader(InputSource JavaDoc filename) {
101         this.filename = filename;
102     }
103
104     /**
105      * intantiates parser and starts parsing of config file
106      */

107     public void start() throws FOPException {
108         XMLReader JavaDoc parser = createParser();
109
110         ConfigurationParser configurationParser = new ConfigurationParser();
111         parser.setContentHandler(configurationParser);
112
113         try {
114             parser.parse(filename);
115         } catch (SAXException JavaDoc e) {
116             if (e.getException() instanceof FOPException) {
117                 throw (FOPException)e.getException();
118             } else {
119                 throw new FOPException(e);
120             }
121         } catch (IOException JavaDoc e) {
122             throw new FOPException(e);
123         }
124     }
125
126     /**
127      * creates a SAX parser
128      *
129      * @return the created SAX parser
130      */

131     public static XMLReader JavaDoc createParser() throws FOPException {
132         try {
133             SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance();
134             spf.setNamespaceAware(true);
135             XMLReader JavaDoc xmlReader = spf.newSAXParser().getXMLReader();
136             MessageHandler.logln("Using " + xmlReader.getClass().getName() + " as SAX2 Parser");
137             return xmlReader;
138         } catch (javax.xml.parsers.ParserConfigurationException JavaDoc e) {
139           throw new FOPException(e);
140         } catch (org.xml.sax.SAXException JavaDoc e) {
141           throw new FOPException( e);
142         }
143     }
144
145     /**
146      * Dumps an error
147      */

148     public void dumpError(Exception JavaDoc e) {
149         if (errorDump) {
150             if (e instanceof SAXException JavaDoc) {
151                 e.printStackTrace();
152                 if (((SAXException JavaDoc)e).getException() != null) {
153                     ((SAXException JavaDoc)e).getException().printStackTrace();
154                 }
155             } else {
156                 e.printStackTrace();
157             }
158         }
159     }
160
161     /**
162      * long or short error messages
163      *
164      */

165     public void setDumpError(boolean dumpError) {
166         errorDump = dumpError;
167     }
168
169 }
170
Popular Tags