| 1 package com.db4odoc.f1.clientserver; 2 3 import java.io.*; 4 import com.db4o.*; 5 import com.db4odoc.f1.*; 6 7 8 public class DeepExample { 9 public static void main(String [] args) { 10 new File(Util.YAPFILENAME).delete(); 11 ObjectContainer db=Db4o.openFile(Util.YAPFILENAME); 12 try { 13 storeCar(db); 14 db.close(); 15 setCascadeOnUpdate(); 16 db=Db4o.openFile(Util.YAPFILENAME); 17 takeManySnapshots(db); 18 db.close(); 19 db=Db4o.openFile(Util.YAPFILENAME); 20 retrieveAllSnapshots(db); 21 db.close(); 22 db=Db4o.openFile(Util.YAPFILENAME); 23 retrieveSnapshotsSequentially(db); 24 retrieveSnapshotsSequentiallyImproved(db); 25 db.close(); 26 setActivationDepth(); 27 db=Db4o.openFile(Util.YAPFILENAME); 28 retrieveSnapshotsSequentially(db); 29 } 30 finally { 31 db.close(); 32 } 33 } 34 36 public static void storeCar(ObjectContainer db) { 37 Pilot pilot=new Pilot("Rubens Barrichello",99); 38 Car car=new Car("BMW"); 39 car.setPilot(pilot); 40 db.set(car); 41 } 42 44 public static void setCascadeOnUpdate() { 45 Db4o.configure().objectClass(Car.class).cascadeOnUpdate(true); 46 } 47 49 public static void takeManySnapshots(ObjectContainer db) { 50 ObjectSet result=db.get(Car.class); 51 Car car=(Car)result.next(); 52 for(int i=0;i<5;i++) { 53 car.snapshot(); 54 } 55 db.set(car); 56 } 57 59 public static void retrieveAllSnapshots(ObjectContainer db) { 60 ObjectSet result=db.get(SensorReadout.class); 61 while(result.hasNext()) { 62 System.out.println(result.next()); 63 } 64 } 65 67 public static void retrieveSnapshotsSequentially(ObjectContainer db) { 68 ObjectSet result=db.get(Car.class); 69 Car car=(Car)result.next(); 70 SensorReadout readout=car.getHistory(); 71 while(readout!=null) { 72 System.out.println(readout); 73 readout=readout.getNext(); 74 } 75 } 76 78 public static void retrieveSnapshotsSequentiallyImproved(ObjectContainer db) { 79 ObjectSet result=db.get(Car.class); 80 Car car=(Car)result.next(); 81 SensorReadout readout=car.getHistory(); 82 while(readout!=null) { 83 db.activate(readout,1); 84 System.out.println(readout); 85 readout=readout.getNext(); 86 } 87 } 88 90 public static void setActivationDepth() { 91 Db4o.configure().objectClass(TemperatureSensorReadout.class) 92 .cascadeOnActivate(true); 93 } 94 } 96 | Popular Tags |