1 package com.db4odoc.f1.structured; 2 3 import java.io.File ; 4 5 import com.db4o.Db4o; 6 import com.db4o.ObjectContainer; 7 import com.db4o.ObjectSet; 8 import com.db4o.query.Predicate; 9 import com.db4o.query.Query; 10 11 12 public class StructuredExample { 13 public final static String YAPFILENAME="formula1.yap"; 14 15 public static void main(String [] args) { 16 new File (YAPFILENAME).delete(); 17 ObjectContainer db=Db4o.openFile(YAPFILENAME); 18 try { 19 storeFirstCar(db); 20 storeSecondCar(db); 21 retrieveAllCarsQBE(db); 22 retrieveAllPilotsQBE(db); 23 retrieveCarByPilotQBE(db); 24 retrieveCarByPilotNameQuery(db); 25 retrieveCarByPilotProtoQuery(db); 26 retrievePilotByCarModelQuery(db); 27 updateCar(db); 28 updatePilotSingleSession(db); 29 updatePilotSeparateSessionsPart1(db); 30 db.close(); 31 db=Db4o.openFile(YAPFILENAME); 32 updatePilotSeparateSessionsPart2(db); 33 db.close(); 34 updatePilotSeparateSessionsImprovedPart1(); 35 db=Db4o.openFile(YAPFILENAME); 36 updatePilotSeparateSessionsImprovedPart2(db); 37 db.close(); 38 db=Db4o.openFile(YAPFILENAME); 39 updatePilotSeparateSessionsImprovedPart3(db); 40 deleteFlat(db); 41 db.close(); 42 deleteDeepPart1(); 43 db=Db4o.openFile(YAPFILENAME); 44 deleteDeepPart2(db); 45 deleteDeepRevisited(db); 46 } 47 finally { 48 db.close(); 49 } 50 } 51 53 public static void storeFirstCar(ObjectContainer db) { 54 Car car1=new Car("Ferrari"); 55 Pilot pilot1=new Pilot("Michael Schumacher",100); 56 car1.setPilot(pilot1); 57 db.set(car1); 58 } 59 61 public static void storeSecondCar(ObjectContainer db) { 62 Pilot pilot2=new Pilot("Rubens Barrichello",99); 63 db.set(pilot2); 64 Car car2=new Car("BMW"); 65 car2.setPilot(pilot2); 66 db.set(car2); 67 } 68 70 public static void retrieveAllCarsQBE(ObjectContainer db) { 71 Car proto=new Car(null); 72 ObjectSet result=db.get(proto); 73 listResult(result); 74 } 75 77 public static void retrieveAllPilotsQBE(ObjectContainer db) { 78 Pilot proto=new Pilot(null,0); 79 ObjectSet result=db.get(proto); 80 listResult(result); 81 } 82 84 public static void retrieveAllPilots(ObjectContainer db) { 85 ObjectSet result=db.get(Pilot.class); 86 listResult(result); 87 } 88 90 public static void retrieveCarByPilotQBE( 91 ObjectContainer db) { 92 Pilot pilotproto=new Pilot("Rubens Barrichello",0); 93 Car carproto=new Car(null); 94 carproto.setPilot(pilotproto); 95 ObjectSet result=db.get(carproto); 96 listResult(result); 97 } 98 100 public static void retrieveCarByPilotNameQuery( 101 ObjectContainer db) { 102 Query query=db.query(); 103 query.constrain(Car.class); 104 query.descend("pilot").descend("name") 105 .constrain("Rubens Barrichello"); 106 ObjectSet result=query.execute(); 107 listResult(result); 108 } 109 111 public static void retrieveCarByPilotProtoQuery( 112 ObjectContainer db) { 113 Query query=db.query(); 114 query.constrain(Car.class); 115 Pilot proto=new Pilot("Rubens Barrichello",0); 116 query.descend("pilot").constrain(proto); 117 ObjectSet result=query.execute(); 118 listResult(result); 119 } 120 122 public static void retrievePilotByCarModelQuery(ObjectContainer db) { 123 Query carquery=db.query(); 124 carquery.constrain(Car.class); 125 carquery.descend("model").constrain("Ferrari"); 126 Query pilotquery=carquery.descend("pilot"); 127 ObjectSet result=pilotquery.execute(); 128 listResult(result); 129 } 130 132 public static void retrieveAllPilotsNative(ObjectContainer db) { 133 ObjectSet results = db.query(new Predicate<Pilot>() { 134 public boolean match(Pilot pilot){ 135 return true; 136 } 137 }); 138 listResult(results); 139 } 140 142 public static void retrieveAllCars(ObjectContainer db) { 143 ObjectSet results = db.get(Car.class); 144 listResult(results); 145 } 146 148 public static void retrieveCarsByPilotNameNative(ObjectContainer db) { 149 final String pilotName = "Rubens Barrichello"; 150 ObjectSet results = db.query(new Predicate<Car>() { 151 public boolean match(Car car){ 152 return car.getPilot().getName().equals(pilotName); 153 } 154 }); 155 listResult(results); 156 } 157 159 public static void updateCar(ObjectContainer db) { 160 ObjectSet result=db.query(new Predicate<Car>() { 161 public boolean match(Car car){ 162 return car.getModel().equals("Ferrari"); 163 } 164 }); 165 Car found=(Car)result.next(); 166 found.setPilot(new Pilot("Somebody else",0)); 167 db.set(found); 168 result=db.query(new Predicate<Car>() { 169 public boolean match(Car car){ 170 return car.getModel().equals("Ferrari"); 171 } 172 }); 173 listResult(result); 174 } 175 177 public static void updatePilotSingleSession( 178 ObjectContainer db) { 179 ObjectSet result=db.query(new Predicate<Car>() { 180 public boolean match(Car car){ 181 return car.getModel().equals("Ferrari"); 182 } 183 }); 184 Car found=(Car)result.next(); 185 found.getPilot().addPoints(1); 186 db.set(found); 187 result=db.query(new Predicate<Car>() { 188 public boolean match(Car car){ 189 return car.getModel().equals("Ferrari"); 190 } 191 }); 192 listResult(result); 193 } 194 196 public static void updatePilotSeparateSessionsPart1( 197 ObjectContainer db) { 198 ObjectSet result=db.query(new Predicate<Car>() { 199 public boolean match(Car car){ 200 return car.getModel().equals("Ferrari"); 201 } 202 }); 203 Car found=(Car)result.next(); 204 found.getPilot().addPoints(1); 205 db.set(found); 206 } 207 209 public static void updatePilotSeparateSessionsPart2( 210 ObjectContainer db) { 211 ObjectSet result=db.query(new Predicate<Car>() { 212 public boolean match(Car car){ 213 return car.getModel().equals("Ferrari"); 214 } 215 }); 216 listResult(result); 217 } 218 220 public static void updatePilotSeparateSessionsImprovedPart1() { 221 Db4o.configure().objectClass("com.db4o.f1.chapter2.Car") 222 .cascadeOnUpdate(true); 223 } 224 226 public static void updatePilotSeparateSessionsImprovedPart2( 227 ObjectContainer db) { 228 ObjectSet result=db.query(new Predicate<Car>() { 229 public boolean match(Car car){ 230 return car.getModel().equals("Ferrari"); 231 } 232 }); 233 Car found=(Car)result.next(); 234 found.getPilot().addPoints(1); 235 db.set(found); 236 } 237 239 public static void updatePilotSeparateSessionsImprovedPart3( 240 ObjectContainer db) { 241 ObjectSet result=db.query(new Predicate<Car>() { 242 public boolean match(Car car){ 243 return car.getModel().equals("Ferrari"); 244 } 245 }); 246 listResult(result); 247 } 248 250 public static void deleteFlat(ObjectContainer db) { 251 ObjectSet result=db.query(new Predicate<Car>() { 252 public boolean match(Car car){ 253 return car.getModel().equals("Ferrari"); 254 } 255 }); 256 Car found=(Car)result.next(); 257 db.delete(found); 258 result=db.get(new Car(null)); 259 listResult(result); 260 } 261 263 public static void deleteDeepPart1() { 264 Db4o.configure().objectClass("com.db4o.f1.chapter2.Car") 265 .cascadeOnDelete(true); 266 } 267 269 public static void deleteDeepPart2(ObjectContainer db) { 270 ObjectSet result=db.query(new Predicate<Car>() { 271 public boolean match(Car car){ 272 return car.getModel().equals("BMW"); 273 } 274 }); 275 Car found=(Car)result.next(); 276 db.delete(found); 277 result=db.query(new Predicate<Car>() { 278 public boolean match(Car car){ 279 return true; 280 } 281 }); 282 listResult(result); 283 } 284 286 public static void deleteDeepRevisited(ObjectContainer db) { 287 ObjectSet result=db.query(new Predicate<Pilot>() { 288 public boolean match(Pilot pilot){ 289 return pilot.getName().equals("Michael Schumacher"); 290 } 291 }); 292 Pilot pilot=(Pilot)result.next(); 293 Car car1=new Car("Ferrari"); 294 Car car2=new Car("BMW"); 295 car1.setPilot(pilot); 296 car2.setPilot(pilot); 297 db.set(car1); 298 db.set(car2); 299 db.delete(car2); 300 result=db.query(new Predicate<Car>() { 301 public boolean match(Car car){ 302 return true; 303 } 304 }); 305 listResult(result); 306 } 307 309 public static void listResult(ObjectSet result) { 310 System.out.println(result.size()); 311 while(result.hasNext()) { 312 System.out.println(result.next()); 313 } 314 } 315 } 317 | Popular Tags |