View Javadoc
1   package ejava.examples.orm.ejbql;
2   
3   import java.math.BigDecimal;
4   import java.util.Calendar;
5   import java.util.Collection;
6   
7   import javax.persistence.EntityManager;
8   import javax.persistence.EntityManagerFactory;
9   import javax.persistence.EntityTransaction;
10  import javax.persistence.Persistence;
11  
12  import org.apache.commons.logging.Log;
13  import org.apache.commons.logging.LogFactory;
14  import org.junit.After;
15  import org.junit.AfterClass;
16  import org.junit.Before;
17  import org.junit.BeforeClass;
18  
19  import ejava.examples.orm.ejbql.annotated.Clerk;
20  import ejava.examples.orm.ejbql.annotated.Customer;
21  import ejava.examples.orm.ejbql.annotated.Sale;
22  import ejava.examples.orm.ejbql.annotated.Store;
23  
24  public abstract class DemoBase {
25      protected Log log = LogFactory.getLog(getClass());
26      private static final String PERSISTENCE_UNIT = "ormEJBQL";
27      protected static EntityManagerFactory emf;
28      protected EntityManager em;
29  
30      @BeforeClass
31      public static void setUpClass() {
32      	emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);    	
33      }
34      
35      @Before
36      public void setUp() throws Exception {        
37          em = emf.createEntityManager();
38          cleanup();
39          populate();
40          em.getTransaction().begin();
41      }
42  
43      @After
44      public void tearDown() throws Exception {
45          EntityTransaction tx = em.getTransaction();
46          if (tx.isActive()) {
47              if (tx.getRollbackOnly() == true) { tx.rollback(); }
48              else                              { tx.commit(); }
49          }
50          em.close();
51      }
52      
53      @AfterClass
54      public static void tearDownClass() {
55      	if (emf != null) {
56      		emf.close();
57      		emf = null;
58      	}
59      }
60      
61      @SuppressWarnings("unchecked")
62      protected void cleanup() {
63          log.info("cleaning up database");
64          em.getTransaction().begin();
65          
66          Collection<Store> stores = 
67              em.createQuery("select s from Store s").getResultList();
68          for(Store s : stores) {
69              em.remove(s);
70          }
71          em.flush();
72          
73          em.createQuery("delete from Customer c").executeUpdate();
74          em.createQuery("delete from Clerk c").executeUpdate();
75          
76          
77          em.getTransaction().commit();
78      }
79      
80      protected void populate() {
81          log.info("populating database");
82          em.getTransaction().begin();
83          
84          Store store = new Store();
85          store.setName("Big Al's");
86          em.persist(store);
87          em.flush();
88  
89          Calendar hireDate = Calendar.getInstance();
90  
91          Clerk manny = new Clerk();
92          manny.setFirstName("Manny");
93          manny.setLastName("Pep");
94          hireDate.set(1970, 01, 01, 0, 0);
95          manny.setHireDate(hireDate.getTime());
96  
97          Clerk moe = new Clerk();
98          moe.setFirstName("Moe");
99          moe.setLastName("Pep");
100         hireDate.set(1970, 01, 01, 0, 0);
101         moe.setHireDate(hireDate.getTime());
102 
103         Clerk jack = new Clerk();
104         jack.setFirstName("Jack");
105         jack.setLastName("Pep");
106         hireDate.set(1973, 01, 01, 0, 0);
107         jack.setHireDate(hireDate.getTime());
108 
109         em.persist(manny);
110         em.persist(moe);
111         em.persist(jack);
112         em.flush();
113         
114         Customer cat = new Customer();
115         cat.setFirstName("cat");
116         cat.setLastName("inhat");
117         
118         Customer one = new Customer();
119         one.setFirstName("thing");
120         one.setLastName("one");
121         
122         Customer two = new Customer();
123         two.setFirstName("thing");
124         two.setLastName("two");
125         
126         em.persist(cat);
127         em.persist(one);
128         em.persist(two);
129         em.flush();
130         
131         Calendar saleDate = Calendar.getInstance();
132 
133         Sale sale1 = new Sale();
134         sale1.setAmount(new BigDecimal(100.00));
135         sale1.setBuyerId(0);
136         saleDate.set(1998,03,10,0,0);
137         sale1.setDate(saleDate.getTime());
138         sale1.getClerks().add(manny);
139         manny.getSales().add(sale1);
140         sale1.setBuyerId(cat.getId());
141         sale1.setStore(store);
142         store.getSales().add(sale1);
143         
144         
145         Sale sale2 = new Sale();
146         sale2.setAmount(new BigDecimal(150.00));
147         sale2.setBuyerId(0);
148         saleDate.set(1999,05,11,0,0);
149         sale2.setDate(saleDate.getTime());
150         sale2.getClerks().add(manny);
151         manny.getSales().add(sale2);
152         sale2.getClerks().add(moe);
153         moe.getSales().add(sale2);
154         sale2.setBuyerId(one.getId());
155         sale2.setStore(store);
156         store.getSales().add(sale2);
157         
158         em.persist(sale1);
159         em.persist(sale2);
160         
161         em.getTransaction().commit();
162     }
163 }