1 package jdo; 2 3 4 import myapp.*; 5 import java.util.Hashtable ; 6 import java.util.Vector ; 7 import java.util.Enumeration ; 8 import java.io.PrintWriter ; 9 import java.io.InputStreamReader ; 10 import java.io.Serializable ; 11 import java.sql.Connection ; 12 import java.sql.PreparedStatement ; 13 import java.sql.ResultSet ; 14 import java.sql.SQLException ; 15 import java.sql.DriverManager ; 16 import org.xml.sax.ContentHandler ; 17 import org.exolab.castor.jdo.JDO; 18 import org.exolab.castor.jdo.Database; 19 import org.exolab.castor.jdo.OQLQuery; 20 import org.exolab.castor.jdo.QueryResults; 21 import org.exolab.castor.util.Logger; 22 import org.exolab.castor.xml.Marshaller; 23 import org.exolab.castor.mapping.Mapping; 24 import org.apache.xml.serialize.*; 25 26 27 35 public class Test 36 { 37 38 public static final String DatabaseFile = "../../src/de/nava/informa/impl/jdo/database.xml"; 39 40 public static final String MappingFile = "../../src/de/nava/informa/impl/jdo/mapping.xml"; 41 42 public static final String Usage = "Usage: example jdo"; 43 44 45 private Mapping _mapping; 46 47 48 private JDO _jdo; 49 50 51 public static void main( String [] args ) 52 { 53 PrintWriter writer; 54 Test test; 55 56 writer = new Logger( System.out ).setPrefix( "test" ); 57 try { 58 test = new Test( writer ); 59 test.run( writer ); 60 } catch ( Exception except ) { 61 writer.println( except ); 62 except.printStackTrace( writer ); 63 } 64 } 65 66 67 public Test( PrintWriter writer ) 68 throws Exception 69 { 70 _mapping = new Mapping( getClass().getClassLoader() ); 72 _mapping.setLogWriter( writer ); 73 _mapping.loadMapping( getClass().getResource( MappingFile ) ); 74 75 _jdo = new JDO(); 76 _jdo.setLogWriter( writer ); 77 _jdo.setConfiguration( getClass().getResource( DatabaseFile ).toString() ); 78 _jdo.setDatabaseName( "jdotest" ); 79 } 80 81 82 public void run( PrintWriter writer ) 83 throws Exception 84 { 85 Database db; 86 Product product; 87 ProductGroup group; 88 ProductDetail detail; 89 Computer computer; 90 OQLQuery productOql; 91 OQLQuery groupOql; 92 OQLQuery computerOql; 93 QueryResults results; 94 95 db = _jdo.getDatabase(); 96 97 db.begin(); 98 writer.println( "Begin transaction" ); 99 100 productOql = db.getOQLQuery( "SELECT p FROM myapp.Product p WHERE id = $1" ); 103 productOql.bind( 4 ); 104 results = productOql.execute(); 105 while ( results.hasMore() ) { 106 product = (Product) results.next(); 107 writer.println( "Deleting existing product: " + product ); 108 db.remove( product ); 109 } 110 111 computerOql = db.getOQLQuery( "SELECT c FROM myapp.Computer c WHERE id = $1" ); 114 computerOql.bind( 6 ); 115 results = computerOql.execute(); 116 while ( results.hasMore() ) { 117 computer = (Computer) results.next(); 118 writer.println( "Deleting existing computer: " + computer ); 119 db.remove( computer ); 120 } 121 122 groupOql = db.getOQLQuery( "SELECT g FROM myapp.ProductGroup g WHERE id = $1" ); 125 groupOql.bind( 3 ); 126 results = groupOql.execute(); 127 while ( results.hasMore() ) { 128 group = (ProductGroup) results.next(); 129 writer.println( "Deleting existing group: " + group ); 130 db.remove( group ); 131 } 132 133 writer.println( "Transaction checkpoint" ); 136 db.commit(); 137 138 db.begin(); 139 groupOql.bind( 3 ); 142 results = groupOql.execute(); 143 if ( ! results.hasMore() ) { 144 group = new ProductGroup(); 145 group.setId( 3 ); 146 group.setName( "a group" ); 147 db.create( group ); 148 writer.println( "Creating new group: " + group ); 149 } else { 150 group = (ProductGroup) results.next(); 151 writer.println( "Query result: " + group ); 152 } 153 154 productOql.bind( 4 ); 159 results = productOql.execute(); 160 if ( ! results.hasMore() ) { 161 product = new Product(); 162 product.setId( 4 ); 163 product.setName( "some product" ); 164 product.setPrice( 55 ); 165 product.setGroup( group ); 166 detail = new ProductDetail(); 167 detail.setId( 1 ); 168 detail.setName( "one" ); 169 product.addDetail( detail ); 170 detail = new ProductDetail(); 171 detail.setId( 2 ); 172 detail.setName( "two" ); 173 product.addDetail( detail ); 174 writer.println( "Creating new product: " + product ); 175 db.create( product ); 176 } else { 177 writer.println( "Query result: " + results.next() ); 178 } 179 180 computerOql.bind( 6 ); 185 results = computerOql.execute(); 186 if ( ! results.hasMore() ) { 187 computer = new Computer(); 188 computer.setId( 6 ); 189 computer.setCpu( "Pentium" ); 190 computer.setName( "MyPC" ); 191 computer.setPrice( 300 ); 192 computer.setGroup( group ); 193 detail = new ProductDetail(); 194 detail.setId( 4 ); 195 detail.setName( "mouse" ); 196 computer.addDetail( detail ); 197 detail = new ProductDetail(); 198 detail.setId( 5 ); 199 detail.setName( "screen" ); 200 computer.addDetail( detail ); 201 writer.println( "Creating new computer: " + computer ); 202 db.create( computer ); 203 } else { 204 writer.println( "Query result: " + results.next() ); 205 } 206 writer.println( "Commit transaction" ); 207 db.commit(); 208 209 Marshaller marshaller; 210 211 marshaller = new Marshaller( writer ); 212 marshaller.setMapping( _mapping ); 213 214 db.begin(); 215 marshaller.marshal( db.load( Product.class, new Integer ( 4 ) ) ); 216 computerOql = db.getOQLQuery( "SELECT c FROM myapp.Computer c" ); 217 results = computerOql.execute(); 218 while( results.hasMore() ) 219 marshaller.marshal( results.next() ); 220 db.commit(); 221 222 db.close(); 223 } 224 225 } 226 | Popular Tags |