/*******************************************************************************
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2013,2014 by Peter Pilgrim, Addiscombe, Surrey, XeNoNiQUe UK
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU GPL v3.0
* which accompanies this distribution, and is available at:
* http://www.gnu.org/licenses/gpl-3.0.txt
*
* Developers:
* Peter Pilgrim -- design, development and implementation
* -- Blog: http://www.xenonique.co.uk/blog/
* -- Twitter: @peter_pilgrim
*
* Contributors:
*
*******************************************************************************/
package je7hb.jpa.advanced.criteria;
import org.junit.Before;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.UserTransaction;
import java.math.BigDecimal;
import java.util.Random;
/**
* The type AbstractEmployeeCriteriaTest
*
* @author Peter Pilgrim
*/
public abstract class AbstractEmployeeCriteriaTest {
@PersistenceContext
protected EntityManager em;
@Resource
protected UserTransaction utx;
private final static String[] FIRST_NAMES = {
"Andrew", "Benjamin", "Brenda", "Diana", "Donald", "Doris",
"Evan", "Eugene", "Fred", "Gale", "Gwen", "Indigo",
"Jack", "Jacqueline", "James","Kim", "Kirk",
"Mark", "Mary", "Neville", "Nora", "Oscar",
"Peter", "Quentin", "Robert", "Sarah", "Sean",
"Sue", "Tammy", "Thomas", "Timothy",
"Wendy", "Xavier", "Zara"
};
private final static String[] LAST_NAMES = {
"Adams", "Azure", "Botham", "Bunton", "Cae", "Calvin",
"McAdam", "Divine", "Edgars", "Edmunton", "Edwards",
"Franklin", "Gough", "Hill", "Jameson", "Kasabin", "King",
"Murray", "Overton", "Peterson", "Pickford", "Rankin",
"Richardson", "Ridge", "Silvers",
"Thomson", "Watkin", "Zareen"
};
public final static int NUM_STAFF=14;
public final static int NUM_DIRECTORS=3;
@Before
public void setupDatabase() throws Exception {
utx.begin();
Region defaultRegion = new Region(801, "Central");
em.persist(defaultRegion);
em.persist(new Region(802, "SE"));
em.persist(new Region(803, "SW"));
em.persist(new Region(804, "NE"));
em.persist(new Region(805, "NW"));
TaxCode defaultTaxCode = new TaxCode(501, "FTE");
TaxCode directorTaxCode = new TaxCode(504, "Director");
em.persist( defaultTaxCode );
em.persist( new TaxCode(502, "Contractor"));
em.persist( new TaxCode(503, "Temp"));
em.persist( directorTaxCode);
em.persist( new TaxCode(505, "OutSource"));
Random rnd = new Random(System.currentTimeMillis());
int empId=0;
for (int j=0; j<NUM_STAFF; ++j ) {
++empId;
String fn = FIRST_NAMES[rnd.nextInt(FIRST_NAMES.length)];
String ln = LAST_NAMES[rnd.nextInt(LAST_NAMES.length)];
Employee e = new Employee(empId, fn, ln );
e.setSalary(new BigDecimal((rnd.nextInt(30) + 10) * 1000));
em.persist(e);
}
for (int j=0; j<NUM_DIRECTORS; ++j ) {
++empId;
String fn = FIRST_NAMES[rnd.nextInt(FIRST_NAMES.length)];
String ln = LAST_NAMES[rnd.nextInt(LAST_NAMES.length)];
Employee e = new Employee(empId, fn, ln, directorTaxCode, null );
e.setSalary(new BigDecimal((rnd.nextInt(30) + 50) * 1000));
em.persist(e);
}
utx.commit();
}
}