01: /**
02: * Copyright (C) 2001-2006 France Telecom R&D
03: */package simplereference;
04:
05: import org.objectweb.util.monolog.api.BasicLevel;
06:
07: import java.util.ArrayList;
08: import java.util.Collection;
09: import java.util.Iterator;
10: import java.util.List;
11:
12: import javax.jdo.PersistenceManager;
13: import javax.jdo.Query;
14:
15: import common.MainHelper;
16:
17: public class Main extends MainHelper {
18:
19: public static void main(String[] args) {
20: new Main().init(args).run().end();
21: }
22:
23: public MainHelper run() {
24: final int nbDep = 3;
25: final int nbEmp = 20;
26: List deps = new ArrayList(nbDep);
27: for (int i = 0; i < nbDep; i++) {
28: Department d = new Department();
29: d.setName("department_" + i);
30: deps.add(d);
31: }
32: List emps = new ArrayList(nbEmp);
33: for (int i = 0; i < nbEmp; i++) {
34: Employee e = new Employee();
35: e.setSsn("employee_" + i);
36: e.setDepartment((Department) deps.get(i % nbDep));
37: emps.add(e);
38: }
39: logger.log(BasicLevel.INFO, "Create " + nbDep
40: + "' department :" + deps);
41: PersistenceManager pm = pmf.getPersistenceManager();
42: pm.currentTransaction().begin();
43: pm.makePersistentAll(emps);
44: pm.currentTransaction().commit();
45:
46: logger.log(BasicLevel.INFO, "Empty Cache.");
47: emps.clear();
48: deps.clear();
49: pm.evictAll();
50:
51: pm.currentTransaction().begin();
52: logger.log(BasicLevel.INFO, "Find Employees.");
53: Query q = pm.newQuery(Employee.class);
54: q.setFilter("department.name == p1");
55: q.declareParameters("String p1");
56: Collection c = (Collection) q.execute("department_"
57: + (nbDep - 1));
58: for (Iterator it = c.iterator(); it.hasNext();) {
59: Employee e = (Employee) it.next();
60: logger.log(BasicLevel.INFO, "- Employee found:"
61: + e.toString());
62: }
63: q.closeAll();
64: pm.currentTransaction().commit();
65:
66: pm.currentTransaction().begin();
67: q = pm.newQuery(Employee.class);
68: c = (Collection) q.execute();
69: emps.addAll(c);
70: q.closeAll();
71: q = pm.newQuery(Department.class);
72: c = (Collection) q.execute();
73: deps.addAll(c);
74: q.closeAll();
75: logger.log(BasicLevel.INFO, "Delete " + deps.size()
76: + " departments.");
77: pm.deletePersistentAll(deps);
78: logger.log(BasicLevel.INFO, "Delete " + emps.size()
79: + " employees.");
80: pm.deletePersistentAll(emps);
81: pm.currentTransaction().commit();
82: pm.close();
83: return this;
84: }
85:
86: }
|