use of org.jpox.samples.models.company.Manager in project tests by datanucleus.
the class JDOQLContainerTest method testContainsInParameterArray2.
public void testContainsInParameterArray2() {
try {
Manager homer = new Manager(1, "Homer", "Simpson", "homer@simpson.com", 1, "serial 1");
Manager bart = new Manager(2, "Bart", "Simpson", "bart@simpson.com", 2, "serial 2");
Manager boss = new Manager(3, "Boss", "WakesUp", "boss@wakes.up", 4, "serial 3");
Manager boss2 = new Manager(4, "Boss", "WakesUp2", "boss2@wakes.up", 5, "serial 4");
Manager boss4 = new Manager(6, "Boss", "WakesUp4", "boss4@wakes.up", 7, "serial 6");
bart.setManager(boss2);
boss.setManager(boss4);
homer.setManager(bart);
Department deptA = new Department("deptA");
Department deptB = new Department("deptB");
Department deptC = new Department("deptC");
Department deptD = new Department("deptD");
Department deptE = new Department("deptE");
boss.addDepartment(deptA);
boss.addDepartment(deptB);
boss.addDepartment(deptC);
boss2.addDepartment(deptD);
boss2.addDepartment(deptE);
Collection emps = new HashSet();
emps.add(bart);
emps.add(boss);
emps.add(homer);
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(bart);
pm.makePersistent(homer);
pm.makePersistent(boss);
pm.makePersistent(boss2);
pm.makePersistent(boss4);
tx.commit();
tx.begin();
Department[] depts = (Department[]) boss2.getDepartments().toArray(new Department[boss2.getDepartments().size()]);
// Get all Managers whose Departments are present in our array
// This is the same as the test above yet with the clauses rearranged
Query q = pm.newQuery(Manager.class);
q.setResult("distinct this");
q.setFilter("dept.contains(dept0) && dept0.manager == this");
q.declareParameters("org.jpox.samples.models.company.Department[] dept");
q.declareVariables("org.jpox.samples.models.company.Department dept0");
q.setOrdering("this.firstName ascending");
Collection c = (Collection) q.execute(depts);
// boss2
assertEquals(1, c.size());
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
} finally {
// Clean out our data
CompanyHelper.clearCompanyData(pmf);
}
}
use of org.jpox.samples.models.company.Manager in project tests by datanucleus.
the class JDOQLContainerTest method testContainsInParameterCollection.
public void testContainsInParameterCollection() {
try {
Manager homer = new Manager(1, "Homer", "Simpson", "homer@simpson.com", 1, "serial 1");
Manager bart = new Manager(2, "Bart", "Simpson", "bart@simpson.com", 2, "serial 2");
Manager boss = new Manager(3, "Boss", "WakesUp", "boss@wakes.up", 4, "serial 3");
Manager boss2 = new Manager(4, "Boss", "WakesUp2", "boss2@wakes.up", 5, "serial 4");
Manager boss4 = new Manager(6, "Boss", "WakesUp4", "boss4@wakes.up", 7, "serial 6");
bart.setManager(boss2);
boss.setManager(boss4);
homer.setManager(bart);
Department deptA = new Department("deptA");
Department deptB = new Department("deptB");
Department deptC = new Department("deptC");
Department deptD = new Department("deptD");
Department deptE = new Department("deptE");
boss.addDepartment(deptA);
boss.addDepartment(deptB);
boss.addDepartment(deptC);
boss2.addDepartment(deptD);
boss2.addDepartment(deptE);
deptA.setManager(boss);
deptB.setManager(boss);
deptC.setManager(boss);
deptD.setManager(boss2);
deptE.setManager(boss2);
Collection emps = new HashSet();
emps.add(bart);
emps.add(boss);
emps.add(homer);
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(bart);
pm.makePersistent(homer);
pm.makePersistent(boss);
pm.makePersistent(boss2);
pm.makePersistent(boss4);
tx.commit();
tx.begin();
Query q = pm.newQuery(Manager.class);
q.setFilter("emps.contains(this.manager)");
q.declareParameters("java.util.Collection emps");
Collection c = (Collection) q.execute(emps);
assertEquals(1, c.size());
assertEquals(((Manager) c.iterator().next()).getFirstName(), "Homer");
q = pm.newQuery(Manager.class);
q.setFilter("emps.contains(this.manager) && (this.lastName == 'WakesUp2' || this.lastName == 'WakesUp4')");
q.declareParameters("java.util.Collection emps");
c = (Collection) q.execute(emps);
assertEquals(0, c.size());
// should work... but
// q = pm.newQuery(Manager.class);
// q.setFilter("mgr0.departments.contains(dept) && (dept.manager != this)");
// q.setFilter("(dept.manager != this) && mgr0.departments.contains(dept)");
// q.declareVariables("org.jpox.samples.models.company.Department dept");
// q.declareParameters("org.jpox.samples.models.company.Manager mgr0");
// c = (Collection) q.execute(boss2);
// assertEquals(1,c.size());
// tx.commit();
// q = pm.newQuery(Department.class);
// q.setFilter("emps.contains(mgr0) && (mgr0.lastName == 'WakesUp2' || mgr0.lastName == 'WakesUp4') && !emps.departments.contains(this)");
// q.declareParameters("java.util.Collection emps");
// q.declareVariables("org.jpox.samples.models.company.Manager mgr0");
// c = (Collection) q.execute(emps);
// tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
} finally {
// Clean out our data
CompanyHelper.clearCompanyData(pmf);
}
}
use of org.jpox.samples.models.company.Manager in project tests by datanucleus.
the class JDOQLContainerTest method testContainsInParameterCollectionOfPCleanInstances.
public void testContainsInParameterCollectionOfPCleanInstances() {
try {
Manager homer = new Manager(1, "Homer", "Simpson", "homer@simpson.com", 1, "serial 1");
Manager bart = new Manager(2, "Bart", "Simpson", "bart@simpson.com", 2, "serial 2");
Manager boss = new Manager(3, "Boss", "WakesUp", "boss@wakes.up", 4, "serial 3");
Manager boss2 = new Manager(4, "Boss", "WakesUp2", "boss2@wakes.up", 5, "serial 4");
Manager boss4 = new Manager(6, "Boss", "WakesUp4", "boss4@wakes.up", 7, "serial 6");
bart.setManager(boss2);
boss.setManager(boss4);
homer.setManager(bart);
Collection emps = new HashSet();
emps.add(bart);
emps.add(boss);
emps.add(homer);
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(bart);
pm.makePersistent(homer);
pm.makePersistent(boss);
pm.makePersistent(boss2);
pm.makePersistent(boss4);
tx.commit();
tx.begin();
Query q1 = pm.newQuery(Manager.class);
Collection coll1 = (Collection) q1.execute();
Query q2 = pm.newQuery(Manager.class);
q2.setFilter("emps.contains(this.manager)");
q2.declareParameters("java.util.Collection emps");
Collection coll2 = (Collection) q2.execute(coll1);
assertEquals(3, coll2.size());
Iterator iter = coll2.iterator();
boolean bartPresent = false;
boolean homerPresent = false;
boolean bossPresent = false;
while (iter.hasNext()) {
Manager m = (Manager) iter.next();
if (m.getFirstName().equals("Homer")) {
homerPresent = true;
} else if (m.getFirstName().equals("Bart")) {
bartPresent = true;
} else if (m.getFirstName().equals("Boss") && m.getLastName().equals("WakesUp")) {
bossPresent = true;
}
}
assertTrue("Homer is not present!", homerPresent);
assertTrue("Bart is not present!", bartPresent);
assertTrue("Boss is not present!", bossPresent);
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
} finally {
// Clean out our data
CompanyHelper.clearCompanyData(pmf);
}
}
use of org.jpox.samples.models.company.Manager in project tests by datanucleus.
the class JDOQLContainerTest method testQueryUsesContainsTwiceOnFieldWithNamespace.
/**
* test query with "field.contains(x) && field.contains(y)"
*
* namespace put related expressions inside parentheses
*/
public void testQueryUsesContainsTwiceOnFieldWithNamespace() {
Manager homer = new Manager(1, "Homer", "Simpson", "homer@simpson.com", 1, "serial 1");
Manager bart = new Manager(2, "Bart", "Simpson", "bart@simpson.com", 2, "serial 2");
Manager boss = new Manager(3, "Boss", "WakesUp", "boss@wakes.up", 4, "serial 3");
Manager boss2 = new Manager(4, "Boss", "WakesUp2", "boss2@wakes.up", 5, "serial 4");
Manager boss4 = new Manager(6, "Boss", "WakesUp4", "boss4@wakes.up", 7, "serial 6");
bart.addSubordinate(boss);
bart.addSubordinate(boss2);
homer.addSubordinate(boss4);
boss.addSubordinate(boss2);
Department deptA = new Department("DeptA");
Department deptB = new Department("DeptB");
bart.addDepartment(deptB);
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(bart);
pm.makePersistent(homer);
pm.makePersistent(boss);
pm.makePersistent(boss2);
pm.makePersistent(boss4);
pm.makePersistent(deptA);
pm.makePersistent(deptB);
tx.commit();
tx.begin();
Query q = pm.newQuery(Manager.class);
q.setFilter("(subordinates.contains(emp1) && emp1.lastName == \"WakesUp\") && (subordinates.contains(emp2) && emp2.lastName == \"WakesUp2\")");
q.declareVariables("Employee emp1; Employee emp2");
q.declareImports("import org.jpox.samples.models.company.Employee");
Collection c = (Collection) q.execute();
assertEquals(1, c.size());
tx.commit();
tx.begin();
q = pm.newQuery(Manager.class);
q.setFilter("(subordinates.contains(emp1) && (emp1.lastName == \"WakesUp\" || emp1.lastName == \"WakesUp4\")) && (subordinates.contains(emp2) && emp2.lastName == \"WakesUp2\")");
q.declareVariables("Employee emp1; Employee emp2");
q.declareImports("import org.jpox.samples.models.company.Employee");
c = (Collection) q.execute();
assertEquals(1, c.size());
tx.commit();
tx.begin();
q = pm.newQuery(Manager.class);
q.setFilter("(subordinates.contains(emp1) && (emp1.lastName == \"WakesUp\" || emp1.lastName == \"WakesUp4\")) || (subordinates.contains(emp2) && emp2.lastName == \"WakesUp2\")");
q.declareVariables("Employee emp1; Employee emp2");
q.declareImports("import org.jpox.samples.models.company.Employee");
c = (Collection) q.execute();
assertEquals(3, c.size());
tx.commit();
} finally {
if (tx.isActive()) {
pm.currentTransaction().rollback();
}
pm.close();
// Clean out our data
CompanyHelper.clearCompanyData(pmf);
}
}
use of org.jpox.samples.models.company.Manager in project tests by datanucleus.
the class JDOQLContainerTest method testQueryUsesContainsOnceOnOneUnboundVariableInverseImplicitVariables.
/**
* test query with "field.contains(x)" using a workaround
*/
public void testQueryUsesContainsOnceOnOneUnboundVariableInverseImplicitVariables() {
Manager homer = new Manager(1, "Homer", "Simpson", "homer@simpson.com", 1, "serial 1");
Manager bart = new Manager(2, "Bart", "Simpson", "bart@simpson.com", 2, "serial 2");
Manager boss = new Manager(3, "Boss", "WakesUp", "boss@wakes.up", 4, "serial 3");
Manager boss2 = new Manager(4, "Boss", "WakesUp2", "boss2@wakes.up", 5, "serial 4");
Manager boss4 = new Manager(6, "Boss", "WakesUp4", "boss4@wakes.up", 7, "serial 6");
Department deptA = new Department("DeptA");
Department deptB = new Department("DeptB");
Department deptC = new Department("DeptC");
Department deptD = new Department("DeptD");
Department deptE = new Department("DeptE");
bart.addDepartment(deptB);
bart.addDepartment(deptA);
homer.addDepartment(deptC);
boss.addDepartment(deptD);
boss.addDepartment(deptE);
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(bart);
pm.makePersistent(homer);
pm.makePersistent(boss);
pm.makePersistent(boss2);
pm.makePersistent(boss4);
tx.commit();
tx.begin();
Query q = pm.newQuery(Manager.class);
q.setFilter("departments.contains(dept1) && dept1.name == \"DeptB\"");
Collection c = (Collection) q.execute();
assertEquals(1, c.size());
q = pm.newQuery(Manager.class);
q.setFilter("departments.contains(dept1) && (dept1.name == \"DeptB\" || dept1.name == \"DeptC\")");
c = (Collection) q.execute();
assertEquals(2, c.size());
q = pm.newQuery(Manager.class);
q.setFilter("departments.contains(dept1) && (dept1.name == \"DeptB\" || dept1.name == \"DeptA\")");
c = (Collection) q.execute();
assertEquals(1, c.size());
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
// Clean out our data
CompanyHelper.clearCompanyData(pmf);
}
}
Aggregations