1 2 3 package com.db4odoc.f1.remote; 4 5 import java.io.File ; 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 [] args) { 22 setObjects(); 23 updateCars(); 24 setObjects(); 25 updateCarsWithMessage(); 26 } 27 29 public static void setObjects(){ 30 new File (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 45 46 public static void updateCars(){ 47 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 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 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 93 public static void updateCarsWithMessage() { 94 ObjectServer server = Db4o.openServer(Util.YAPFILENAME, 0); 95 server.ext().configure().messageLevel(0); 96 server.ext().configure().setMessageRecipient(new MessageRecipient() { 98 public void processMessage(ObjectContainer objectContainer, 99 Object message) { 100 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 MessageSender sender = client.ext().configure().getMessageSender(); 118 sender.send(new UpdateServer()); 119 client.close(); 120 } finally { 121 server.close(); 122 } 123 checkCars(); 124 } 125 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 } 135 | Popular Tags |