1 package com.db4odoc.f1.diagnostics; 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.Query; 9 import com.db4o.diagnostic.*; 10 11 12 public class DiagnosticExample{ 13 public final static String YAPFILENAME="formula1.yap"; 14 15 public static void main(String [] args){ 16 testEmpty(); 17 testArbitrary(); 18 testIndexDiagnostics(); 19 testTranslatorDiagnostics(); 20 } 21 public static void testEmpty() { 23 Db4o.configure().diagnostic().addListener(new DiagnosticToConsole()); 24 new File (YAPFILENAME).delete(); 25 ObjectContainer db=Db4o.openFile(YAPFILENAME); 26 try { 27 setEmptyObject(db); 28 } 29 finally { 30 db.close(); 31 Db4o.configure().diagnostic().removeAllListeners(); 32 } 33 } 34 36 private static void setEmptyObject(ObjectContainer db){ 37 Empty empty = new Empty(); 38 db.set(empty); 39 } 40 42 public static void testArbitrary() { 43 Db4o.configure().diagnostic().addListener(new DiagnosticToConsole()); 44 new File (YAPFILENAME).delete(); 45 ObjectContainer db=Db4o.openFile(YAPFILENAME); 46 try { 47 Pilot pilot = new Pilot("Rubens Barrichello",99); 48 db.set(pilot); 49 queryPilot(db); 50 } 51 finally { 52 db.close(); 53 Db4o.configure().diagnostic().removeAllListeners(); 54 } 55 } 56 58 private static void queryPilot(ObjectContainer db){ 59 int[] i = new int[]{19,100}; 60 ObjectSet result = db.query(new ArbitraryQuery(i)); 61 listResult(result); 62 } 63 65 public static void testIndexDiagnostics() { 66 Db4o.configure().diagnostic().addListener(new IndexDiagListener()); 67 Db4o.configure().updateDepth(3); 68 new File (YAPFILENAME).delete(); 69 ObjectContainer db=Db4o.openFile(YAPFILENAME); 70 try { 71 Pilot pilot1 = new Pilot("Rubens Barrichello",99); 72 db.set(pilot1); 73 Pilot pilot2 = new Pilot("Michael Schumacher",100); 74 db.set(pilot2); 75 queryPilot(db); 76 setEmptyObject(db); 77 Query query = db.query(); 78 query.constrain(Pilot.class); 79 query.descend("points").constrain(new Integer (99)); 80 ObjectSet result = query.execute(); 81 listResult(result); 82 } 83 finally { 84 db.close(); 85 Db4o.configure().diagnostic().removeAllListeners(); 86 } 87 } 88 90 public static void testTranslatorDiagnostics() { 91 storeTranslatedCars(); 92 retrieveTranslatedCars(); 93 retrieveTranslatedCarsNQ(); 94 retrieveTranslatedCarsNQUnopt(); 95 retrieveTranslatedCarsSODAEv(); 96 } 97 99 public static void storeTranslatedCars() { 100 Db4o.configure().exceptionsOnNotStorable(true); 101 Db4o.configure().objectClass(Car.class).translate(new CarTranslator()); 102 Db4o.configure().objectClass(Car.class).callConstructor(true); 103 new File (YAPFILENAME).delete(); 104 ObjectContainer db = Db4o.openFile(YAPFILENAME); 105 try { 106 Car car1 = new Car("BMW"); 107 System.out.println("ORIGINAL: " + car1); 108 db.set(car1); 109 Car car2 = new Car("Ferrari"); 110 System.out.println("ORIGINAL: " + car2); 111 db.set(car2); 112 } catch (Exception exc) { 113 System.out.println(exc.toString()); 114 return; 115 } finally { 116 db.close(); 117 } 118 } 119 121 public static void retrieveTranslatedCars() { 122 Db4o.configure().diagnostic().addListener(new TranslatorDiagListener()); 123 Db4o.configure().exceptionsOnNotStorable(true); 124 Db4o.configure().objectClass(Car.class).translate(new CarTranslator()); 125 Db4o.configure().objectClass(Car.class).callConstructor(true); 126 ObjectContainer db = Db4o.openFile(YAPFILENAME); 127 try { 128 ObjectSet result = db.query(Car.class); 129 listResult(result); 130 } finally { 131 db.close(); 132 Db4o.configure().diagnostic().removeAllListeners(); 133 } 134 } 135 137 public static void retrieveTranslatedCarsNQ() { 138 Db4o.configure().diagnostic().addListener(new TranslatorDiagListener()); 139 Db4o.configure().exceptionsOnNotStorable(true); 140 Db4o.configure().objectClass(Car.class).translate(new CarTranslator()); 141 Db4o.configure().objectClass(Car.class).callConstructor(true); 142 ObjectContainer db = Db4o.openFile(YAPFILENAME); 143 try { 144 ObjectSet result = db.query(new NewCarModel()); 145 listResult(result); 146 } finally { 147 db.close(); 148 Db4o.configure().diagnostic().removeAllListeners(); 149 } 150 } 151 153 public static void retrieveTranslatedCarsNQUnopt() { 154 Db4o.configure().optimizeNativeQueries(false); 155 Db4o.configure().diagnostic().addListener(new TranslatorDiagListener()); 156 Db4o.configure().exceptionsOnNotStorable(true); 157 Db4o.configure().objectClass(Car.class).translate(new CarTranslator()); 158 Db4o.configure().objectClass(Car.class).callConstructor(true); 159 ObjectContainer db = Db4o.openFile(YAPFILENAME); 160 try { 161 ObjectSet result = db.query(new NewCarModel()); 162 listResult(result); 163 } finally { 164 Db4o.configure().optimizeNativeQueries(true); 165 db.close(); 166 Db4o.configure().diagnostic().removeAllListeners(); 167 } 168 } 169 171 public static void retrieveTranslatedCarsSODAEv() { 172 Db4o.configure().diagnostic().addListener(new TranslatorDiagListener()); 173 Db4o.configure().exceptionsOnNotStorable(true); 174 Db4o.configure().objectClass(Car.class).translate(new CarTranslator()); 175 Db4o.configure().objectClass(Car.class).callConstructor(true); 176 ObjectContainer db = Db4o.openFile(YAPFILENAME); 177 try { 178 Query query = db.query(); 179 query.constrain(Car.class); 180 query.constrain(new CarEvaluation()); 181 ObjectSet result = query.execute(); 182 listResult(result); 183 } finally { 184 db.close(); 185 Db4o.configure().diagnostic().removeAllListeners(); 186 Db4o.configure().objectClass(Car.class).translate(null); 187 } 188 } 189 191 public static void listResult(ObjectSet result) { 192 System.out.println(result.size()); 193 while(result.hasNext()) { 194 System.out.println(result.next()); 195 } 196 } 197 } 199 | Popular Tags |