try {
//tx.begin();
CoreData.createCoreData();
Clock testClock = new TestClock(TestConstants.DATE_BEFORE_EARLY_DEADLINE);
// Events
List<Event> events = new ArrayList<Event>();
Event event1 = getTestEvent();
events.add(event1);
Event event2 = new Event("Other event", null, null, true, RegisteredPricingStrategy.COCAMP);
events.add(event2);
events.add(new Event("Closed event", null, null, false, RegisteredPricingStrategy.COCAMP));
pm.makePersistentAll(events);
// Villages
List<Village> villages = new ArrayList<Village>();
Village village1 = new Village(TestConstants.VILLAGE1_NAME, event1);
villages.add(village1);
villages.add(new Village("Village 2", event1));
villages.add(new Village("Empty village", event1));
villages.add(new Village("Village on other event", events.get(1)));
pm.makePersistentAll(villages);
// Organisations
List<Organisation> organisations = new ArrayList<Organisation>();
Organisation orgWcf = new Organisation(TestConstants.ORG1_NAME, true);
organisations.add(orgWcf);
Organisation otherOrg = new Organisation("Unapproved organisation", false);
organisations.add(otherOrg);
pm.makePersistentAll(organisations);
// Units
List<Unit> units = new ArrayList<Unit>();
Unit unit1 = new Unit(TestConstants.UNIT1_NAME, organisations.get(0), true);
unit1.setVillageKey(village1.getKeyCheckNotNull());
// FIXME: Note, all units are in all events for now...
//unit1.addEventRegistration(event1);
//unit1.addEventRegistration(event2);
units.add(unit1);
Unit unit2 = new Unit(TestConstants.UNIT2_NAME, organisations.get(0), true);
// FIXME: Note, all units are in all events for now...
//unit2.addEventRegistration(event1);
units.add(unit2);
Unit unapprovedWcfUnit = new Unit("Unapproved unit for wcf", organisations.get(0), false);
units.add(unapprovedWcfUnit);
Unit otherOrgUnit = new Unit("Unapproved unit", organisations.get(1), false);
units.add(otherOrgUnit);
Unit otherOrgUnit2 = new Unit("Approved unit in other org", organisations.get(1), true);
units.add(otherOrgUnit2);
pm.makePersistentAll(units);
// Bookings
List<Booking> bookings = getBookings(event1, event2, unit1, unit2, unapprovedWcfUnit, otherOrgUnit2);
pm.makePersistentAll(bookings);
// Transactions
List<Transaction> transactions = new ArrayList<Transaction>();
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 1", "Comment 1", 23.32d));
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 2", "", 12.00d));
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 3", "", 130.00d));
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Adjustment, "Refund 1", "Refund test", -23.32d));
transactions.add(new Transaction(unit2.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Unit 2 payment", "", 70.00d));
// after earlybird deadline
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), afterEarlyBird.getTime(), TransactionType.Payment, "Payment after earlybird", "", 10.00d));
transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), afterEarlyBird.getTime(), TransactionType.Discount, "Discount for early payment", "", 5.00d));
pm.makePersistentAll(transactions);