package org.himinbi.templ;

import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;

import java.io.InputStream;
import java.io.FileReader;
import java.io.FileNotFoundException;

import org.xml.sax.ext.EntityResolver2;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class DTDEntityResolver implements EntityResolver2 {
    static Logger log = Logger.getLogger(DTDEntityResolver.class);

    String dtdFilename;

    public DTDEntityResolver(String dtdFilename) {
        this.dtdFilename = dtdFilename;
    }

    static {
        // BasicConfigurator.configure(); // initialize log4j
    }

    public InputSource getExternalSubset(String name, String baseURI) throws SAXException {
        log.debug("Loading Subset: " + name + " : " + baseURI);
        try {
            InputStream source = ClassLoader.getSystemClassLoader().getResourceAsStream(dtdFilename);
            if(source != null) {
                return new InputSource(source);
            } else {
                return new InputSource(new FileReader(dtdFilename));
            }
        } catch(FileNotFoundException fnfe) {
            log.error(fnfe);
        }
        return null;
    }

    public InputSource resolveEntity(String publicId, String systemId) {
        log.debug("Entity: " + publicId + " : " + systemId);
        return null;
    }

    public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
        throws SAXException {
        log.debug("Entity: " + name + ": " + baseURI + " [" + publicId + " : " + systemId + "]");
        return null;
    }
}