001    package com.thaiopensource.validate.schematron;
002    
003    import javax.xml.transform.TransformerConfigurationException;
004    import javax.xml.transform.TransformerFactoryConfigurationError;
005    import javax.xml.transform.sax.SAXTransformerFactory;
006    
007    import org.apache.log4j.Logger;
008    
009    import com.thaiopensource.validate.IncorrectSchemaException;
010    import com.thaiopensource.validate.Option;
011    import com.thaiopensource.validate.SchemaReader;
012    import com.thaiopensource.validate.SchemaReaderFactory;
013    
014    public abstract class SchematronSchemaReaderFactory implements SchemaReaderFactory {
015      private static final Logger log4j = Logger.getLogger(SchematronSchemaReaderFactory.class);
016    
017      public SchemaReader createSchemaReader(String namespaceUri) {
018        if (namespaceUri.equals(SchemaReaderImpl.SCHEMATRON_URI)) {
019          try {
020            return new SchemaReaderImpl(newTransformerFactory());
021          }
022          catch (TransformerFactoryConfigurationError e) { 
023              log4j.error("TransformerFactoryConfigurationError", e);
024          }
025          catch (IncorrectSchemaException e) { 
026              log4j.error("IncorrectSchemaException", e);
027          }
028          catch (TransformerConfigurationException e) { 
029              log4j.error("TransformerConfigurationException", e);
030          }
031        }
032        return null;
033      }
034    
035      public Option getOption(String uri) {
036        return SchematronProperty.getOption(uri);
037      }
038    
039      public abstract SAXTransformerFactory newTransformerFactory();
040    }