package dbxml.xtint;
import java.io.*;
import org.xml.sax.*;
import com.jclark.xsl.sax.*;
import dbxml.sax.*;
/**
* Integration of JDBCSAXParser with XT.
*
* This class is based on com.jclark.xsl.sax.Driver.
*/
public class JDBCXSLProcessor {
private static XSLProcessor _xslProcessor;
public static void main(String[] argv) {
if (argv.length != 3) {
System.out.println("Usage: JDBCXSLProcessor dbPropFile xslFile "
+ "outFile");
System.exit(-1);
}
String dbPropFile = argv[0];
String xslFile = argv[1];
String outFile = argv[2];
String xmlParserClassName = "dbxml.sax.JDBCSAXParser";
String xslParserClassName = "com.jclark.xml.sax.CommentDriver";
_xslProcessor
= createXSLProcessor(xmlParserClassName, xslParserClassName);
OutputMethodHandlerImpl outputMethodHandler
= new OutputMethodHandlerImpl(_xslProcessor);
_xslProcessor.setOutputMethodHandler(outputMethodHandler);
outputMethodHandler.setDestination(new FileDestination(outFile));
try {
InputSource dbis
= JDBCSAXUtil.setupSourceFromProperties(dbPropFile);
transform(_xslProcessor,
Driver.fileInputSource(new File(xslFile)), dbis);
} catch (IOException ex1) {
System.out.println(ex1);
} catch (ClassNotFoundException ex3) {
System.out.println(ex3);
}
}
static private XSLProcessor createXSLProcessor(String xmlParserClassName,
String xslParserClassName) {
XSLProcessor xslProcessor = null;
try {
Parser xmlParser
= (Parser)Class.forName(xmlParserClassName).newInstance();
Parser xslParser
= (Parser)Class.forName(xslParserClassName).newInstance();
if ((xmlParser == null) || (xslParser == null)) {
return null;
}
xslProcessor = new XSLProcessorImpl();
xslProcessor.setParser(xmlParser, xslParser);
} catch (ClassNotFoundException ex1) {
System.out.println(ex1);
} catch (InstantiationException ex2) {
System.out.println(ex2);
} catch (IllegalAccessException ex3) {
System.out.println(ex3);
}
return xslProcessor;
}
//=====================================================================
// Following method copied from com.jclark.xsl.sax.Driver becuase they
// have package access there.
static boolean transform(XSLProcessor xsl,
InputSource stylesheetSource,
InputSource inputSource) {
try {
xsl.loadStylesheet(stylesheetSource);
xsl.parse(inputSource);
return true;
}
catch (SAXParseException e) {
printSAXParseException(e);
}
catch (SAXException e) {
System.err.println(e.getMessage());
}
catch (IOException e) {
System.err.println(e.toString());
}
return false;
}
static void printSAXParseException(SAXParseException e) {
String systemId = e.getSystemId();
int lineNumber = e.getLineNumber();
if (systemId != null)
System.err.print(systemId + ":");
if (lineNumber >= 0)
System.err.print(lineNumber + ":");
if (systemId != null || lineNumber >= 0)
System.err.print(" ");
System.err.println(e.getMessage());
}
}