package dbxml.xqlint; import java.io.IOException; import org.w3c.dom.Document; import de.gmd.ipsi.xql.*; import de.gmd.ipsi.domutil.*; import dbxml.sax.*; import dbxml.dom.JDBCDOMParser; import dbxml.util.IOUtils; /** * A XQL shell for demonstrating integration of JDBCDOMParser * with XQL processor. * It uses the XQL parser from GMD-IPSI. * * @author Ramnivas Laddad */ public class JDBCXQLProcessor { /** * Create a XQL shell for given DOM document object. * Creats shell that prompt user for a query and then prints the result * of that query. The shell exits when user types "quit". * This method works with any DOM document -- not just that created * by the JDBCDOMParser * * @param document a DOM document object */ public static void processQueries(Document document) { System.out.println("XQL-Database shell: " + "Type * to see the full document, quit to exit"); try { XMLWriter out = new XMLWriter(System.out, "ISO-8859-1"); while (true) { try { String command = IOUtils.readInput("XQL Query>> "); if (command.equals("quit")) { break; } else if (command == null || command.length() == 0) { continue; } XQL.execute(command, document, out); } catch (XQLException ex1) { System.out.println("Invalid query"); continue; } } } catch (IOException ex2) { } } /** * The main method that creates a DOM document for information in * its argument and starts a XQL shell with it. * * @param argv argument to the program. The valid argument is name * of property file describing the JDBC input source. */ public static void main(String[] argv) { if (argv.length != 1) { System.out.println("Usage: java " + "dbxml.xqlint.JDBCXQLProcessor dbPropFile"); System.exit(-1); } Document document = null; try { JDBCInputSource inputSource = JDBCSAXUtil.setupSourceFromProperties(argv[0]); document = JDBCDOMParser.createDocument(inputSource); } catch (Exception ex) { System.out.println("Failed to create database source"); System.exit(-1); } processQueries(document); } }