KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4odoc > f1 > queries > QueryExample


1 package com.db4odoc.f1.queries;
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.Constraint;
9 import com.db4o.query.Query;
10
11
12 public class QueryExample {
13     public final static String JavaDoc YAPFILENAME="formula1.yap";
14     
15     public static void main(String JavaDoc[] args) {
16             storePilot();
17             updatePilotWrong();
18             updatePilot();
19             deletePilot();
20             ObjectContainer db=Db4o.openFile(YAPFILENAME);
21         try {
22                 retrievePilotByName(db);
23                 retrievePilotByExactPoints(db);
24                 retrieveByNegation(db);
25                 retrieveByConjunction(db);
26                 retrieveByDisjunction(db);
27                 retrieveByComparison(db);
28                 retrieveByDefaultFieldValue(db);
29                 retrieveSorted(db);
30             } finally {
31                 db.close();
32             }
33     }
34     // end main
35

36     public static void storePilot() {
37         new File JavaDoc(YAPFILENAME).delete();
38         ObjectContainer db=Db4o.openFile(YAPFILENAME);
39         try {
40             Pilot pilot=new Pilot("Michael Schumacher",0);
41             db.set(pilot);
42             System.out.println("Stored "+pilot);
43             // change pilot and resave updated
44
pilot.addPoints(10);
45             db.set(pilot);
46             System.out.println("Stored "+pilot);
47         } finally {
48             db.close();
49         }
50         retrieveAllPilots();
51     }
52     // end storePilot
53

54
55     public static void updatePilot() {
56         storePilot();
57         ObjectContainer db=Db4o.openFile(YAPFILENAME);
58         try {
59             // first retrieve the object from the database
60
ObjectSet result=db.get(new Pilot("Michael Schumacher",10));
61             Pilot found=(Pilot)result.next();
62             found.addPoints(10);
63             db.set(found);
64             System.out.println("Added 10 points for "+found);
65     } finally {
66         db.close();
67     }
68     retrieveAllPilots();
69     }
70     // end updatePilot
71

72     public static void updatePilotWrong() {
73         storePilot();
74         ObjectContainer db=Db4o.openFile(YAPFILENAME);
75         try {
76         // Even completely identical Pilot object
77
// won't work for update of the saved pilot
78
Pilot pilot = new Pilot("Michael Schumacher",10);
79         pilot.addPoints(10);
80         db.set(pilot);
81         System.out.println("Added 10 points for "+pilot);
82         } finally {
83             db.close();
84         }
85         retrieveAllPilots();
86     }
87     // end updatePilotWrong
88

89     public static void deletePilot() {
90         storePilot();
91         ObjectContainer db=Db4o.openFile(YAPFILENAME);
92         try {
93 // first retrieve the object from the database
94
ObjectSet result=db.get(new Pilot("Michael Schumacher",10));
95         Pilot found=(Pilot)result.next();
96         db.delete(found);
97         System.out.println("Deleted "+found);
98         } finally {
99             db.close();
100         }
101         retrieveAllPilots();
102     }
103     // end deletePilot
104

105     
106     public static void retrieveAllPilots() {
107         ObjectContainer db=Db4o.openFile(YAPFILENAME);
108         try {
109             Query query=db.query();
110             query.constrain(Pilot.class);
111             ObjectSet result=query.execute();
112             listResult(result);
113         } finally {
114             db.close();
115         }
116     }
117     // end retrieveAllPilots
118

119     public static void retrievePilotByName(ObjectContainer db) {
120         Query query=db.query();
121         query.constrain(Pilot.class);
122         query.descend("name").constrain("Michael Schumacher");
123         ObjectSet result=query.execute();
124         listResult(result);
125     }
126     // end retrievePilotByName
127

128     public static void retrievePilotByExactPoints(
129             ObjectContainer db) {
130         Query query=db.query();
131         query.constrain(Pilot.class);
132         query.descend("points").constrain(new Integer JavaDoc(100));
133         ObjectSet result=query.execute();
134         listResult(result);
135     }
136     // end retrievePilotByExactPoints
137

138     public static void retrieveByNegation(ObjectContainer db) {
139         Query query=db.query();
140         query.constrain(Pilot.class);
141         query.descend("name").constrain("Michael Schumacher").not();
142         ObjectSet result=query.execute();
143         listResult(result);
144     }
145     // end retrieveByNegation
146

147     public static void retrieveByConjunction(ObjectContainer db) {
148         Query query=db.query();
149         query.constrain(Pilot.class);
150         Constraint constr=query.descend("name")
151                 .constrain("Michael Schumacher");
152         query.descend("points")
153                 .constrain(new Integer JavaDoc(99)).and(constr);
154         ObjectSet result=query.execute();
155         listResult(result);
156     }
157     // end retrieveByConjunction
158

159     public static void retrieveByDisjunction(ObjectContainer db) {
160         Query query=db.query();
161         query.constrain(Pilot.class);
162         Constraint constr=query.descend("name")
163                 .constrain("Michael Schumacher");
164         query.descend("points")
165                 .constrain(new Integer JavaDoc(99)).or(constr);
166         ObjectSet result=query.execute();
167         listResult(result);
168     }
169     // end retrieveByDisjunction
170

171     public static void retrieveByComparison(ObjectContainer db) {
172         Query query=db.query();
173         query.constrain(Pilot.class);
174         query.descend("points")
175                 .constrain(new Integer JavaDoc(99)).greater();
176         ObjectSet result=query.execute();
177         listResult(result);
178     }
179     // end retrieveByComparison
180

181     public static void retrieveByDefaultFieldValue(
182                     ObjectContainer db) {
183         Pilot somebody=new Pilot("Somebody else",0);
184         db.set(somebody);
185         Query query=db.query();
186         query.constrain(Pilot.class);
187         query.descend("points").constrain(new Integer JavaDoc(0));
188         ObjectSet result=query.execute();
189         listResult(result);
190         db.delete(somebody);
191     }
192     // end retrieveByDefaultFieldValue
193

194     public static void retrieveSorted(ObjectContainer db) {
195         Query query=db.query();
196         query.constrain(Pilot.class);
197         query.descend("name").orderAscending();
198         ObjectSet result=query.execute();
199         listResult(result);
200         query.descend("name").orderDescending();
201         result=query.execute();
202         listResult(result);
203     }
204     // end retrieveSorted
205

206     public static void clearDatabase(ObjectContainer db) {
207         ObjectSet result=db.get(Pilot.class);
208         while(result.hasNext()) {
209             db.delete(result.next());
210         }
211     }
212     // end clearDatabase
213

214     public static void listResult(ObjectSet result) {
215         System.out.println(result.size());
216         while(result.hasNext()) {
217             System.out.println(result.next());
218         }
219     }
220     // end listResult
221
}
222
Popular Tags