Search in sources :

Example 96 with SQLTemplate

use of org.apache.cayenne.query.SQLTemplate in project cayenne by apache.

the class SchemaUpdateStrategyBase method createOneTable.

protected void createOneTable(String entityName) {
    DataMap map = node.getEntityResolver().getDataMap("sus-map");
    String createTable = adapter.createTable(map.getDbEntity(entityName));
    context.performGenericQuery(new SQLTemplate(Object.class, createTable));
}
Also used : SQLTemplate(org.apache.cayenne.query.SQLTemplate) DataMap(org.apache.cayenne.map.DataMap)

Example 97 with SQLTemplate

use of org.apache.cayenne.query.SQLTemplate in project cayenne by apache.

the class ThrowOnPartialOrCreateSchemaStrategyIT method testMixedStrategyTableExist.

@Test
public void testMixedStrategyTableExist() throws Exception {
    createOneTable("SUS1");
    createOneTable("SUS2");
    String template = "SELECT #result('ARTIST_ID' 'int') FROM ARTIST ORDER BY ARTIST_ID";
    SQLTemplate query = new SQLTemplate(Object.class, template);
    setStrategy(ThrowOnPartialOrCreateSchemaStrategy.class);
    node.performQueries(Collections.singletonList(query), mock(OperationObserver.class));
}
Also used : SQLTemplate(org.apache.cayenne.query.SQLTemplate) OperationObserver(org.apache.cayenne.access.OperationObserver) Test(org.junit.Test)

Example 98 with SQLTemplate

use of org.apache.cayenne.query.SQLTemplate in project cayenne by apache.

the class SQLTemplateActionIT method testSelectSQLDate.

@Test
public void testSelectSQLDate() throws Exception {
    createFourArtists();
    String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.sql.Date' 'DOB') " + "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
    SQLTemplate template = new SQLTemplate(Object.class, templateString);
    sqlTemplateCustomizer.updateSQLTemplate(template);
    Map<String, Object> bindings = new HashMap<>();
    bindings.put("id", 101);
    template.setParameters(bindings);
    SQLAction plan = adapter.getAction(template, node);
    MockOperationObserver observer = new MockOperationObserver();
    try (Connection c = dataSourceFactory.getSharedDataSource().getConnection()) {
        plan.performAction(c, observer);
    }
    List<DataRow> rows = observer.rowsForQuery(template);
    assertNotNull(rows);
    assertEquals(1, rows.size());
    DataRow row = rows.get(0);
    assertNotNull(row.get("DOB"));
    assertEquals(java.sql.Date.class, row.get("DOB").getClass());
}
Also used : SQLTemplate(org.apache.cayenne.query.SQLTemplate) HashMap(java.util.HashMap) Connection(java.sql.Connection) SQLAction(org.apache.cayenne.query.SQLAction) MockOperationObserver(org.apache.cayenne.access.MockOperationObserver) DataRow(org.apache.cayenne.DataRow) Test(org.junit.Test)

Example 99 with SQLTemplate

use of org.apache.cayenne.query.SQLTemplate in project cayenne by apache.

the class SQLTemplateActionIT method testExecuteUpdateBatch.

