001: /**
002: * Speedo: an implementation of JDO compliant personality on top of JORM generic
003: * I/O sub-system.
004: * Copyright (C) 2001-2004 France Telecom R&D
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2 of the License, or (at your option) any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: *
021: *
022: * Contact: speedo@objectweb.org
023: *
024: */package org.objectweb.speedo.tutorial.appli.additional.inheritance;
025:
026: import java.io.IOException;
027: import java.util.ArrayList;
028: import java.util.Collection;
029: import java.util.Iterator;
030:
031: import javax.jdo.Extent;
032: import javax.jdo.PersistenceManager;
033: import javax.jdo.PersistenceManagerFactory;
034:
035: import org.objectweb.speedo.tutorial.pobjects.additional.inheritance.Employee;
036: import org.objectweb.speedo.tutorial.pobjects.additional.inheritance.Manager;
037: import org.objectweb.speedo.tutorial.pobjects.additional.inheritance.Worker;
038: import org.objectweb.speedo.tutorial.TutorialHelper;
039:
040: /**
041: * @author Y.Bersihand
042: */
043: public class TutorialStep5 {
044:
045: private static PersistenceManagerFactory pmf = null;
046:
047: /**
048: * This steps describes how to:
049: * make persistent inherited objects
050: */
051: public static void inheritance() {
052: System.out
053: .println("***************Inheritance*****************");
054: PersistenceManager pm = pmf.getPersistenceManager();
055: //create the employees, workers and managers
056: createInheritedObjects(pm);
057: //get all the employees
058: iterateExtent(pm, Employee.class);
059: //get all the workers
060: iterateExtent(pm, Worker.class);
061: //get all the managers
062: iterateExtent(pm, Manager.class);
063: pm.close();
064: }
065:
066: /**
067: * Create persistent objects
068: */
069: public static void createInheritedObjects(PersistenceManager pm) {
070: //create employees
071: Employee employee1 = new Employee("Herve Landry", 42,
072: "Tetra Pack");
073: Employee employee2 = new Employee("Vincent Racado", 30,
074: "Tetra Pack");
075: //create workers
076: Worker worker1 = new Worker("Caroline Bret", 33, "Tetra Pack",
077: true);
078: Worker worker2 = new Worker("Evelyne Jain", 54, "Tetra Pack",
079: false);
080: Worker worker3 = new Worker("Tim Jorge", 28, "Tetra Pack",
081: false);
082: //create managers
083: Manager manager1 = new Manager("Jean Duverge", 52,
084: "Tetra Pack", "Sales");
085: Manager manager2 = new Manager("Eric Mento", 49, "Tetra Pack",
086: "Marketing");
087:
088: worker1.addManager(manager1);
089: worker2.addManager(manager1);
090: worker2.addManager(manager2);
091: worker3.addManager(manager2);
092:
093: Collection employees = new ArrayList();
094: employees.add(employee1);
095: employees.add(employee2);
096: employees.add(worker1);
097: employees.add(worker2);
098: employees.add(worker3);
099: employees.add(manager1);
100: employees.add(manager2);
101:
102: //make persistent all the persons using a collection
103: pm.currentTransaction().begin();
104: pm.makePersistentAll(employees);
105: pm.currentTransaction().commit();
106: }
107:
108: //iterate over all the instances of a class cl
109: public static void iterateExtent(PersistenceManager pm, Class cl) {
110: Extent extent = pm.getExtent(cl, true);
111: Iterator it = extent.iterator();
112: System.out.println("All " + cl.getName() + " instances:");
113: while (it.hasNext()) {
114: Employee e = (Employee) it.next();
115: System.out.println(e.toString());
116: }
117: extent.close(it);
118: }
119:
120: public static void main(String[] args) {
121: TutorialHelper th = null;
122: try {
123: th = new TutorialHelper(args[0]);
124: } catch (IOException e) {
125: e.printStackTrace();
126: System.exit(-1);
127: }
128: TutorialStep5.pmf = th.getPMF();
129: TutorialStep5.inheritance();
130: }
131:
132: }
|