Search in sources :

Example 36 with Gym

use of org.jpox.samples.models.fitness.Gym in project tests by datanucleus.

the class JDOQLContainerTest method testNotContainsEntryInMapFields.

/**
 * Tests NOT contains in Map.entry
 */
public void testNotContainsEntryInMapFields() {
    try {
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            // Create some data
            tx.begin();
            Gym gym = new Gym();
            gym.setLocation("downtown");
            Gym gym2 = new Gym();
            gym2.setLocation("village");
            Wardrobe wardrobe1 = new Wardrobe();
            wardrobe1.setModel("1 door");
            Wardrobe wardrobe2 = new Wardrobe();
            wardrobe2.setModel("2 doors");
            Wardrobe wardrobe3 = new Wardrobe();
            wardrobe3.setModel("3 doors");
            gym.getWardrobes().put(wardrobe2.getModel(), wardrobe2);
            gym.getWardrobes().put(wardrobe3.getModel(), wardrobe3);
            gym2.getWardrobes().put(wardrobe1.getModel(), wardrobe1);
            pm.makePersistent(gym);
            pm.makePersistent(gym2);
            Cloth whiteShirt = new Cloth();
            whiteShirt.setName("white shirt");
            Cloth blackShirt = new Cloth();
            blackShirt.setName("black shirt");
            Cloth skirt = new Cloth();
            skirt.setName("skirt");
            wardrobe3.getClothes().add(whiteShirt);
            wardrobe3.getClothes().add(skirt);
            wardrobe2.getClothes().add(blackShirt);
            tx.commit();
            // Query the data
            tx.begin();
            Query q = pm.newQuery("SELECT FROM org.jpox.samples.models.fitness.Gym " + "WHERE !this.wardrobes.containsEntry(wrd.model,wrd) " + "PARAMETERS org.jpox.samples.models.fitness.Wardrobe wrd");
            List results = (List) q.execute(wardrobe3);
            assertEquals(1, results.size());
            assertEquals("village", ((Gym) results.get(0)).getLocation());
            // two !contains
            q = pm.newQuery("SELECT FROM org.jpox.samples.models.fitness.Gym " + "WHERE !this.wardrobes.containsEntry(wrd.model,wrd) && !this.wardrobes.containsEntry(wrd2.model,wrd2) " + "PARAMETERS org.jpox.samples.models.fitness.Wardrobe wrd,org.jpox.samples.models.fitness.Wardrobe wrd2");
            results = (List) q.execute(wardrobe3, wardrobe2);
            assertEquals(1, results.size());
            assertEquals("village", ((Gym) results.get(0)).getLocation());
            // two !contains and one contains
            q = pm.newQuery("SELECT FROM org.jpox.samples.models.fitness.Gym " + "WHERE !this.wardrobes.containsEntry(wrd.model,wrd) && !this.wardrobes.containsEntry(wrd2.model,wrd2) && this.wardrobes.containsEntry(wrd1.model,wrd1) " + "PARAMETERS org.jpox.samples.models.fitness.Wardrobe wrd,org.jpox.samples.models.fitness.Wardrobe wrd2,org.jpox.samples.models.fitness.Wardrobe wrd1");
            results = (List) q.execute(wardrobe3, wardrobe2, wardrobe1);
            assertEquals(1, results.size());
            assertEquals("village", ((Gym) results.get(0)).getLocation());
            tx.commit();
        } catch (Exception e) {
            LOG.error("Exception thrown during test", e);
            fail("Exception thrown while performing test : " + e.getMessage());
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out our data
        FitnessHelper.cleanFitnessData(pmf);
    }
}
Also used : Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) Cloth(org.jpox.samples.models.fitness.Cloth) Gym(org.jpox.samples.models.fitness.Gym) List(java.util.List) Wardrobe(org.jpox.samples.models.fitness.Wardrobe) JDOUserException(javax.jdo.JDOUserException)

Example 37 with Gym

use of org.jpox.samples.models.fitness.Gym in project tests by datanucleus.

the class JDOQLContainerTest method testQueryUsesContainsValueTwiceOnOneUnboundVariable.

/**
 * Test for the Map.containsValue(x) && Map.containsValue(x) method.
 */
