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;
}
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"));
}
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"));
}
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;
}
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;
}
Aggregations