KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4odoc > f1 > structured > StructuredExample


1 package com.db4odoc.f1.structured;
2
3 import java.io.File JavaDoc;
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 JavaDoc YAPFILENAME="formula1.yap";
14     
15     public static void main(String JavaDoc[] args) {
16         new File JavaDoc(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     // end main
52

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     // end storeFirstCar
60

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     // end storeSecondCar
69

70     public static void retrieveAllCarsQBE(ObjectContainer db) {
71         Car proto=new Car(null);
72         ObjectSet result=db.get(proto);
73         listResult(result);
74     }
75     // end retrieveAllCarsQBE
76

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     // end retrieveAllPilotsQBE
83

84     public static void retrieveAllPilots(ObjectContainer db) {
85         ObjectSet result=db.get(Pilot.class);
86         listResult(result);
87     }
88     // end retrieveAllPilots
89

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     // end retrieveCarByPilotQBE
99

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     // end retrieveCarByPilotNameQuery
110

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     // end retrieveCarByPilotProtoQuery
121

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     // end retrievePilotByCarModelQuery
131

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     // end retrieveAllPilotsNative
141

142     public static void retrieveAllCars(ObjectContainer db) {
143         ObjectSet results = db.get(Car.class);
144         listResult(results);
145     }
146     // end retrieveAllCars
147

148     public static void retrieveCarsByPilotNameNative(ObjectContainer db) {
149         final String JavaDoc 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     // end retrieveCarsByPilotNameNative
158

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     // end updateCar
176

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     // end updatePilotSingleSession
195

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     // end updatePilotSeparateSessionsPart1
208

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     // end updatePilotSeparateSessionsPart2
219

220     public static void updatePilotSeparateSessionsImprovedPart1() {
221         Db4o.configure().objectClass("com.db4o.f1.chapter2.Car")
222                 .cascadeOnUpdate(true);
223     }
224     // end updatePilotSeparateSessionsImprovedPart1
225

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     // end updatePilotSeparateSessionsImprovedPart2
238

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     // end updatePilotSeparateSessionsImprovedPart3
249

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     // end deleteFlat
262

263     public static void deleteDeepPart1() {
264         Db4o.configure().objectClass("com.db4o.f1.chapter2.Car")
265                 .cascadeOnDelete(true);
266     }
267     // end deleteDeepPart1
268

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     // end deleteDeepPart2
285

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     // end deleteDeepRevisited
308

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     // end listResult
316
}
317
Popular Tags