public void testQueryUsesContainsValueTwiceOnOneUnboundVariable() {
    try {
        Gym gym1 = new Gym();
        gym1.setName("Cinema");
        gym1.setLocation("First floor");
        Wardrobe w1 = new Wardrobe();
        Wardrobe w2 = new Wardrobe();
        Wardrobe w3 = new Wardrobe();
        Wardrobe w4 = new Wardrobe();
        w1.setModel("2 door");
        w2.setModel("3 door");
        w3.setModel("4 door");
        w4.setModel("5 door");
        gym1.getWardrobes().put(w1.getModel(), w1);
        gym1.getWardrobes().put(w2.getModel(), w2);
        gym1.getWardrobes().put(w3.getModel(), w3);
        gym1.getWardrobes().put(w4.getModel(), w4);
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobes().put(w1.getModel(), w1);
        gym2.getWardrobes().put(w2.getModel(), w2);
        Cloth c1 = new Cloth();
        c1.setName("green shirt");
        Cloth c2 = new Cloth();
        c2.setName("red shirt");
        Cloth c3 = new Cloth();
        c3.setName("blue shirt");
        GymEquipment ge1 = new GymEquipment();
        ge1.setName("Weight");
        GymEquipment ge2 = new GymEquipment();
        ge2.setName("Yoga");
        GymEquipment ge3 = new GymEquipment();
        ge3.setName("Pilates");
        GymEquipment ge4 = new GymEquipment();
        ge4.setName("Abdominal");
        gym1.getEquipments().put(ge1.getName(), ge1);
        gym1.getEquipments().put(ge2.getName(), ge2);
        gym2.getEquipments().put(ge3.getName(), ge3);
        gym2.getEquipments().put(ge4.getName(), ge4);
        gym1.getPartners().put(gym2.getName(), gym2);
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
            pm.makePersistent(gym1);
            pm.makePersistent(gym2);
            tx.commit();
            tx.begin();
            Query q = pm.newQuery(Gym.class);
            q.setFilter("wardrobes.containsValue(w1) && wardrobes.containsValue(w1) && w1.model == \"4 door\"");
            q.declareVariables("Wardrobe w1");
            Collection c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobes.containsValue(w1) && wardrobes.containsValue(w1) && (w1.model == \"2 door\" || w1.model == \"3 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobes.containsValue(w1) && wardrobes.containsValue(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out our data
        FitnessHelper.cleanFitnessData(pmf);
    }
}
Also used : Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) Cloth(org.jpox.samples.models.fitness.Cloth) Collection(java.util.Collection) Gym(org.jpox.samples.models.fitness.Gym) Wardrobe(org.jpox.samples.models.fitness.Wardrobe) GymEquipment(org.jpox.samples.models.fitness.GymEquipment)

Example 38 with Gym

use of org.jpox.samples.models.fitness.Gym in project tests by datanucleus.

the class JDOQLContainerTest method testMapGetMethod.

/**
 * Tests the Map get() method.
 */
public void testMapGetMethod() {
    try {
        Object idGym = null;
        Gym gym;
        Gym gym2;
        Wardrobe wardrobe2;
        Wardrobe wardrobe3;
        Wardrobe wardrobe4;
        Cloth whiteShirt;
        Cloth blackShirt;
        Cloth skirt;
        // Create some data
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
            gym = new Gym();
            gym.setLocation("downtown");
            gym2 = new Gym();
            gym2.setLocation("village");
            wardrobe2 = new Wardrobe();
            wardrobe2.setModel("2 doors");
            wardrobe3 = new Wardrobe();
            wardrobe3.setModel("3 doors");
            wardrobe4 = new Wardrobe();
            wardrobe4.setModel("4 doors");
            gym.getWardrobes().put(wardrobe2.getModel(), wardrobe2);
            gym.getWardrobes().put(wardrobe3.getModel(), wardrobe3);
            gym.getWardrobes().put(wardrobe4.getModel(), wardrobe4);
            gym2.getWardrobes().put(wardrobe4.getModel(), wardrobe4);
            pm.makePersistent(gym);
            pm.makePersistent(gym2);
            whiteShirt = new Cloth();
            whiteShirt.setName("white shirt");
            blackShirt = new Cloth();
            blackShirt.setName("black shirt");
            skirt = new Cloth();
            skirt.setName("skirt");
            wardrobe3.getClothes().add(whiteShirt);
            wardrobe3.getClothes().add(skirt);
            wardrobe2.getClothes().add(blackShirt);
            tx.commit();
            idGym = JDOHelper.getObjectId(gym);
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }
        tx = pm.currentTransaction();
        try {
            tx.begin();
            // check map.get -> object expression == object literal
            Query q = pm.newQuery(Gym.class, "this.wardrobes.get(\"2 doors\") == w");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            Collection c = (Collection) q.execute(wardrobe2);
            assertEquals(1, c.size());
            assertEquals(idGym, JDOHelper.getObjectId(c.iterator().next()));
            q = pm.newQuery(Gym.class, "this.wardrobes.get(\"4 doors\") == w");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe4);
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class, "this.wardrobes.get(\"2 doors\") == w");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe3);
            assertEquals(0, c.size());
            q = pm.newQuery(Gym.class, "this.wardrobes.get(\"5 doors\") == w");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe4);
            assertEquals(0, c.size());
            // check object literal == map.get -> object expression
            q = pm.newQuery(Gym.class, "w == this.wardrobes.get(\"2 doors\")");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe2);
            assertEquals(1, c.size());
            assertEquals(idGym, JDOHelper.getObjectId(c.iterator().next()));
            q = pm.newQuery(Gym.class, "w == this.wardrobes.get(\"4 doors\")");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe4);
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class, "w == this.wardrobes.get(\"2 doors\")");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe3);
            assertEquals(0, c.size());
            q = pm.newQuery(Gym.class, "w == this.wardrobes.get(\"5 doors\")");
            q.declareParameters("org.jpox.samples.models.fitness.Wardrobe w");
            c = (Collection) q.execute(wardrobe4);
            assertEquals(0, c.size());
            // test map.get in map literals
            Map map1 = new HashMap();
            map1.put("2 doors", wardrobe2);
            q = pm.newQuery(Wardrobe.class, "this == map.get(\"2 doors\")");
            q.declareParameters("java.util.Map map");
            c = (Collection) q.execute(map1);
            assertEquals(1, c.size());
            Map map2 = new HashMap();
            q = pm.newQuery(Wardrobe.class, "this == map.get(\"2 doors\")");
            q.declareParameters("java.util.Map map");
            c = (Collection) q.execute(map2);
            assertEquals(0, c.size());
            Map map3 = new HashMap();
            map3.put("2 doors", wardrobe2);
            map3.put("3 doors", wardrobe3);
            q = pm.newQuery(Wardrobe.class, "this == map.get(\"4 doors\")");
            q.declareParameters("java.util.Map map");
            c = (Collection) q.execute(map3);
            assertEquals(0, c.size());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out our data
        FitnessHelper.cleanFitnessData(pmf);
    }
}
Also used : Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) HashMap(java.util.HashMap) Cloth(org.jpox.samples.models.fitness.Cloth) Collection(java.util.Collection) Gym(org.jpox.samples.models.fitness.Gym) Wardrobe(org.jpox.samples.models.fitness.Wardrobe) HashMap(java.util.HashMap) Map(java.util.Map)

