1 package com.db4o.f1.chapter5; 2 3 import java.io.*; 4 import com.db4o.*; 5 import com.db4o.f1.*; 6 7 8 public class DeepExample extends Util { 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 35 public static void storeCar(ObjectContainer db) { 36 Pilot pilot=new Pilot("Rubens Barrichello",99); 37 Car car=new Car("BMW"); 38 car.setPilot(pilot); 39 db.set(car); 40 } 41 42 public static void setCascadeOnUpdate() { 43 Db4o.configure().objectClass(Car.class).cascadeOnUpdate(true); 44 } 45 46 public static void takeManySnapshots(ObjectContainer db) { 47 ObjectSet result=db.get(Car.class); 48 Car car=(Car)result.next(); 49 for(int i=0;i<5;i++) { 50 car.snapshot(); 51 } 52 db.set(car); 53 } 54 55 public static void retrieveAllSnapshots(ObjectContainer db) { 56 ObjectSet result=db.get(SensorReadout.class); 57 while(result.hasNext()) { 58 System.out.println(result.next()); 59 } 60 } 61 62 public static void retrieveSnapshotsSequentially( 63 ObjectContainer db) { 64 ObjectSet result=db.get(Car.class); 65 Car car=(Car)result.next(); 66 SensorReadout readout=car.getHistory(); 67 while(readout!=null) { 68 System.out.println(readout); 69 readout=readout.getNext(); 70 } 71 } 72 73 public static void retrieveSnapshotsSequentiallyImproved( 74 ObjectContainer db) { 75 ObjectSet result=db.get(Car.class); 76 Car car=(Car)result.next(); 77 SensorReadout readout=car.getHistory(); 78 while(readout!=null) { 79 db.activate(readout,1); 80 System.out.println(readout); 81 readout=readout.getNext(); 82 } 83 } 84 85 public static void setActivationDepth() { 86 Db4o.configure().objectClass(TemperatureSensorReadout.class) 87 .cascadeOnActivate(true); 88 } 89 } 90 | Popular Tags |