KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > polepos > teams > db4o > Db4oDriver


1 /*
2 This file is part of the PolePosition database benchmark
3 http://www.polepos.org
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public
16 License along with this program; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18 MA 02111-1307, USA. */

19
20 package org.polepos.teams.db4o;
21
22 import org.polepos.framework.*;
23
24 import com.db4o.*;
25 import com.db4o.ext.*;
26 import com.db4o.query.*;
27
28
29 /**
30  * @author Herkules
31  */

32 public abstract class Db4oDriver extends Driver{
33     
34     private ExtObjectContainer mDB;
35
36     public void takeSeatIn( Car car , TurnSetup setup) throws CarMotorFailureException{
37         super.takeSeatIn(car, setup);
38         ((Db4oCar)car).initialize();
39     }
40
41     public void prepare(){
42         mDB = ((Db4oCar)car()).createObjectContainer();
43     }
44     
45     public void backToPit(){
46         mDB.close();
47         
48         // give the weak reference collector thread time to end
49
try {
50             Thread.sleep(500);
51         } catch (InterruptedException JavaDoc e) {
52             e.printStackTrace();
53         }
54     }
55     
56     public ExtObjectContainer db(){
57         return mDB;
58     }
59     
60     protected void doQuery( Query q ){
61         ObjectSet result = q.execute();
62         while ( result.hasNext() ){
63             Object JavaDoc o = result.next();
64             if(o instanceof CheckSummable){
65                 addToCheckSum(((CheckSummable)o).checkSum());
66             }
67         }
68     }
69     
70     protected void readExtent(Class JavaDoc clazz){
71         Query q = db().query();
72         q.constrain(clazz);
73         doQuery(q);
74     }
75     
76     protected void begin(){
77         // db4o always works in a transaction so a begin call
78
// is not needed.
79
}
80     
81     protected void commit(){
82         mDB.commit();
83     }
84     
85     protected void store(Object JavaDoc obj){
86         mDB.set(obj);
87     }
88 }
89
Popular Tags