Example 39 with Gym

use of org.jpox.samples.models.fitness.Gym in project tests by datanucleus.

the class JDOQLContainerTest method testQueryUsesContainsKeyTwiceOnOneUnboundVariableInverse.

/**
 * Test for the Map.containsKey(x) && Map.containsKey(x) method.
 */
public void testQueryUsesContainsKeyTwiceOnOneUnboundVariableInverse() {
    try {
        Gym gym1 = new Gym();
        gym1.setName("Cinema");
        gym1.setLocation("First floor");
        Wardrobe w1 = new Wardrobe();
        Wardrobe w2 = new Wardrobe();
        Wardrobe w3 = new Wardrobe();
        Wardrobe w4 = new Wardrobe();
        w1.setModel("2 door");
        w2.setModel("3 door");
        w3.setModel("4 door");
        w4.setModel("5 door");
        gym1.getWardrobesInverse2().put(w1, w1.getModel());
        gym1.getWardrobesInverse2().put(w2, w2.getModel());
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobesInverse2().put(w3, w3.getModel());
        gym2.getWardrobesInverse2().put(w4, w4.getModel());
        Cloth c1 = new Cloth();
        c1.setName("green shirt");
        Cloth c2 = new Cloth();
        c2.setName("red shirt");
        Cloth c3 = new Cloth();
        c3.setName("blue shirt");
        GymEquipment ge1 = new GymEquipment();
        ge1.setName("Weight");
        GymEquipment ge2 = new GymEquipment();
        ge2.setName("Yoga");
        GymEquipment ge3 = new GymEquipment();
        ge3.setName("Pilates");
        GymEquipment ge4 = new GymEquipment();
        ge4.setName("Abdominal");
        gym1.getEquipmentsInverse2().put(ge1, ge1.getName());
        gym1.getEquipmentsInverse2().put(ge2, ge2.getName());
        gym2.getEquipmentsInverse2().put(ge3, ge3.getName());
        gym2.getEquipmentsInverse2().put(ge4, ge4.getName());
        gym1.getPartnersInverse2().put(gym2, gym2.getName());
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
            pm.makePersistent(gym1);
            pm.makePersistent(gym2);
            tx.commit();
            tx.begin();
            Query q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse2.containsKey(w1) && wardrobesInverse2.containsKey(w1) && w1.model == \"4 door\"");
            q.declareVariables("Wardrobe w1");
            Collection c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse2.containsKey(w1) && wardrobesInverse2.containsKey(w1) && (w1.model == \"2 door\" || w1.model == \"4 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse2.containsKey(w1) && wardrobesInverse2.containsKey(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out our data
        FitnessHelper.cleanFitnessData(pmf);
    }
}
Also used : Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) Cloth(org.jpox.samples.models.fitness.Cloth) Collection(java.util.Collection) Gym(org.jpox.samples.models.fitness.Gym) Wardrobe(org.jpox.samples.models.fitness.Wardrobe) GymEquipment(org.jpox.samples.models.fitness.GymEquipment)

