1 package ejava.jpa.examples.query;
2
3 import java.math.BigDecimal;
4 import java.util.Calendar;
5 import java.util.Collection;
6 import java.util.GregorianCalendar;
7 import javax.persistence.EntityManager;
8
9 public class SalesFactory {
10 private EntityManager em;
11
12 public SalesFactory setEntityManager(EntityManager em) {
13 this.em = em;
14 return this;
15 }
16
17 protected void populate() {
18 Store store = new Store().setName("Big Al's");
19 em.persist(store);
20
21 Clerk manny = new Clerk()
22 .setFirstName("Manny")
23 .setLastName("Pep")
24 .setHireDate(new GregorianCalendar(1970,Calendar.JANUARY, 1).getTime());
25
26 Clerk moe = new Clerk()
27 .setFirstName("Moe")
28 .setLastName("Pep")
29 .setHireDate(new GregorianCalendar(1970,Calendar.JANUARY, 1).getTime());
30
31 Clerk jack = new Clerk()
32 .setFirstName("Jack")
33 .setLastName("Pep")
34 .setHireDate(new GregorianCalendar(1973,Calendar.MARCH, 1).getTime());
35
36 em.persist(manny);
37 em.persist(moe);
38 em.persist(jack);
39
40 Customer cat = new Customer()
41 .setFirstName("cat")
42 .setLastName("inhat");
43
44 Customer one = new Customer()
45 .setFirstName("thing")
46 .setLastName("one");
47
48 Customer two = new Customer()
49 .setFirstName("thing")
50 .setLastName("two");
51
52 em.persist(cat);
53 em.persist(one);
54 em.persist(two);
55
56 Sale sale1 = new Sale();
57 sale1.setAmount(new BigDecimal(100.00))
58 .setDate(new GregorianCalendar(1998,03,10,10, 13, 35).getTime())
59 .setStore(store)
60 .setBuyerId(cat.getId())
61 .addClerk(manny);
62 manny.addSale(sale1);
63 store.addSale(sale1);
64
65 Sale sale2 = new Sale()
66 .setAmount(new BigDecimal(150.00))
67 .setDate(new GregorianCalendar(1999,05,11,14, 15, 10).getTime())
68 .setStore(store)
69 .setBuyerId(one.getId())
70 .addClerk(manny, moe);
71 manny.addSale(sale2);
72 moe.addSale(sale2);
73 store.addSale(sale2);
74
75 em.persist(sale1);
76 em.persist(sale2);
77 }
78
79 public void cleanup() {
80
81 Collection<Store> stores =
82 em.createQuery("select s from Store s", Store.class).getResultList();
83 for(Store s : stores) {
84 em.remove(s);
85 }
86 em.createQuery("delete from Customer c").executeUpdate();
87 em.createQuery("delete from Clerk c").executeUpdate();
88 }
89 }