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 }