1   /**
2    * Distribution License:
3    * JSword is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU Lesser General Public License, version 2.1 or later
5    * as published by the Free Software Foundation. This program is distributed
6    * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7    * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU Lesser General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *      http://www.gnu.org/copyleft/lgpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * © CrossWire Bible Society, 2005 - 2016
18   *
19   */
20  package org.crosswire.common.xml;
21  
22  import org.xml.sax.ContentHandler;
23  import org.xml.sax.DTDHandler;
24  import org.xml.sax.EntityResolver;
25  import org.xml.sax.ErrorHandler;
26  import org.xml.sax.InputSource;
27  import org.xml.sax.SAXException;
28  import org.xml.sax.XMLReader;
29  
30  /**
31   * A helper to aid people working with a SAXEventProvider.
32   * 
33   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
34   * @author Joe Walker
35   */
36  /**
37   *
38   *
39   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
40   * @author DM Smith
41   */
42  /**
43   *
44   *
45   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
46   * @author DM Smith
47   */
48  public class SAXEventProviderXMLReader implements XMLReader {
49      /**
50       * Constructor SAXEventProviderXMLReader.
51       * 
52       * @param docIn the document provided as SAX events
53       */
54      public SAXEventProviderXMLReader(SAXEventProvider docIn) {
55          this.docIn = docIn;
56      }
57  
58      /* (non-Javadoc)
59       * @see org.xml.sax.XMLReader#getFeature(java.lang.String)
60       */
61      public boolean getFeature(String arg0) {
62          return false;
63      }
64  
65      /* (non-Javadoc)
66       * @see org.xml.sax.XMLReader#setFeature(java.lang.String, boolean)
67       */
68      public void setFeature(String arg0, boolean arg1) {
69      }
70  
71      /* (non-Javadoc)
72       * @see org.xml.sax.XMLReader#getProperty(java.lang.String)
73       */
74      public Object getProperty(String arg0) {
75          return null;
76      }
77  
78      /* (non-Javadoc)
79       * @see org.xml.sax.XMLReader#setProperty(java.lang.String, java.lang.Object)
80       */
81      public void setProperty(String arg0, Object arg1) {
82      }
83  
84      /* (non-Javadoc)
85       * @see org.xml.sax.XMLReader#setEntityResolver(org.xml.sax.EntityResolver)
86       */
87      public void setEntityResolver(EntityResolver entities) {
88          this.entities = entities;
89      }
90  
91      /* (non-Javadoc)
92       * @see org.xml.sax.XMLReader#getEntityResolver()
93       */
94      public EntityResolver getEntityResolver() {
95          return entities;
96      }
97  
98      /* (non-Javadoc)
99       * @see org.xml.sax.XMLReader#setDTDHandler(org.xml.sax.DTDHandler)
100      */
101     public void setDTDHandler(DTDHandler dtds) {
102         this.dtds = dtds;
103     }
104 
105     /* (non-Javadoc)
106      * @see org.xml.sax.XMLReader#getDTDHandler()
107      */
108     public DTDHandler getDTDHandler() {
109         return dtds;
110     }
111 
112     /* (non-Javadoc)
113      * @see org.xml.sax.XMLReader#setContentHandler(org.xml.sax.ContentHandler)
114      */
115     public void setContentHandler(ContentHandler content) {
116         this.content = content;
117     }
118 
119     /* (non-Javadoc)
120      * @see org.xml.sax.XMLReader#getContentHandler()
121      */
122     public ContentHandler getContentHandler() {
123         return content;
124     }
125 
126     /* (non-Javadoc)
127      * @see org.xml.sax.XMLReader#setErrorHandler(org.xml.sax.ErrorHandler)
128      */
129     public void setErrorHandler(ErrorHandler errors) {
130         this.errors = errors;
131     }
132 
133     /* (non-Javadoc)
134      * @see org.xml.sax.XMLReader#getErrorHandler()
135      */
136     public ErrorHandler getErrorHandler() {
137         return errors;
138     }
139 
140     /* (non-Javadoc)
141      * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
142      */
143     public void parse(InputSource is) throws SAXException {
144         if (!(is instanceof SAXEventProviderInputSource)) {
145             throw new SAXException("SAXEventProviderInputSource required");
146         }
147 
148         docIn.provideSAXEvents(getContentHandler());
149     }
150 
151     /* (non-Javadoc)
152      * @see org.xml.sax.XMLReader#parse(java.lang.String)
153      */
154     public void parse(String arg0) throws SAXException {
155         throw new SAXException("SAXEventProviderInputSource required");
156     }
157 
158     private SAXEventProvider docIn;
159     private ErrorHandler errors;
160     private ContentHandler content;
161     private DTDHandler dtds;
162     private EntityResolver entities;
163 }
164