KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4odoc > f1 > remote > RemoteExample


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */
2
3 package com.db4odoc.f1.remote;
4
5 import java.io.File JavaDoc;
6
7 import com.db4o.Db4o;
8 import com.db4o.ObjectContainer;
9 import com.db4o.ObjectServer;
10 import com.db4o.ObjectSet;
11 import com.db4o.messaging.MessageRecipient;
12 import com.db4o.messaging.MessageSender;
13 import com.db4o.query.Candidate;
14 import com.db4o.query.Evaluation;
15 import com.db4o.query.Query;
16 import com.db4odoc.f1.Util;
17
18
19 public class RemoteExample extends Util {
20
21     public static void main(String JavaDoc[] args) {
22         setObjects();
23         updateCars();
24         setObjects();
25         updateCarsWithMessage();
26     }
27     // end main
28

29     public static void setObjects(){
30         new File JavaDoc(Util.YAPFILENAME).delete();
31         ObjectContainer db = Db4o.openFile(Util.YAPFILENAME);
32         try {
33             for (int i = 0; i < 5; i++) {
34                 Car car = new Car("car"+i);
35                 db.set(car);
36             }
37             db.set(new RemoteExample());
38         } finally {
39             db.close();
40         }
41         checkCars();
42     }
43     // end setObjects
44

45     
46     public static void updateCars(){
47         // triggering mass updates with a singleton
48
// complete server-side execution
49
ObjectServer server=Db4o.openServer(Util.YAPFILENAME,0);
50         server.ext().configure().messageLevel(0);
51         try {
52             ObjectContainer client=server.openClient();
53             Query q = client.query();
54             q.constrain(RemoteExample.class);
55             q.constrain(new Evaluation() {
56                 public void evaluate(Candidate candidate) {
57                     // evaluate method is executed on the server
58
// use it to run update code
59
ObjectContainer objectContainer = candidate.objectContainer();
60                     Query q2 = objectContainer.query();
61                     q2.constrain(Car.class);
62                     ObjectSet objectSet = q2.execute();
63                     while(objectSet.hasNext()){
64                         Car car = (Car)objectSet.next();
65                         car.setModel( "Update1-"+ car.getModel());
66                         objectContainer.set(car);
67                     }
68                     objectContainer.commit();
69                 }
70             });
71             q.execute();
72             client.close();
73         } finally {
74             server.close();
75         }
76         checkCars();
77     }
78     // end updateCars
79

80     private static void checkCars(){
81         ObjectContainer db = Db4o.openFile(Util.YAPFILENAME);
82         try {
83             Query q = db.query();
84             q.constrain(Car.class);
85             ObjectSet objectSet = q.execute();
86             listResult(objectSet);
87         } finally {
88             db.close();
89         }
90     }
91     // end checkCars
92

93      public static void updateCarsWithMessage() {
94         ObjectServer server = Db4o.openServer(Util.YAPFILENAME, 0);
95         server.ext().configure().messageLevel(0);
96         // create message handler on the server
97
server.ext().configure().setMessageRecipient(new MessageRecipient() {
98             public void processMessage(ObjectContainer objectContainer,
99                     Object JavaDoc message) {
100                 // message type defines the code to be executed
101
if (message instanceof UpdateServer) {
102                     Query q = objectContainer.query();
103                     q.constrain(Car.class);
104                     ObjectSet objectSet = q.execute();
105                     while (objectSet.hasNext()) {
106                         Car car = (Car) objectSet.next();
107                         car.setModel("Updated2-" + car.getModel());
108                         objectContainer.set(car);
109                     }
110                     objectContainer.commit();
111                 }
112             }
113         });
114         try {
115             ObjectContainer client = server.openClient();
116             // send message object to the server
117
MessageSender sender = client.ext().configure().getMessageSender();
118             sender.send(new UpdateServer());
119             client.close();
120         } finally {
121             server.close();
122         }
123         checkCars();
124     }
125      // end updateCarsWithMessage
126

127         public static void listResult(ObjectSet result) {
128             System.out.println(result.size());
129             while(result.hasNext()) {
130                 System.out.println(result.next());
131             }
132         }
133         // end listResult
134
}
135
Popular Tags