use of org.jpox.samples.models.company.Developer in project tests by datanucleus.
the class SQLQueryTest method testQueryFromJdoqueryFile.
/**
* Test of a query specified in a jdo query file.
*/
public void testQueryFromJdoqueryFile() throws Exception {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Create some inherited data to query and query using a ResultClass without constructor
tx = pm.currentTransaction();
tx.begin();
Developer p3 = new Developer(13, "James", "Java", "james@java.com", (float) 15.00, "1234569", new Integer(3), "jdo");
pm.makePersistent(p3);
tx.commit();
// Run the query (specified in a jdoquery file)
tx.begin();
Query query = pm.newNamedQuery(null, "DeveloperSkills");
List results = (List) query.execute("jdo");
Iterator resultsIter = results.iterator();
while (resultsIter.hasNext()) {
Object skill = resultsIter.next();
LOG.debug(">> Skill : " + skill);
}
} catch (JDOUserException ue) {
ue.printStackTrace();
LOG.error(ue);
fail("Exception thrown while persisting object and performing query : " + ue.getMessage());
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
clean(Developer.class);
}
}
use of org.jpox.samples.models.company.Developer in project tests by datanucleus.
the class SQLQueryTest method testWithCandidateClassWithoutResultClass.
/**
* Test of a query with a candidate class, without a result class.
* @throws Exception Thrown if an error occurs
*/
public void testWithCandidateClassWithoutResultClass() throws Exception {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Create some basic data to query
tx.begin();
Person p1 = new Person(1, "First", "Person", "first.person@jpox.org");
pm.makePersistent(p1);
Person p2 = new Person(2, "Second", "Person", "second.person@jpox.org");
pm.makePersistent(p2);
tx.commit();
// Query for a basic object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query query = pm.newNamedQuery(Person.class, "PeopleWithEmail");
List results = (List) query.execute("second.person@jpox.org");
Iterator iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Person", obj.getClass().getName().equals(Person.class.getName()));
Person p = (Person) obj;
assertTrue("Query with candidate class has returned the wrong Person object.", p.getPersonNum() == 2);
assertTrue("Query with candidate class has returned the wrong Person object.", p.getFirstName().equals("Second"));
}
tx.commit();
// Create some inherited data to query
tx = pm.currentTransaction();
tx.begin();
Developer p3 = new Developer(10, "James", "Java", "james@java.com", (float) 12.00, "1234567", new Integer(1), "jdo");
pm.makePersistent(p3);
tx.commit();
// Query for an inherited object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query inhQuery = pm.newNamedQuery(Developer.class, "DeveloperWithSkill");
results = (List) inhQuery.execute("jdo");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Developer", obj.getClass().getName().equals(Developer.class.getName()));
Developer p = (Developer) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("jdo"));
}
tx.commit();
// Create some inherited data to query
tx = pm.currentTransaction();
tx.begin();
Developer p4 = new Developer(11, "Paul", "Perl", "paul@perl.com", (float) 6.00, "1234568", new Integer(2), "perl");
p4.setGlobalNum("GUID-p4");
pm.makePersistent(p4);
tx.commit();
// Query for an inherited object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query inhQuery2 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoin");
results = (List) inhQuery2.execute("perl");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Developer", obj.getClass().getName().equals(Developer.class.getName()));
Developer p = (Developer) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("perl"));
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getGlobalNum().equals("GUID-p4"));
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
LOG.error(e);
fail("Exception thrown while performing SQL query using candidate class : " + e.getMessage());
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
clean(Developer.class);
clean(Person.class);
}
}
use of org.jpox.samples.models.company.Developer in project tests by datanucleus.
the class SQLQueryTest method testWithCandidateClassWithoutResultClass.
/**
* Test of a query with a candidate class, without a result class.
* @throws Exception Thrown if an error occurs
*/
public void testWithCandidateClassWithoutResultClass() throws Exception {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Create some basic data to query
tx.begin();
Person p1 = new Person(1, "First", "Person", "first.person@jpox.org");
pm.makePersistent(p1);
Person p2 = new Person(2, "Second", "Person", "second.person@jpox.org");
pm.makePersistent(p2);
tx.commit();
// Query for a basic object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query query = pm.newNamedQuery(Person.class, "PeopleWithEmail");
List results = (List) query.execute("second.person@jpox.org");
Iterator iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Person", obj.getClass().getName().equals(Person.class.getName()));
Person p = (Person) obj;
assertTrue("Query with candidate class has returned the wrong Person object.", p.getPersonNum() == 2);
assertTrue("Query with candidate class has returned the wrong Person object.", p.getFirstName().equals("Second"));
}
tx.commit();
// Create some inherited data to query
tx = pm.currentTransaction();
tx.begin();
Developer p3 = new Developer(10, "James", "Java", "james@java.com", (float) 12.00, "1234567", new Integer(1), "jdo");
pm.makePersistent(p3);
tx.commit();
// Query for an inherited object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query inhQuery = pm.newNamedQuery(Developer.class, "DeveloperWithSkill");
results = (List) inhQuery.execute("jdo");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Developer", obj.getClass().getName().equals(Developer.class.getName()));
Developer p = (Developer) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("jdo"));
}
tx.commit();
// Create some inherited data to query
tx = pm.currentTransaction();
tx.begin();
Developer p4 = new Developer(11, "Paul", "Perl", "paul@perl.com", (float) 6.00, "1234568", new Integer(2), "perl");
p4.setGlobalNum("GUID-p4");
pm.makePersistent(p4);
tx.commit();
// Query for an inherited object, including the PK field(s)
tx = pm.currentTransaction();
tx.begin();
Query inhQuery2 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoin");
results = (List) inhQuery2.execute("perl");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been Developer", obj.getClass().getName().equals(Developer.class.getName()));
Developer p = (Developer) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("perl"));
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getGlobalNum().equals("GUID-p4"));
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
LOG.error(e);
fail("Exception thrown while performing SQL query using candidate class : " + e.getMessage());
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
clean(Developer.class);
clean(Person.class);
}
}
use of org.jpox.samples.models.company.Developer in project tests by datanucleus.
the class SQLQueryTest method testWithCandidateClassWithResultClass.
/**
* Test of SQL queries with a candidate class AND a result class.
*/
public void testWithCandidateClassWithResultClass() throws Exception {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Create some basic data to query, and query using a ResultClass that is constructor based
tx = pm.currentTransaction();
tx.begin();
Person pers1 = new Person(234568, "Homer", "Simpson", "homer.simpson@fox.com");
pers1.setAge(45);
Person pers2 = new Person(234578, "Marge", "Simpson", "marge.simpson@fox.com");
pers1.setAge(42);
pm.makePersistent(pers1);
pm.makePersistent(pers2);
tx.commit();
tx = pm.currentTransaction();
tx.begin();
try {
Query amountQuery = pm.newNamedQuery(Person.class, "PersonDetails");
List results = (List) amountQuery.execute();
Iterator resultsIter = results.iterator();
while (resultsIter.hasNext()) {
Object obj = resultsIter.next();
assertEquals("ResultClass of query is incorrect.", PersonalDetails.class.getName(), obj.getClass().getName());
}
amountQuery.closeAll();
} catch (JDOUserException e) {
fail(e.getMessage());
}
tx.commit();
// Create some inherited data to query and query using a ResultClass without constructor
tx = pm.currentTransaction();
tx.begin();
Developer p3 = new Developer(13, "James", "Java", "james@java.com", (float) 15.00, "1234569", new Integer(3), "jdo");
pm.makePersistent(p3);
tx.commit();
tx = pm.currentTransaction();
tx.begin();
Query inhQuery = pm.newNamedQuery(Developer.class, "DeveloperWithSkillForResult");
List results = (List) inhQuery.execute("jdo");
Iterator iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been DeveloperRC", obj.getClass().getName().equals(DeveloperRC.class.getName()));
DeveloperRC p = (DeveloperRC) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("jdo"));
}
tx.commit();
// Create some inherited data to query and query using INNER JOIN and users class
tx = pm.currentTransaction();
tx.begin();
Developer p4 = new Developer(100, "Mike", "Microsoft", "mike@microsoft.com", 10, "1234570", new Integer(3), ".net");
p4.setGlobalNum("GUID-p4");
pm.makePersistent(p4);
tx.commit();
tx = pm.currentTransaction();
tx.begin();
Query inhQuery2 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoinForResult");
results = (List) inhQuery2.execute(".net");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been DeveloperRC", obj.getClass().getName().equals(DeveloperRC.class.getName()));
DeveloperRC p = (DeveloperRC) obj;
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", p.getSKILL().equals(".net"));
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", p.getGlobalNum().equals("GUID-p4"));
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, p.personNum);
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 10, (int) p.salary);
}
tx.commit();
// Create some inherited data to query and query using HashMap.
tx = pm.currentTransaction();
tx.begin();
Developer p5 = new Developer();
p5.setFirstName("John");
p5.setSKILL("uml");
p5.setGlobalNum("GUID-p5");
p5.setSalary(10);
p5.setPersonNum(100);
p5.setSerialNo("" + new Random(System.currentTimeMillis()).nextInt());
pm.makePersistent(p5);
tx.commit();
// ResultClass = java.util.HashMap
tx = pm.currentTransaction();
tx.begin();
Query inhQuery3 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoinForResultHashMap");
results = (List) inhQuery3.execute("uml");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been HashMap", obj.getClass().getName().equals(HashMap.class.getName()));
HashMap p = (HashMap) obj;
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "SKILL").equals("uml"));
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "GLOBALNUM").equals("GUID-p5"));
Number salary = (Number) getValueForKeyInMapCaseInsensitive(p, "salary");
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 10, salary.intValue());
Object personNumObj = getValueForKeyInMapCaseInsensitive(p, "PERSONNUM");
if (personNumObj instanceof Long) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((Long) personNumObj).intValue());
} else if (personNumObj instanceof BigDecimal) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((BigDecimal) personNumObj).intValue());
} else {
fail("Test doest support keys in map of type " + personNumObj.getClass());
}
}
tx.commit();
// ResultClass = java.util.Map
tx = pm.currentTransaction();
tx.begin();
Query inhQuery4 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoinForResultMap");
results = (List) inhQuery4.execute("uml");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been HashMap", obj.getClass().getName().equals(HashMap.class.getName()));
HashMap p = (HashMap) obj;
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "SKILL").equals("uml"));
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "GLOBALNUM").equals("GUID-p5"));
Number salary = (Number) getValueForKeyInMapCaseInsensitive(p, "salary");
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 10, salary.intValue());
Object personNumObj = getValueForKeyInMapCaseInsensitive(p, "PERSONNUM");
if (personNumObj instanceof Long) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((Long) personNumObj).intValue());
} else if (personNumObj instanceof BigDecimal) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((BigDecimal) personNumObj).intValue());
} else {
fail("Test doest support keys in map of type " + personNumObj.getClass());
}
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
LOG.error(e);
fail("Exception thrown while querying with candidate class and result class : " + e.getMessage());
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
clean(Developer.class);
clean(Person.class);
}
}
use of org.jpox.samples.models.company.Developer in project tests by datanucleus.
the class SQLQueryTest method testWithoutCandidateClassWithResultClass.
/**
* Test of SQL queries when no candidate class is defined, and a result class is given.
*/
public void testWithoutCandidateClassWithResultClass() throws Exception {
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Add a couple of payments
tx.begin();
Person pers1 = new Person(234568, "Homer", "Simpson", "homer.simpson@fox.com");
pers1.setAge(45);
Person pers2 = new Person(234578, "Marge", "Simpson", "marge.simpson@fox.com");
pers1.setAge(42);
pm.makePersistent(pers1);
pm.makePersistent(pers2);
tx.commit();
// Test using ResultClass that is constructor-based
tx.begin();
try {
String sqlText = "SELECT FIRSTNAME, LASTNAME, AGE FROM PERSON";
Query query = pm.newQuery("javax.jdo.query.SQL", sqlText);
query.setResultClass(PersonalDetails.class);
List results = (List) query.execute();
Iterator resultsIter = results.iterator();
while (resultsIter.hasNext()) {
Object obj = resultsIter.next();
assertEquals("ResultClass of query is incorrect.", PersonalDetails.class.getName(), obj.getClass().getName());
}
query.closeAll();
} catch (JDOUserException e) {
fail(e.getMessage());
}
tx.commit();
tx.begin();
Developer p3 = new Developer();
p3.setFirstName("John");
p3.setSKILL("jdo");
p3.setGlobalNum("GUID-p3");
p3.setSerialNo("" + new Random(System.currentTimeMillis()).nextInt());
pm.makePersistent(p3);
Query inhQuery = pm.newNamedQuery(Developer.class, "DeveloperWithSkillForResult");
inhQuery.setClass(null);
List results = (List) inhQuery.execute("jdo");
Iterator iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been DeveloperRC", obj.getClass().getName().equals(DeveloperRC.class.getName()));
DeveloperRC p = (DeveloperRC) obj;
assertTrue("Query with candidate class has returned the wrong Developer object.", p.getSKILL().equals("jdo"));
}
tx.commit();
tx.begin();
Developer p4 = new Developer();
p4.setFirstName("John");
p4.setSKILL("ejb");
p4.setGlobalNum("GUID-p4");
p4.setSalary(10);
p4.setPersonNum(100);
p4.setSerialNo("" + new Random(System.currentTimeMillis()).nextInt());
pm.makePersistent(p4);
Query inhQuery2 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoinForResult");
inhQuery2.setClass(null);
results = (List) inhQuery2.execute("ejb");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been DeveloperRC", obj.getClass().getName().equals(DeveloperRC.class.getName()));
DeveloperRC p = (DeveloperRC) obj;
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", p.getSKILL().equals("ejb"));
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", p.getGlobalNum().equals("GUID-p4"));
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, p.personNum);
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 10, (int) p.salary);
}
tx.commit();
tx.begin();
Developer p5 = new Developer();
p5.setFirstName("John");
p5.setSKILL("sap");
p5.setGlobalNum("GUID-p5");
p5.setSalary(10);
p5.setPersonNum(100);
p5.setSerialNo("" + new Random(System.currentTimeMillis()).nextInt());
pm.makePersistent(p5);
Query inhQuery3 = pm.newNamedQuery(Developer.class, "DeveloperWithSkillUsingJoinForResultHashMap");
inhQuery3.setClass(null);
results = (List) inhQuery3.execute("sap");
iter = results.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
assertTrue("Query with candidate class has returned the wrong type of object : was " + obj.getClass().getName() + " but should have been HashMap", obj.getClass().getName().equals(HashMap.class.getName()));
HashMap p = (HashMap) obj;
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "SKILL").equals("sap"));
assertTrue("Query with candidate class has returned the wrong DeveloperRC object.", getValueForKeyInMapCaseInsensitive(p, "GLOBALNUM").equals("GUID-p5"));
Number salary = (Number) getValueForKeyInMapCaseInsensitive(p, "SALARY");
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 10, salary.intValue());
Object personNumObj = getValueForKeyInMapCaseInsensitive(p, "PERSONNUM");
if (personNumObj instanceof Long) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((Long) personNumObj).intValue());
} else if (personNumObj instanceof BigDecimal) {
assertEquals("Query with candidate class has returned the wrong DeveloperRC object.", 100, ((BigDecimal) personNumObj).intValue());
} else {
fail("Test doest support keys in map of type " + personNumObj.getClass());
}
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
clean(Developer.class);
clean(Person.class);
}
}
Aggregations