java/alt2xml-bin/src/cz/frantovo/alt2xml/SAXTovarna.java
changeset 15 b890783e4043
parent 11 aaf6648af0aa
     1.1 --- a/java/alt2xml-bin/src/cz/frantovo/alt2xml/SAXTovarna.java	Thu Jun 05 23:45:24 2014 +0200
     1.2 +++ b/java/alt2xml-bin/src/cz/frantovo/alt2xml/SAXTovarna.java	Sat Jun 07 10:38:31 2014 +0200
     1.3 @@ -18,6 +18,9 @@
     1.4  package cz.frantovo.alt2xml;
     1.5  
     1.6  import cz.frantovo.alt2xml.vstup.SuperReader;
     1.7 +import java.util.Deque;
     1.8 +import java.util.LinkedList;
     1.9 +import java.util.ServiceLoader;
    1.10  import javax.xml.parsers.ParserConfigurationException;
    1.11  import javax.xml.parsers.SAXParser;
    1.12  import javax.xml.parsers.SAXParserFactory;
    1.13 @@ -31,11 +34,31 @@
    1.14   *
    1.15   * @author fiki
    1.16   */
    1.17 -public class SAXTovarna extends SAXParserFactory {
    1.18 +public class SAXTovarna extends SAXParserFactory implements ReaderFinder {
    1.19 +
    1.20 +	private final Deque<Alt2XmlReaderFactory> readerFactories = new LinkedList();
    1.21 +
    1.22 +	public SAXTovarna() {
    1.23 +		super();
    1.24 +		for (Alt2XmlReaderFactory f : ServiceLoader.load(Alt2XmlReaderFactory.class)) {
    1.25 +			readerFactories.add(f);
    1.26 +		}
    1.27 +
    1.28 +	}
    1.29 +
    1.30 +	@Override
    1.31 +	public XMLReader findReader(String systemId) throws SAXException {
    1.32 +		for (Alt2XmlReaderFactory f : readerFactories) {
    1.33 +			if (f.canRead(systemId)) {
    1.34 +				return f.getReader();
    1.35 +			}
    1.36 +		}
    1.37 +		throw new SAXException("Iterated over " + readerFactories.size() + " and was unable to find XMLReader for SystemId: " + systemId);
    1.38 +	}
    1.39  
    1.40  	@Override
    1.41  	public SAXParser newSAXParser() throws ParserConfigurationException, SAXException {
    1.42 -		return new AltSAXParser(new SuperReader());
    1.43 +		return new AltSAXParser(new SuperReader(this));
    1.44  	}
    1.45  
    1.46  	@Override
    1.47 @@ -87,4 +110,4 @@
    1.48  			return xmlReader.getProperty(name);
    1.49  		}
    1.50  	}
    1.51 -}
    1.52 \ No newline at end of file
    1.53 +}