import java.net.*; import java.io.*; import java.sql.Connection; import oracle.xml.parser.v2.XSLStylesheet; import URLUtils; import ConnectionFactory; import XMLDocumentSplitter; public class XMLLoader { private static String dateFormat = null; private static String docElement = null; private static Connection conn = null; private static String connName = "default"; private static URL file; private static URL trans; private static boolean ignoreErrs = false; private static XSLStylesheet sheet = null; public static void main( String[] args ) throws Exception { try { processArgs(args); conn = ConnectionFactory.getConnection(connName); if (trans != null) { try { sheet = new XSLStylesheet(trans,trans); } catch (Exception xe) { System.err.println("Error loading stylesheet " + trans); System.exit(1); } } // Create a Multi-table Insert Handler MultiTableInsertHandler mtih = new MultiTableInsertHandler(conn,sheet,ignoreErrs); // Set the date format for the insert handler (null is ok) mtih.setDateFormat(dateFormat); // Use an XMLDocumentSplitter to handle large documents, passing // MultiTableInsertHandler to be used for each "SubDocument" found XMLDocumentSplitter splitter = new XMLDocumentSplitter( mtih ); // Process the input document, splitting it into subdocs to be // handled based on the specified docElement. splitter.split(file,docElement); System.out.println("Processed " + mtih.getItemsHandled() + " Documents"); conn.close(); } catch(Exception ex) { System.err.println("Error: " + ex.toString()); } } private static void processArgs(String[] arg) throws Exception { int args = arg.length; for (int q=0; q<args; q++) { String cur = arg[q]; if (cur.equals("-connName")) { connName = q!=args ? arg[q+1] : null; } if (cur.equals("-docTag")) { docElement = q!=args ? arg[q+1] : null; } if (cur.equals("-transform")) { trans = q!=args ? URLUtils.newURL(arg[q+1]) : null; } if (cur.equals("-file")) { file = q!=args ? URLUtils.newURL(arg[q+1]) : null; } if (cur.equals("-ignoreErrors")) { ignoreErrs = true; } if (cur.equals("-dateFormat")) { dateFormat = q!=args ? arg[q+1] : null; } } if (file == null) { System.err.println("usage: XMLLoader -file filename"); System.err.println("[-connName connectionName]" ); System.err.println("[-docTag tagname]" ); System.err.println("[-ignoreErrors]" ); System.err.println("[-transform stylesheet.xsl]"); System.err.println("[-dateFormat yyyy-MM-d]"); System.exit(1); } } } |