@Test
public void testExecuteUpdateBatch() throws Exception {
    String templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME, DATE_OF_BIRTH) " + "VALUES (#bind($id), #bind($name), #bind($dob 'DATE'))";
    SQLTemplate template = new SQLTemplate(Object.class, templateString);
    Map<String, Object> bindings1 = new HashMap<>();
    bindings1.put("id", new Long(1));
    bindings1.put("name", "a1");
    bindings1.put("dob", new Date(System.currentTimeMillis()));
    Map<String, Object> bindings2 = new HashMap<>();
    bindings2.put("id", new Long(33));
    bindings2.put("name", "a$$$$$");
    bindings2.put("dob", new Date(System.currentTimeMillis()));
    template.setParameters(new Map[] { bindings1, bindings2 });
    SQLAction genericAction = adapter.getAction(template, node);
    assertTrue(genericAction instanceof SQLTemplateAction);
    SQLTemplateAction action = (SQLTemplateAction) genericAction;
    assertSame(node, action.dataNode);
    assertSame(template, action.getQuery());
    try (Connection c = dataSourceFactory.getSharedDataSource().getConnection()) {
        MockOperationObserver observer = new MockOperationObserver();
        action.performAction(c, observer);
        int[] batches = observer.countsForQuery(template);
        assertNotNull(batches);
        assertEquals(2, batches.length);
        assertEquals(1, batches[0]);
        assertEquals(1, batches[1]);
    }
    MockOperationObserver observer = new MockOperationObserver();
    SelectQuery query = new SelectQuery(Artist.class);
    query.addOrdering("db:ARTIST_ID", SortOrder.ASCENDING);
    node.performQueries(Collections.singletonList((Query) query), observer);
    List<DataRow> data = observer.rowsForQuery(query);
    assertEquals(2, data.size());
    DataRow row1 = data.get(0);
    assertEquals(bindings1.get("id"), row1.get("ARTIST_ID"));
    assertEquals(bindings1.get("name"), row1.get("ARTIST_NAME"));
    // to compare dates we need to create the binding correctly
    // assertEquals(bindings1.get("dob"), row.get("DATE_OF_BIRTH"));
    DataRow row2 = data.get(1);
    assertEquals(bindings2.get("id"), row2.get("ARTIST_ID"));
    assertEquals(bindings2.get("name"), row2.get("ARTIST_NAME"));
// to compare dates we need to create the binding correctly
// assertEquals(bindings2.get("dob"), row2.get("DATE_OF_BIRTH"));
}
Also used : SQLTemplate(org.apache.cayenne.query.SQLTemplate) SelectQuery(org.apache.cayenne.query.SelectQuery) Query(org.apache.cayenne.query.Query) HashMap(java.util.HashMap) Connection(java.sql.Connection) DataRow(org.apache.cayenne.DataRow) Date(java.sql.Date) SelectQuery(org.apache.cayenne.query.SelectQuery) SQLAction(org.apache.cayenne.query.SQLAction) MockOperationObserver(org.apache.cayenne.access.MockOperationObserver) Test(org.junit.Test)

Example 100 with SQLTemplate

use of org.apache.cayenne.query.SQLTemplate in project cayenne by apache.

the class SQLTemplateActionIT method testProperties.

@Test
public void testProperties() throws Exception {
    SQLTemplate template = new SQLTemplate(Object.class, "AAAAA");
    SQLTemplateAction action = new SQLTemplateAction(template, node);
    assertSame(template, action.getQuery());
    assertSame(node, action.dataNode);
}
Also used : SQLTemplate(org.apache.cayenne.query.SQLTemplate) Test(org.junit.Test)

Aggregations

SQLTemplate (org.apache.cayenne.query.SQLTemplate)118 Test (org.junit.Test)108 Artist (org.apache.cayenne.testdo.testmap.Artist)27 DataRow (org.apache.cayenne.DataRow)18 HashMap (java.util.HashMap)16 MockOperationObserver (org.apache.cayenne.access.MockOperationObserver)14 Query (org.apache.cayenne.query.Query)14 SelectQuery (org.apache.cayenne.query.SelectQuery)11 Painting (org.apache.cayenne.testdo.testmap.Painting)11 List (java.util.List)8 Connection (java.sql.Connection)7 SQLAction (org.apache.cayenne.query.SQLAction)7 CayenneRuntimeException (org.apache.cayenne.CayenneRuntimeException)6 Map (java.util.Map)5 OperationObserver (org.apache.cayenne.access.OperationObserver)5 DataMap (org.apache.cayenne.map.DataMap)5 AbstractPerson (org.apache.cayenne.testdo.inheritance_people.AbstractPerson)5 PersonNotes (org.apache.cayenne.testdo.inheritance_people.PersonNotes)5 Date (java.sql.Date)4 FrontBaseAdapter (org.apache.cayenne.dba.frontbase.FrontBaseAdapter)4