Example 40 with Gym

use of org.jpox.samples.models.fitness.Gym in project tests by datanucleus.

the class JDOQLContainerTest method testQueryUsesContainsValueTwiceOnFieldUsingWorkaroundInverse.

/**
 * test query with "field.containsValue(x) && field.containsValue(y)" using "or"
 * workaround. Use the workaround to bypass a deficiency on query generation
 */
public void testQueryUsesContainsValueTwiceOnFieldUsingWorkaroundInverse() {
    try {
        Gym gym1 = new Gym();
        gym1.setName("Cinema");
        gym1.setLocation("First floor");
        Wardrobe w1 = new Wardrobe();
        Wardrobe w2 = new Wardrobe();
        Wardrobe w3 = new Wardrobe();
        Wardrobe w4 = new Wardrobe();
        w1.setModel("2 door");
        w2.setModel("3 door");
        w3.setModel("4 door");
        w4.setModel("5 door");
        gym1.getWardrobesInverse().put(w1.getModel(), w1);
        gym1.getWardrobesInverse().put(w2.getModel(), w2);
        gym1.getWardrobesInverse().put(w3.getModel(), w3);
        gym1.getWardrobesInverse().put(w4.getModel(), w4);
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobesInverse().put(w1.getModel(), w1);
        gym2.getWardrobesInverse().put(w2.getModel(), w2);
        Cloth c1 = new Cloth();
        c1.setName("green shirt");
        Cloth c2 = new Cloth();
        c2.setName("red shirt");
        Cloth c3 = new Cloth();
        c3.setName("blue shirt");
        GymEquipment ge1 = new GymEquipment();
        ge1.setName("Weight");
        GymEquipment ge2 = new GymEquipment();
        ge2.setName("Yoga");
        GymEquipment ge3 = new GymEquipment();
        ge3.setName("Pilates");
        GymEquipment ge4 = new GymEquipment();
        ge4.setName("Abdominal");
        gym1.getEquipmentsInverse().put(ge1.getName(), ge1);
        gym1.getEquipmentsInverse().put(ge2.getName(), ge2);
        gym2.getEquipmentsInverse().put(ge3.getName(), ge3);
        gym2.getEquipmentsInverse().put(ge4.getName(), ge4);
        gym1.getPartnersInverse().put(gym2.getName(), gym2);
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
            pm.makePersistent(gym1);
            pm.makePersistent(gym2);
            tx.commit();
            tx.begin();
            Query q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse.containsValue(w1) && wardrobesInverse.containsValue(w2) && (w1.model == \"2 door\" || w2.model == \"3 door\")");
            q.declareVariables("Wardrobe w1; Wardrobe w2");
            Collection c = (Collection) q.execute();
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse.containsValue(w1) && wardrobesInverse.containsValue(w2) && (w1.model == \"4 door\" || w2.model == \"5 door\")");
            q.declareVariables("Wardrobe w1; Wardrobe w2");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out our data
        FitnessHelper.cleanFitnessData(pmf);
    }
}
Also used : Transaction(javax.jdo.Transaction) Query(javax.jdo.Query) PersistenceManager(javax.jdo.PersistenceManager) Cloth(org.jpox.samples.models.fitness.Cloth) Collection(java.util.Collection) Gym(org.jpox.samples.models.fitness.Gym) Wardrobe(org.jpox.samples.models.fitness.Wardrobe) GymEquipment(org.jpox.samples.models.fitness.GymEquipment)

Aggregations

PersistenceManager (javax.jdo.PersistenceManager)40 Transaction (javax.jdo.Transaction)40 Gym (org.jpox.samples.models.fitness.Gym)40 Query (javax.jdo.Query)39 Wardrobe (org.jpox.samples.models.fitness.Wardrobe)39 Cloth (org.jpox.samples.models.fitness.Cloth)34 Collection (java.util.Collection)31 GymEquipment (org.jpox.samples.models.fitness.GymEquipment)25 JDOUserException (javax.jdo.JDOUserException)14 List (java.util.List)8 HashMap (java.util.HashMap)3 Map (java.util.Map)3 JDODetachedFieldAccessException (javax.jdo.JDODetachedFieldAccessException)1 JDOObjectNotFoundException (javax.jdo.JDOObjectNotFoundException)1 JDOPersistenceManager (org.datanucleus.api.jdo.JDOPersistenceManager)1