Search in sources :

Example 41 with Artist

use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.

the class DataContextPrefetchQualifierOverlapIT method testToManyJointOverlappingQualifierWithOuterJoin.

@Test
public void testToManyJointOverlappingQualifierWithOuterJoin() throws Exception {
    createTwoArtistsThreePaintingsDataSet();
    SelectQuery query = new SelectQuery(Artist.class);
    query.andQualifier(ExpressionFactory.likeExp("paintingArray+.paintingTitle", "AB%"));
    query.addPrefetch(Artist.PAINTING_ARRAY.joint());
    query.orQualifier(ExpressionFactory.likeExp("artistName", "A%"));
    query.addOrdering(Artist.ARTIST_NAME.asc());
    List<Artist> result = context.performQuery(query);
    assertEquals(2, result.size());
    Artist a = result.get(0);
    assertEquals(3, a.getPaintingArray().size());
    Artist a1 = result.get(1);
    assertEquals(0, a1.getPaintingArray().size());
}
Also used : SelectQuery(org.apache.cayenne.query.SelectQuery) Artist(org.apache.cayenne.testdo.testmap.Artist) Test(org.junit.Test)

Example 42 with Artist

use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.

the class DataContextProcedureQueryIT method testUpdateNoParam.

@Test
public void testUpdateNoParam() throws Exception {
    if (!accessStackAdapter.supportsStoredProcedures()) {
        return;
    }
    // create an artist with painting in the database
    createArtist(1000.0);
    ProcedureQuery q = new ProcedureQuery(UPDATE_STORED_PROCEDURE_NOPARAM);
    // since stored procedure commits its stuff, we must use an explicit
    // non-committing transaction
    BaseTransaction t = new ExternalTransaction(jdbcEventLogger);
    BaseTransaction.bindThreadTransaction(t);
    try {
        context.performGenericQuery(q);
    } finally {
        BaseTransaction.bindThreadTransaction(null);
        t.commit();
    }
    // check that price have doubled
    SelectQuery select = new SelectQuery(Artist.class);
    select.addPrefetch("paintingArray");
    List<?> artists = context.performQuery(select);
    assertEquals(1, artists.size());
    Artist a = (Artist) artists.get(0);
    Painting p = a.getPaintingArray().get(0);
    assertEquals(2000, p.getEstimatedPrice().intValue());
}
Also used : SelectQuery(org.apache.cayenne.query.SelectQuery) Artist(org.apache.cayenne.testdo.testmap.Artist) ExternalTransaction(org.apache.cayenne.tx.ExternalTransaction) BaseTransaction(org.apache.cayenne.tx.BaseTransaction) ProcedureQuery(org.apache.cayenne.query.ProcedureQuery) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 43 with Artist

use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.

the class DataContextProcedureQueryIT method testSelect2.

@Test
public void testSelect2() throws Exception {
    if (!accessStackAdapter.supportsStoredProcedures()) {
        return;
    }
    // create an artist with painting in the database
    createArtist(1000.0);
    ProcedureQuery q = new ProcedureQuery(SELECT_STORED_PROCEDURE);
    q.addParameter("aName", "An Artist");
    q.addParameter("paintingPrice", new Integer(3000));
    List<?> artists = runProcedureSelect(q);
    // check the results
    assertNotNull("Null result from StoredProcedure.", artists);
    assertEquals(1, artists.size());
    DataRow artistRow = (DataRow) artists.get(0);
    Artist a = context.objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
    Painting p = a.getPaintingArray().get(0);
    // invalidate painting, it may have been updated in the proc
    context.invalidateObjects(p);
    assertEquals(2000, p.getEstimatedPrice().intValue());
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) DataRow(org.apache.cayenne.DataRow) ProcedureQuery(org.apache.cayenne.query.ProcedureQuery) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 44 with Artist

use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.

the class DataContextProcedureQueryIT method testSelect3.

