01: /*
02: This file is part of the PolePosition database benchmark
03: http://www.polepos.org
04:
05: This program is free software; you can redistribute it and/or
06: modify it under the terms of the GNU General Public License
07: as published by the Free Software Foundation; either version 2
08: of the License, or (at your option) any later version.
09:
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.circuits.imola.*;
23: import org.polepos.data.*;
24:
25: public class ImolaDb4o extends Db4oDriver implements ImolaDriver {
26:
27: private long[] ids;
28:
29: public void store() {
30: begin();
31: ids = new long[setup().getSelectCount()];
32: int count = setup().getObjectCount();
33: for (int i = 1; i <= count; i++) {
34: storePilot(i);
35: }
36: commit();
37: }
38:
39: public void retrieve() {
40: for (long id : ids) {
41: Pilot pilot = (Pilot) db().getByID(id);
42: db().activate(pilot, 1);
43: if (pilot == null) {
44: System.err.println("Object not found by ID.");
45: } else {
46: addToCheckSum(pilot.getPoints());
47: }
48: }
49: }
50:
51: private void storePilot(int idx) {
52: Pilot pilot = new Pilot("Pilot_" + idx, "Jonny_" + idx, idx,
53: idx);
54: store(pilot);
55: if (idx <= setup().getSelectCount()) {
56: ids[idx - 1] = db().getID(pilot);
57: }
58: if (isCommitPoint(idx)) {
59: commit();
60: begin();
61: }
62: }
63:
64: private boolean isCommitPoint(int idx) {
65: int commitInterval = setup().getCommitInterval();
66: return commitInterval > 0 && idx % commitInterval == 0
67: && idx < setup().getObjectCount();
68: }
69: }
|