Search in sources :

Example 1 with Bag

use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.

the class DataContextDisjointByIdPrefetch_ExtrasIT method testJointPrefetchInChild.

@Test
public void testJointPrefetchInChild() throws Exception {
    createBagWithTwoBoxesAndPlentyOfBallsDataSet();
    SelectQuery<Bag> query = new SelectQuery<Bag>(Bag.class);
    query.addPrefetch(Bag.BOXES.disjointById());
    query.addPrefetch(Bag.BOXES.dot(Box.BALLS).joint());
    final List<Bag> result = context.select(query);
    queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {

        @Override
        public void execute() {
            assertFalse(result.isEmpty());
            Bag bag = result.get(0);
            List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES.getName());
            assertNotNull(boxes);
            assertFalse(((ValueHolder) boxes).isFault());
            assertEquals(2, boxes.size());
            Box big = null;
            List<String> names = new ArrayList<String>();
            for (Box box : boxes) {
                assertEquals(PersistenceState.COMMITTED, box.getPersistenceState());
                names.add(box.getName());
                if (box.getName().equals("big")) {
                    big = box;
                }
            }
            assertTrue(names.contains("big"));
            assertTrue(names.contains("small"));
            List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS.getName());
            assertNotNull(balls);
            assertFalse(((ValueHolder) balls).isFault());
            assertEquals(2, balls.size());
            List<Integer> volumes = new ArrayList<Integer>();
            for (Ball ball : balls) {
                assertEquals(PersistenceState.COMMITTED, ball.getPersistenceState());
                volumes.add(ball.getThingVolume());
            }
            assertTrue(volumes.containsAll(Arrays.asList(10, 20)));
        }
    });
}
Also used : Ball(org.apache.cayenne.testdo.things.Ball) UnitTestClosure(org.apache.cayenne.unit.di.UnitTestClosure) Bag(org.apache.cayenne.testdo.things.Bag) Box(org.apache.cayenne.testdo.things.Box) ValueHolder(org.apache.cayenne.ValueHolder) SelectQuery(org.apache.cayenne.query.SelectQuery) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 2 with Bag

use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.

the class DataContextDisjointByIdPrefetch_ExtrasIT method testFlattenedRelationship.

@Test
public void testFlattenedRelationship() throws Exception {
    createBagWithTwoBoxesAndPlentyOfBallsDataSet();
    SelectQuery query = new SelectQuery(Bag.class);
    query.addPrefetch(Bag.BALLS.disjointById());
    final List<Bag> result = context.performQuery(query);
    queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {

        public void execute() {
            assertFalse(result.isEmpty());
            Bag b1 = result.get(0);
            List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS.getName());
            assertNotNull(balls);
            assertFalse(((ValueHolder) balls).isFault());
            assertEquals(6, balls.size());
            List<Integer> volumes = new ArrayList<Integer>();
            for (Ball b : balls) {
                assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
                volumes.add(b.getThingVolume());
            }
            assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40, 20, 40)));
        }
    });
}
Also used : SelectQuery(org.apache.cayenne.query.SelectQuery) Ball(org.apache.cayenne.testdo.things.Ball) UnitTestClosure(org.apache.cayenne.unit.di.UnitTestClosure) Bag(org.apache.cayenne.testdo.things.Bag) ArrayList(java.util.ArrayList) List(java.util.List) ValueHolder(org.apache.cayenne.ValueHolder) Test(org.junit.Test)

Example 3 with Bag

use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.

the class DataContextDisjointByIdPrefetch_ExtrasIT method testLongFlattenedRelationship.

@Test
public void testLongFlattenedRelationship() throws Exception {
    createBagWithTwoBoxesAndPlentyOfBallsDataSet();
    SelectQuery query = new SelectQuery(Bag.class);
    query.addPrefetch(Bag.THINGS.disjointById());
    final List<Bag> result = context.performQuery(query);
    queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {

        public void execute() {
            assertFalse(result.isEmpty());
            Bag b1 = result.get(0);
            List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS.getName());
            assertNotNull(things);
            assertFalse(((ValueHolder) things).isFault());
            assertEquals(6, things.size());
            List<Integer> volumes = new ArrayList<Integer>();
            for (Thing t : things) {
                assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
                volumes.add(t.getVolume());
            }
            assertTrue(volumes.containsAll(Arrays.asList(10, 20, 20, 30, 40, 40)));
        }
    });
}
Also used : SelectQuery(org.apache.cayenne.query.SelectQuery) UnitTestClosure(org.apache.cayenne.unit.di.UnitTestClosure) Bag(org.apache.cayenne.testdo.things.Bag) ArrayList(java.util.ArrayList) List(java.util.List) ValueHolder(org.apache.cayenne.ValueHolder) Thing(org.apache.cayenne.testdo.things.Thing) Test(org.junit.Test)

Aggregations

ArrayList (java.util.ArrayList)3 List (java.util.List)3 ValueHolder (org.apache.cayenne.ValueHolder)3 SelectQuery (org.apache.cayenne.query.SelectQuery)3 Bag (org.apache.cayenne.testdo.things.Bag)3 UnitTestClosure (org.apache.cayenne.unit.di.UnitTestClosure)3 Test (org.junit.Test)3 Ball (org.apache.cayenne.testdo.things.Ball)2 Box (org.apache.cayenne.testdo.things.Box)1 Thing (org.apache.cayenne.testdo.things.Thing)1