Search in sources :

Example 31 with Cloth

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

the class JDOQLContainerTest method testQueryUsesContainsKeyOnceOnOneUnboundVariableImplicitVariablesInverse.

/**
 * Test for the Map.containsValue() method.
 */
public void testQueryUsesContainsKeyOnceOnOneUnboundVariableImplicitVariablesInverse() {
    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) && w1.model == \"4 door\"");
            Collection c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse2.containsKey(w1) && (w1.model == \"2 door\" || w1.model == \"4 door\")");
            c = (Collection) q.execute();
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("wardrobesInverse2.containsKey(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            try {
                q = pm.newQuery(Gym.class);
                q.setFilter("equipmentsInverse2.containsKey(e) && g.equipmentsInverse2.containsKey(e) && e.name =='Yoga'");
                c = (Collection) q.execute();
                fail("expected JDOUserException");
            } catch (JDOUserException e) {
            // expected
            }
            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) JDOUserException(javax.jdo.JDOUserException) GymEquipment(org.jpox.samples.models.fitness.GymEquipment)

Example 32 with Cloth

use of org.jpox.samples.models.fitness.Cloth 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 33 with Cloth

use of org.jpox.samples.models.fitness.Cloth 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 34 with Cloth

use of org.jpox.samples.models.fitness.Cloth 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 35 with Cloth

use of org.jpox.samples.models.fitness.Cloth 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)

Aggregations

PersistenceManager (javax.jdo.PersistenceManager)36 Query (javax.jdo.Query)36 Transaction (javax.jdo.Transaction)36 Cloth (org.jpox.samples.models.fitness.Cloth)36 Wardrobe (org.jpox.samples.models.fitness.Wardrobe)36 Gym (org.jpox.samples.models.fitness.Gym)34 Collection (java.util.Collection)28 GymEquipment (org.jpox.samples.models.fitness.GymEquipment)23 JDOUserException (javax.jdo.JDOUserException)11 List (java.util.List)8 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Iterator (java.util.Iterator)1