Search in sources :

Example 26 with Wardrobe

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

the class JDOQLContainerTest method testNotContainsKeysInMapFieldsInverse.

/**
 * Tests NOT contains in Map.keys
 */
public void testNotContainsKeysInMapFieldsInverse() {
    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.getWardrobesInverse2().put(wardrobe2, wardrobe2.getModel());
            gym.getWardrobesInverse2().put(wardrobe3, wardrobe3.getModel());
            gym2.getWardrobesInverse2().put(wardrobe1, wardrobe1.getModel());
            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.wardrobesInverse2.containsKey(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.wardrobesInverse2.containsKey(wrd) && !this.wardrobesInverse2.containsKey(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.wardrobesInverse2.containsKey(wrd) && !this.wardrobesInverse2.containsKey(wrd2) && this.wardrobesInverse2.containsKey(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 27 with Wardrobe

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

the class JDOQLContainerTest method testQueryUsesContainsValueTwiceOnFieldWithNamespace.

/**
 * test query with "field.containsValue(x) && field.containsValue(y)"
 *
 * namespace put related expressions inside parentheses
 */
public void testQueryUsesContainsValueTwiceOnFieldWithNamespace() {
    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) && w1.model == \"4 door\") && (wardrobes.containsValue(w2) && w2.model == \"3 door\")");
            q.declareVariables("Wardrobe w1; Wardrobe w2");
            Collection c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("(wardrobes.containsValue(w1) && w1.model == \"2 door\") && (wardrobes.containsValue(w2) && w2.model == \"3 door\")");
            q.declareVariables("Wardrobe w1; Wardrobe w2");
            c = (Collection) q.execute();
            assertEquals(2, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("(wardrobes.containsValue(w1) && w1.model == \"2 door\") || (wardrobes.containsValue(w2) && w2.model == \"5 door\")");
            q.declareVariables("Wardrobe w1; Wardrobe w2");
            c = (Collection) q.execute();
            assertEquals(2, 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 28 with Wardrobe

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

the class JDOQLContainerTest method testQueryUsesContainsKeyOnceOnOneUnboundVariable.

/**
 * Test for the Map.containsKey() method.
 */
public void testQueryUsesContainsKeyOnceOnOneUnboundVariable() {
    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.getWardrobes2().put(w1, w1.getModel());
        gym1.getWardrobes2().put(w2, w2.getModel());
        gym1.getWardrobes2().put(w3, w3.getModel());
        gym1.getWardrobes2().put(w4, w4.getModel());
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobes2().put(w1, w1.getModel());
        gym2.getWardrobes2().put(w2, w2.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.getEquipments2().put(ge1, ge1.getName());
        gym1.getEquipments2().put(ge2, ge2.getName());
        gym2.getEquipments2().put(ge3, ge3.getName());
        gym2.getEquipments2().put(ge4, ge4.getName());
        gym1.getPartners2().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("wardrobes2.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("wardrobes2.containsKey(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("wardrobes2.containsKey(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("equipments2.containsKey(e) && g.equipments2.containsKey(e) && e.name =='Yoga'");
            q.declareVariables("GymEquipment e; Gym g");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            assertEquals("Cinema", ((Gym) c.iterator().next()).getName());
            q = pm.newQuery(Gym.class);
            q.setFilter("equipments2.containsKey(e) && g.equipments2.containsKey(e) && e.name =='Pilates'");
            q.declareVariables("GymEquipment e; Gym g");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            assertEquals("Shopping", ((Gym) c.iterator().next()).getName());
            q = pm.newQuery(Gym.class);
            q.setFilter("partners2.containsKey(g) && (g.equipments2.containsKey(e) && e.name =='Pilates')");
            q.declareVariables("GymEquipment e; Gym g");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            assertEquals("Cinema", ((Gym) c.iterator().next()).getName());
            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 29 with Wardrobe

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

the class JDOQLContainerTest method testQueryUsesContainsValueTwiceOnOneUnboundVariableInverse.

/**
 * Test for the Map.containsValue(x) && Map.containsValue(x) method.
 */
public void testQueryUsesContainsValueTwiceOnOneUnboundVariableInverse() {
    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);
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobesInverse().put(w3.getModel(), w3);
        gym2.getWardrobesInverse().put(w4.getModel(), w4);
        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(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("wardrobesInverse.containsValue(w1) && wardrobesInverse.containsValue(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("wardrobesInverse.containsValue(w1) && wardrobesInverse.containsValue(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")");
            q.declareVariables("Wardrobe w1");
            c = (Collection) q.execute();
            assertEquals(1, c.size());
            q = pm.newQuery(Gym.class);
            q.setFilter("(wardrobesInverse.containsValue(w1) && wardrobesInverse.containsValue(w1) && (w1.model == \"4 door\" || w1.model == \"5 door\")) " + "&& (wardrobesInverse.containsValue(w2) && (w2.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)

Example 30 with Wardrobe

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

the class JDOQLContainerTest method testQueryUsesContainsKeyTwiceOnOneUnboundVariable.

/**
 * Test for the containsKey(x) && containsKey(x) method.
 */
public void testQueryUsesContainsKeyTwiceOnOneUnboundVariable() {
    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.getWardrobes2().put(w1, w1.getModel());
        gym1.getWardrobes2().put(w2, w2.getModel());
        gym1.getWardrobes2().put(w3, w3.getModel());
        gym1.getWardrobes2().put(w4, w4.getModel());
        Gym gym2 = new Gym();
        gym2.setName("Shopping");
        gym2.setLocation("Second floor");
        gym2.getWardrobes2().put(w1, w1.getModel());
        gym2.getWardrobes2().put(w2, w2.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.getEquipments2().put(ge1, ge1.getName());
        gym1.getEquipments2().put(ge2, ge2.getName());
        gym2.getEquipments2().put(ge3, ge3.getName());
        gym2.getEquipments2().put(ge4, ge4.getName());
        gym1.getPartners2().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("wardrobes2.containsKey(w1) && wardrobes2.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("wardrobes2.containsKey(w1) && wardrobes2.containsKey(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("wardrobes2.containsKey(w1) && wardrobes2.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)42 Transaction (javax.jdo.Transaction)42 Wardrobe (org.jpox.samples.models.fitness.Wardrobe)42 Query (javax.jdo.Query)40 Gym (org.jpox.samples.models.fitness.Gym)39 Cloth (org.jpox.samples.models.fitness.Cloth)36 Collection (java.util.Collection)32 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 Iterator (java.util.Iterator)1 JDODetachedFieldAccessException (javax.jdo.JDODetachedFieldAccessException)1 JDOObjectNotFoundException (javax.jdo.JDOObjectNotFoundException)1 JDOPersistenceManager (org.datanucleus.api.jdo.JDOPersistenceManager)1