Search in sources :

Example 56 with Row

use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.

the class MySqlDdlReader method getTriggers.

public List<Trigger> getTriggers(final String catalog, final String schema, final String tableName) {
    List<Trigger> triggers = new ArrayList<Trigger>();
    log.debug("Reading triggers for: " + tableName);
    JdbcSqlTemplate sqlTemplate = (JdbcSqlTemplate) platform.getSqlTemplate();
    String sql = "SELECT " + "TRIGGER_NAME, " + "TRIGGER_SCHEMA, " + "TRIGGER_CATALOG, " + "EVENT_MANIPULATION AS TRIGGER_TYPE, " + "EVENT_OBJECT_TABLE AS TABLE_NAME, " + "EVENT_OBJECT_SCHEMA AS TABLE_SCHEMA, " + "EVENT_OBJECT_CATALOG AS TABLE_CATALOG, " + "TRIG.* " + "FROM INFORMATION_SCHEMA.TRIGGERS AS TRIG " + "WHERE EVENT_OBJECT_TABLE=? and EVENT_OBJECT_SCHEMA=? ;";
    triggers = sqlTemplate.query(sql, new ISqlRowMapper<Trigger>() {

        public Trigger mapRow(Row row) {
            Trigger trigger = new Trigger();
            trigger.setName(row.getString("TRIGGER_NAME"));
            trigger.setCatalogName(row.getString("TRIGGER_CATALOG"));
            trigger.setSchemaName(row.getString("TRIGGER_SCHEMA"));
            trigger.setTableName(row.getString("TABLE_NAME"));
            trigger.setEnabled(true);
            String triggerType = row.getString("TRIGGER_TYPE");
            if (triggerType.equals("DELETE") || triggerType.equals("INSERT") || triggerType.equals("UPDATE")) {
                trigger.setTriggerType(TriggerType.valueOf(triggerType));
            }
            trigger.setMetaData(row);
            return trigger;
        }
    }, tableName, catalog);
    for (final Trigger trigger : triggers) {
        String name = trigger.getName();
        String sourceSql = "SHOW CREATE TRIGGER " + name;
        sqlTemplate.query(sourceSql, new ISqlRowMapper<Trigger>() {

            public Trigger mapRow(Row row) {
                trigger.setSource(row.getString("SQL Original Statement"));
                return trigger;
            }
        });
    }
    return triggers;
}
Also used : JdbcSqlTemplate(org.jumpmind.db.sql.JdbcSqlTemplate) Trigger(org.jumpmind.db.model.Trigger) ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row) ISqlRowMapper(org.jumpmind.db.sql.ISqlRowMapper)

Example 57 with Row

use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.

the class SqlPersistenceManagerTest method testSave.

@Test
public void testSave() {
    Date date = new Date();
    A a = new A(1, date, "Hello");
    assertTrue(manager.save(a));
    date = new Date();
    a.setLastUpdateTime(date);
    assertFalse(manager.save(a));
    Row row = getRow(1);
    assertEquals(date, row.get("last_update_time"));
}
Also used : Row(org.jumpmind.db.sql.Row) Date(java.util.Date) Test(org.junit.Test)

Example 58 with Row

use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.

the class SqlPersistenceManagerTest method testUpdate.

@Test
public void testUpdate() {
    Date date = new Date();
    A a = new A(1, date, "Hello");
    manager.insert(a, null, null, "A");
    Row row = getRow(1);
    assertEquals("Hello", row.get("note"));
    a.setNote("Goodbye");
    manager.update(a, null, null, "A");
    row = getRow(1);
    assertEquals("Goodbye", row.get("note"));
}
Also used : Row(org.jumpmind.db.sql.Row) Date(java.util.Date) Test(org.junit.Test)

Example 59 with Row

use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.

the class NodeService method findOfflineNodes.

public List<Node> findOfflineNodes(long minutesOffline) {
    List<Node> offlineNodeList = new ArrayList<Node>();
    Node myNode = findIdentity();
    if (myNode != null) {
        long offlineNodeDetectionMillis = minutesOffline * 60 * 1000;
        List<Row> list = sqlTemplate.query(getSql("findNodeHeartbeatsSql"));
        for (Row node : list) {
            String nodeId = node.getString("node_id");
            Date time = node.getDateTime("heartbeat_time");
            String offset = node.getString("timezone_offset");
            // Take the timezone of the client node into account when
            // checking the hearbeat time.
            Date clientNodeCurrentTime = null;
            if (offset != null) {
                clientNodeCurrentTime = AppUtils.getLocalDateForOffset(offset);
            } else {
                clientNodeCurrentTime = new Date();
            }
            long cutOffTimeMillis = clientNodeCurrentTime.getTime() - offlineNodeDetectionMillis;
            if (time == null || time.getTime() < cutOffTimeMillis) {
                offlineNodeList.add(findNode(nodeId));
            }
        }
    }
    return offlineNodeList;
}
Also used : Node(org.jumpmind.symmetric.model.Node) NetworkedNode(org.jumpmind.symmetric.model.NetworkedNode) ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row) Date(java.util.Date)

Example 60 with Row

use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.

the class NodeService method findOfflineNodeIds.

public List<String> findOfflineNodeIds(long minutesOffline) {
    List<String> offlineNodeList = new ArrayList<String>();
    Node myNode = findIdentity();
    if (myNode != null) {
        long offlineNodeDetectionMillis = minutesOffline * 60 * 1000;
        List<Row> list = sqlTemplate.query(getSql("findNodeHeartbeatsSql"));
        for (Row node : list) {
            String nodeId = node.getString("node_id");
            Date time = node.getDateTime("heartbeat_time");
            String offset = node.getString("timezone_offset");
            // Take the timezone of the client node into account when
            // checking the hearbeat time.
            Date clientNodeCurrentTime = null;
            if (offset != null) {
                clientNodeCurrentTime = AppUtils.getLocalDateForOffset(offset);
            } else {
                clientNodeCurrentTime = new Date();
            }
            long cutOffTimeMillis = clientNodeCurrentTime.getTime() - offlineNodeDetectionMillis;
            if (time == null || time.getTime() < cutOffTimeMillis) {
                offlineNodeList.add(nodeId);
            }
        }
    }
    return offlineNodeList;
}
Also used : Node(org.jumpmind.symmetric.model.Node) NetworkedNode(org.jumpmind.symmetric.model.NetworkedNode) ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row) Date(java.util.Date)

Aggregations

Row (org.jumpmind.db.sql.Row)78 ArrayList (java.util.ArrayList)31 ISqlRowMapper (org.jumpmind.db.sql.ISqlRowMapper)23 Trigger (org.jumpmind.db.model.Trigger)19 DmlStatement (org.jumpmind.db.sql.DmlStatement)19 JdbcSqlTemplate (org.jumpmind.db.sql.JdbcSqlTemplate)19 Column (org.jumpmind.db.model.Column)15 Table (org.jumpmind.db.model.Table)12 Date (java.util.Date)11 SqlException (org.jumpmind.db.sql.SqlException)9 ISqlTemplate (org.jumpmind.db.sql.ISqlTemplate)8 Test (org.junit.Test)8 HashMap (java.util.HashMap)7 InvocationTargetException (java.lang.reflect.InvocationTargetException)3 HashSet (java.util.HashSet)3 Map (java.util.Map)3 IDatabasePlatform (org.jumpmind.db.platform.IDatabasePlatform)3 IoException (org.jumpmind.exception.IoException)3 NetworkedNode (org.jumpmind.symmetric.model.NetworkedNode)3 Node (org.jumpmind.symmetric.model.Node)3