Search in sources :

Example 11 with Circle

use of org.jpox.samples.interfaces.Circle in project tests by datanucleus.

the class InterfacesTest method testQueryForOneToOneShape.

/**
 * Query ShapeHolder objects that have a particular shape in the 1-1 field.
 */
public void testQueryForOneToOneShape() {
    try {
        // Create sample data for querying
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        Object holder1Id = null;
        Object rect1Id = null;
        try {
            tx.begin();
            ShapeHolder holder1 = new ShapeHolder(101);
            Rectangle rect1 = new Rectangle(200, 140, 250);
            Circle circ = new Circle(300, 45);
            holder1.setShape1(rect1);
            holder1.setShape2(circ);
            pm.makePersistent(holder1);
            ShapeHolder holder2 = new ShapeHolder(102);
            Rectangle rect2 = new Rectangle(201, 250, 140);
            Square sq = new Square(400, 500, 500);
            holder2.setShape1(rect2);
            holder2.setShape2(sq);
            pm.makePersistent(holder2);
            tx.commit();
            holder1Id = pm.getObjectId(holder1);
            rect1Id = pm.getObjectId(rect1);
        } catch (Exception e) {
            LOG.error("Exception during persist of sample data", e);
            fail("Exception creating sample data : " + e.getMessage());
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
        pm = pmf.getPersistenceManager();
        tx = pm.currentTransaction();
        try {
            tx.begin();
            Rectangle rect1 = (Rectangle) pm.getObjectById(rect1Id);
            Query query = pm.newQuery("SELECT FROM " + ShapeHolder.class.getName() + " WHERE shape1 == :myShape");
            Map params = new HashMap();
            params.put("myShape", rect1);
            Collection results = (Collection) query.executeWithMap(params);
            assertEquals("Number of ShapeHolders with 1-1 field as our Rectangle was wrong", 1, results.size());
            ShapeHolder holder = (ShapeHolder) results.iterator().next();
            assertEquals("Id of ShapeHolder was wrong", holder1Id, pm.getObjectId(holder));
            tx.commit();
        } catch (Exception e) {
            LOG.error("Exception thrown during querying for 1-1 shape", e);
            assertTrue("Exception thrown during querying for 1-1 shape : " + e.getMessage(), false);
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out data
        clean(ShapeHolder.class);
        clean(Rectangle.class);
        clean(Circle.class);
        clean(Square.class);
    }
}
Also used : Circle(org.jpox.samples.interfaces.Circle) Shape5Circle(org.jpox.samples.interfaces.Shape5Circle) ShapeHolder(org.jpox.samples.interfaces.ShapeHolder) Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) HashMap(java.util.HashMap) Shape5Rectangle(org.jpox.samples.interfaces.Shape5Rectangle) Rectangle(org.jpox.samples.interfaces.Rectangle) Collection(java.util.Collection) Shape5Square(org.jpox.samples.interfaces.Shape5Square) Square(org.jpox.samples.interfaces.Square) HashMap(java.util.HashMap) Map(java.util.Map) JDOUserException(javax.jdo.JDOUserException)

Aggregations

PersistenceManager (javax.jdo.PersistenceManager)11 Transaction (javax.jdo.Transaction)11 Circle (org.jpox.samples.interfaces.Circle)11 JDOUserException (javax.jdo.JDOUserException)10 Shape5Circle (org.jpox.samples.interfaces.Shape5Circle)10 ShapeHolder (org.jpox.samples.interfaces.ShapeHolder)9 Rectangle (org.jpox.samples.interfaces.Rectangle)8 Shape5Rectangle (org.jpox.samples.interfaces.Shape5Rectangle)8 Collection (java.util.Collection)4 Query (javax.jdo.Query)4 Iterator (java.util.Iterator)3 Extent (javax.jdo.Extent)2 Shape (org.jpox.samples.interfaces.Shape)2 Shape5Square (org.jpox.samples.interfaces.Shape5Square)2 Square (org.jpox.samples.interfaces.Square)2 Triangle (org.jpox.samples.interfaces.Triangle)2 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 SerialisedObject (org.datanucleus.samples.serialised.SerialisedObject)1