1 2 3 package com.db4odoc.callbacks; 4 5 import java.io.File ; 6 7 import com.db4o.Db4o; 8 import com.db4o.ObjectContainer; 9 import com.db4o.ObjectSet; 10 import com.db4o.events.CancellableObjectEventArgs; 11 import com.db4o.events.Event4; 12 import com.db4o.events.EventArgs; 13 import com.db4o.events.EventListener4; 14 import com.db4o.events.EventRegistry; 15 import com.db4o.events.EventRegistryFactory; 16 import com.db4o.events.ObjectEventArgs; 17 import com.db4o.query.Query; 18 19 20 public class CallbacksExample { 21 22 private final static String YAPFILENAME="formula1.yap"; 23 24 public static void main(String [] args) { 25 testCreated(); 26 testCascadedDelete(); 27 testIntegrityCheck(); 28 } 29 31 public static void testCreated(){ 32 new File (YAPFILENAME).delete(); 33 ObjectContainer db = Db4o.openFile(YAPFILENAME); 34 try { 35 EventRegistry registry = EventRegistryFactory.forObjectContainer(db); 36 registry.created().addListener(new EventListener4() { 38 public void onEvent(Event4 e, EventArgs args) { 39 ObjectEventArgs queryArgs = ((ObjectEventArgs) args); 40 Object obj = queryArgs.object(); 41 if (obj instanceof Pilot){ 42 System.out.println(obj.toString()); 43 } 44 } 45 }); 46 47 Car car = new Car("BMW",new Pilot("Rubens Barrichello")); 48 db.set(car); 49 } finally { 50 db.close(); 51 } 52 } 53 55 public static void fillDB(){ 56 new File (YAPFILENAME).delete(); 57 ObjectContainer db = Db4o.openFile(YAPFILENAME); 58 try { 59 Car car = new Car("BMW",new Pilot("Rubens Barrichello")); 60 db.set(car); 61 car = new Car("Ferrari",new Pilot("Finn Kimi Raikkonen")); 62 db.set(car); 63 } finally { 64 db.close(); 65 } 66 } 67 69 public static void testCascadedDelete(){ 70 fillDB(); 71 final ObjectContainer db = Db4o.openFile(YAPFILENAME); 72 try { 73 ObjectSet result = db.get(null); 75 listResult(result); 76 77 EventRegistry registry = EventRegistryFactory.forObjectContainer(db); 78 registry.deleted().addListener(new EventListener4() { 80 public void onEvent(Event4 e, EventArgs args) { 81 ObjectEventArgs queryArgs = ((ObjectEventArgs) args); 82 Object obj = queryArgs.object(); 83 if (obj instanceof Car){ 84 db.delete(((Car)obj).getPilot()); 85 } 86 } 87 }); 88 result = db.query(Car.class); 90 while(result.hasNext()) { 91 db.delete(result.next()); 92 } 93 result = db.get(null); 95 listResult(result); 96 } finally { 97 db.close(); 98 } 99 } 100 102 public static void testIntegrityCheck(){ 103 fillDB(); 104 final ObjectContainer db = Db4o.openFile(YAPFILENAME); 105 try { 106 EventRegistry registry = EventRegistryFactory.forObjectContainer(db); 107 registry.deleting().addListener(new EventListener4() { 109 public void onEvent(Event4 e, EventArgs args) { 110 CancellableObjectEventArgs cancellableArgs = ((CancellableObjectEventArgs) args); 111 Object obj = cancellableArgs.object(); 112 if (obj instanceof Pilot){ 113 Query q = db.query(); 114 q.constrain(Car.class); 115 q.descend("pilot").constrain(obj); 116 ObjectSet result = q.execute(); 117 if (result.size() > 0) { 118 System.out.println("Object " + (Pilot)obj + " can't be deleted as object container has references to it"); 119 cancellableArgs.cancel(); 120 } 121 } 122 } 123 }); 124 125 ObjectSet result = db.get(null); 127 listResult(result); 128 129 result = db.query(Pilot.class); 131 while(result.hasNext()) { 132 db.delete(result.next()); 133 } 134 result = db.get(null); 136 listResult(result); 137 } finally { 138 db.close(); 139 } 140 } 141 143 public static void listResult(ObjectSet result) { 144 System.out.println(result.size()); 145 while(result.hasNext()) { 146 System.out.println(result.next()); 147 } 148 } 149 } 151
| Popular Tags
|