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.jdo;
21:
22: import org.polepos.circuits.imola.*;
23: import org.polepos.teams.jdo.data.*;
24:
25: public class ImolaJdo extends JdoDriver implements ImolaDriver {
26:
27: private Object[] oids;
28:
29: public void store() {
30: int count = setup().getObjectCount();
31: oids = new Object[setup().getSelectCount()];
32: begin();
33: for (int i = 1; i <= count; i++) {
34: storePilot(i);
35: }
36: commit();
37: }
38:
39: public void retrieve() {
40: for (Object id : oids) {
41: JdoPilot pilot = (JdoPilot) db().getObjectById(id, false);
42: if (pilot == null) {
43: System.err.println("Object not found by ID.");
44: } else {
45: addToCheckSum(pilot.getPoints());
46: }
47: }
48: }
49:
50: private void storePilot(int idx) {
51: JdoPilot pilot = new JdoPilot("Pilot_" + idx, "Jonny_" + idx,
52: idx, idx);
53: db().makePersistent(pilot);
54:
55: if (idx <= setup().getSelectCount()) {
56: oids[idx - 1] = db().getObjectId(pilot);
57: }
58: if (isCommitPoint(idx)) {
59: db().currentTransaction().commit();
60: db().currentTransaction().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:
70: }
|