KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > f1 > chapter3 > CollectionsExample


1 package com.db4o.f1.chapter3;
2
3 import java.io.*;
4 import java.util.*;
5 import com.db4o.*;
6 import com.db4o.f1.*;
7 import com.db4o.query.*;
8
9
10 public class CollectionsExample extends Util {
11     public static void main(String JavaDoc[] args) {
12         new File(Util.YAPFILENAME).delete();
13         ObjectContainer db=Db4o.openFile(Util.YAPFILENAME);
14         try {
15             storeFirstCar(db);
16             storeSecondCar(db);
17             retrieveAllSensorReadout(db);
18             retrieveSensorReadoutQBE(db);
19             retrieveCarQBE(db);
20             retrieveCollections(db);
21             retrieveArrays(db);
22             retrieveAllSensorReadoutNative(db);
23             retrieveSensorReadoutNative(db);
24             retrieveCarNative(db);
25             retrieveSensorReadoutQuery(db);
26             retrieveCarQuery(db);
27             db.close();
28             updateCarPart1();
29             db=Db4o.openFile(Util.YAPFILENAME);
30             updateCarPart2(db);
31             updateCollection(db);
32             db.close();
33             deleteAllPart1();
34             db=Db4o.openFile(Util.YAPFILENAME);
35             deleteAllPart2(db);
36         }
37         finally {
38             db.close();
39         }
40     }
41
42     public static void storeFirstCar(ObjectContainer db) {
43         Car car1=new Car("Ferrari");
44         Pilot pilot1=new Pilot("Michael Schumacher",100);
45         car1.setPilot(pilot1);
46         db.set(car1);
47     }
48     
49     public static void storeSecondCar(ObjectContainer db) {
50         Pilot pilot2=new Pilot("Rubens Barrichello",99);
51         Car car2=new Car("BMW");
52         car2.setPilot(pilot2);
53         car2.snapshot();
54         car2.snapshot();
55         db.set(car2);
56     }
57     
58     public static void retrieveAllSensorReadout(
59                 ObjectContainer db) {
60         SensorReadout proto=new SensorReadout(null,null,null);
61         ObjectSet results=db.get(proto);
62         listResult(results);
63     }
64
65     public static void retrieveAllSensorReadoutNative(
66             ObjectContainer db) {
67         ObjectSet results = db.query(new Predicate() {
68             public boolean match(SensorReadout candidate){
69                 return true;
70             }
71         });
72         listResult(results);
73     }
74     
75     public static void retrieveSensorReadoutQBE(
76                 ObjectContainer db) {
77         SensorReadout proto=new SensorReadout(
78                 new double[]{0.3,0.1},null,null);
79         ObjectSet results=db.get(proto);
80         listResult(results);
81     }
82
83     public static void retrieveSensorReadoutNative(
84             ObjectContainer db) {
85         ObjectSet results = db.query(new Predicate() {
86             public boolean match(SensorReadout candidate){
87                 return Arrays.binarySearch(candidate.getValues(), 0.3) >= 0
88                     && Arrays.binarySearch(candidate.getValues(), 1.0) >= 0;
89             }
90         });
91         listResult(results);
92     }
93
94     public static void retrieveCarQBE(ObjectContainer db) {
95         SensorReadout protoreadout=new SensorReadout(
96                 new double[]{0.6,0.2},null,null);
97         List protohistory=new ArrayList();
98         protohistory.add(protoreadout);
99         Car protocar=new Car(null,protohistory);
100         ObjectSet result=db.get(protocar);
101         listResult(result);
102     }
103
104     public static void retrieveCarNative(
105             ObjectContainer db) {
106         ObjectSet results = db.query(new Predicate() {
107             public boolean match(Car candidate){
108                 List history = candidate.getHistory();
109                 for(int i = 0; i < history.size(); i++){
110                     SensorReadout readout = (SensorReadout)history.get(i);
111                     if( Arrays.binarySearch(readout.getValues(), 0.6) >= 0 ||
112                     Arrays.binarySearch(readout.getValues(), 0.2) >= 0)
113                         return true;
114                 }
115                 return false;
116             }
117         });
118         listResult(results);
119     }
120     
121     public static void retrieveCollections(ObjectContainer db) {
122         ObjectSet result=db.get(new ArrayList());
123         listResult(result);
124     }
125
126     public static void retrieveArrays(ObjectContainer db) {
127         ObjectSet result=db.get(new double[]{0.6,0.4});
128         listResult(result);
129     }
130
131     public static void retrieveSensorReadoutQuery(
132                 ObjectContainer db) {
133         Query query=db.query();
134         query.constrain(SensorReadout.class);
135         Query valuequery=query.descend("values");
136         valuequery.constrain(new Double JavaDoc(0.3));
137         valuequery.constrain(new Double JavaDoc(0.1));
138         ObjectSet result=query.execute();
139         listResult(result);
140     }
141
142     public static void retrieveCarQuery(ObjectContainer db) {
143         Query query=db.query();
144         query.constrain(Car.class);
145         Query historyquery=query.descend("history");
146         historyquery.constrain(SensorReadout.class);
147         Query valuequery=historyquery.descend("values");
148         valuequery.constrain(new Double JavaDoc(0.3));
149         valuequery.constrain(new Double JavaDoc(0.1));
150         ObjectSet result=query.execute();
151         listResult(result);
152     }
153
154     public static void updateCarPart1() {
155         Db4o.configure().objectClass(Car.class).cascadeOnUpdate(true);
156     }
157
158     public static void updateCarPart2(ObjectContainer db) {
159         ObjectSet results = db.query(new Predicate() {
160             public boolean match(Car candidate){
161                 return true;
162             }
163         });
164         Car car=(Car)results.next();
165         car.snapshot();
166         db.set(car);
167         retrieveAllSensorReadoutNative(db);
168     }
169     
170     public static void updateCollection(ObjectContainer db) {
171         ObjectSet results = db.query(new Predicate() {
172             public boolean match(Car candidate){
173                 return true;
174             }
175         });
176         Car car =(Car)results.next();
177         car.getHistory().remove(0);
178         db.set(car.getHistory());
179         results = db.query(new Predicate() {
180             public boolean match(Car candidate){
181                 return true;
182             }
183         });
184         while(results.hasNext()) {
185             car=(Car)results.next();
186             for (int idx=0;idx<car.getHistory().size();idx++) {
187                 System.out.println(car.getHistory().get(idx));
188             }
189         }
190     }
191     
192     public static void deleteAllPart1() {
193         Db4o.configure().objectClass(Car.class)
194                 .cascadeOnDelete(true);
195     }
196     
197     public static void deleteAllPart2(ObjectContainer db) {
198         ObjectSet cars = db.query(new Predicate() {
199             public boolean match(Car candidate){
200                 return true;
201             }
202         });
203         while(cars.hasNext()) {
204             db.delete(cars.next());
205         }
206         ObjectSet readouts = db.query(new Predicate() {
207             public boolean match(SensorReadout candidate){
208                 return true;
209             }
210         });
211         while(readouts.hasNext()) {
212             db.delete(readouts.next());
213         }
214     }
215 }
216
Popular Tags