package dbj.odmg; import COM.POET.odmg.*; import COM.POET.odmg.collection.*; import java.io.IOException; import java.io.FileInputStream; import java.util.Properties; import java.util.Enumeration; public class QueryBooks { Database dbase; public QueryBooks (Database db) { dbase = db; } public void queryByTitle (String name) throws ODMGException { String queryStr = "SELECT b FROM BookExtent AS b WHERE b.title_ LIKE $1"; Transaction tx = new Transaction (); tx.begin (); OQLQuery query = new OQLQuery (queryStr); query.bind (name); Object result = query.execute (); if (result instanceof CollectionOfObject) { CollectionOfObject coll = (CollectionOfObject) result; Enumeration e = coll.elements (); while (e.hasMoreElements ()) { Object o = e.nextElement (); System.out.println (o); } System.out.println (coll.size () + " elements selected."); } else { System.out.println (result); System.out.println ("1 element selected."); } tx.abort (); } public void queryByAuthor (String name) throws ODMGException { String queryStr = "SELECT b FROM BookExtent AS b, b.authors_ AS a " + "WHERE a.name_ = $1"; Transaction tx = new Transaction (); tx.begin (); OQLQuery query = new OQLQuery (queryStr); query.bind (name); Object result = query.execute (); if (result instanceof CollectionOfObject) { CollectionOfObject coll = (CollectionOfObject) result; Enumeration e = coll.elements (); while (e.hasMoreElements ()) { Object o = e.nextElement (); System.out.println (o); } System.out.println (coll.size () + " elements selected."); } else { System.out.println (result); System.out.println ("1 element selected."); } tx.abort (); } public static void main (String args[]) throws IOException { Properties props = new Properties (); props.load (new FileInputStream ("dbj.properties")); if (args.length != 2) { System.out.println ("usage: dbj.odmg.QueryBooks author|title predicate"); System.exit (1); } try { Database db = Database.open (props.getProperty ("odmg.database"), Database.openReadOnly); QueryBooks app = new QueryBooks (db); if (args[0].equals ("title")) app.queryByTitle (args[1]); else if (args[0].equals ("author")) app.queryByAuthor (args[1]); } catch (ODMGException exc) { exc.printStackTrace (); } } }