@Test
public void testSelect3() throws Exception {
    if (!accessStackAdapter.supportsStoredProcedures()) {
        return;
    }
    // create an artist with painting in the database
    createArtist(1000.0);
    // test ProcedureQuery with Procedure as root
    Procedure proc = context.getEntityResolver().getProcedure(SELECT_STORED_PROCEDURE);
    ProcedureQuery q = new ProcedureQuery(proc);
    q.addParameter("aName", "An Artist");
    q.addParameter("paintingPrice", new Integer(3000));
    List<?> artists = runProcedureSelect(q);
    // check the results
    assertNotNull("Null result from StoredProcedure.", artists);
    assertEquals(1, artists.size());
    DataRow artistRow = (DataRow) artists.get(0);
    Artist a = context.objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
    Painting p = a.getPaintingArray().get(0);
    // invalidate painting, it may have been updated in the proc
    context.invalidateObjects(p);
    assertEquals(2000, p.getEstimatedPrice().intValue());
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) Procedure(org.apache.cayenne.map.Procedure) DataRow(org.apache.cayenne.DataRow) ProcedureQuery(org.apache.cayenne.query.ProcedureQuery) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 45 with Artist

use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.

the class DataContextQueryCachingIT method testLocalCacheDataObjectsRefresh.

@Test
public void testLocalCacheDataObjectsRefresh() throws Exception {
    SelectQuery<Artist> select = new SelectQuery<>(Artist.class);
    select.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
    MockDataNode engine = MockDataNode.interceptNode(domain, getNode());
    try {
        // first run, no cache yet
        List<?> rows1 = mockupDataRows(2);
        engine.reset();
        engine.addExpectedResult(select, rows1);
        List<?> resultRows = context.performQuery(select);
        assertEquals(1, engine.getRunCount());
        assertEquals(2, resultRows.size());
        assertTrue(resultRows.get(0) instanceof DataObject);
        QueryMetadata cacheKey = select.getMetaData(context.getEntityResolver());
        assertNull(context.getParentDataDomain().getQueryCache().get(cacheKey));
        assertEquals(resultRows, context.getQueryCache().get(cacheKey));
        // second run, must refresh the cache
        List<?> rows2 = mockupDataRows(4);
        engine.reset();
        engine.addExpectedResult(select, rows2);
        select.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE_REFRESH);
        List<?> freshResultRows = context.performQuery(select);
        assertEquals(1, engine.getRunCount());
        assertEquals(4, freshResultRows.size());
        assertTrue(resultRows.get(0) instanceof DataObject);
        assertNull(context.getParentDataDomain().getQueryCache().get(cacheKey));
        assertEquals(freshResultRows, context.getQueryCache().get(cacheKey));
    } finally {
        engine.stopInterceptNode();
    }
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) SelectQuery(org.apache.cayenne.query.SelectQuery) DataObject(org.apache.cayenne.DataObject) QueryMetadata(org.apache.cayenne.query.QueryMetadata) Test(org.junit.Test)

Aggregations

Artist (org.apache.cayenne.testdo.testmap.Artist)490 Test (org.junit.Test)481 Painting (org.apache.cayenne.testdo.testmap.Painting)145 SelectQuery (org.apache.cayenne.query.SelectQuery)126 Expression (org.apache.cayenne.exp.Expression)67 UnitTestClosure (org.apache.cayenne.unit.di.UnitTestClosure)47 EJBQLQuery (org.apache.cayenne.query.EJBQLQuery)39 List (java.util.List)36 ObjectContext (org.apache.cayenne.ObjectContext)30 SQLTemplate (org.apache.cayenne.query.SQLTemplate)26 ParallelTestContainer (org.apache.cayenne.test.parallel.ParallelTestContainer)26 DataRow (org.apache.cayenne.DataRow)21 ArrayList (java.util.ArrayList)20 ValueHolder (org.apache.cayenne.ValueHolder)18 ArtGroup (org.apache.cayenne.testdo.testmap.ArtGroup)16 LifecycleCallbackRegistry (org.apache.cayenne.reflect.LifecycleCallbackRegistry)15 ObjectId (org.apache.cayenne.ObjectId)14 ROPainting (org.apache.cayenne.testdo.testmap.ROPainting)13 Gallery (org.apache.cayenne.testdo.testmap.Gallery)12 ROArtist (org.apache.cayenne.testdo.testmap.ROArtist)12