use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.
the class SqliteDdlReader method getTriggers.
public List<Trigger> getTriggers(final String catalog, final String schema, final String tableName) throws SqlException {
List<Trigger> triggers = new ArrayList<Trigger>();
String sql = "SELECT " + "name AS trigger_name, " + "tbl_name AS table_name, " + "rootpage, " + "sql, " + "type AS object_type " + "FROM sqlite_master " + "WHERE table_name=? AND object_type='trigger';";
triggers = platform.getSqlTemplate().query(sql, new ISqlRowMapper<Trigger>() {
public Trigger mapRow(Row row) {
Trigger trigger = new Trigger();
trigger.setName(row.getString("trigger_name"));
trigger.setTableName(row.getString("table_name"));
trigger.setEnabled(true);
trigger.setSource(row.getString("sql"));
row.remove("sql");
trigger.setMetaData(row);
return trigger;
}
}, tableName.toLowerCase());
return triggers;
}
use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.
the class DbFill method updateRandomRecord.
private void updateRandomRecord(ISqlTransaction tran, Table table) {
DmlStatement updStatement = createUpdateDmlStatement(table);
Row row = createRandomUpdateValues(tran, updStatement, table);
Object[] values = new Object[table.getColumnCount()];
int i = 0;
for (Column column : table.getColumns()) {
if (!column.isPrimaryKey()) {
values[i++] = row.get(column.getName());
}
}
for (Column column : table.getPrimaryKeyColumns()) {
values[i++] = row.get(column.getName());
}
try {
tran.prepareAndExecute(updStatement.getSql(), values);
} catch (SqlException ex) {
log.info("Failed to update {}: {}", table.getName(), ex.getMessage());
if (continueOnError) {
if (debug) {
logRow(row);
log.info("", ex);
}
} else {
throw ex;
}
}
}
use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.
the class DbFill method createRandomUpdateValues.
private Row createRandomUpdateValues(ISqlTransaction tran, DmlStatement updStatement, Table table) {
Row row = selectRandomRow(tran, table);
if (row == null) {
log.warn("Unable to update a random record in empty table '" + table.getName() + "'.");
return null;
}
Column[] columns = updStatement.getMetaData();
// Get list of local fk reference columns
List<String> localFkRefColumns = getLocalFkRefColumns(table);
for (int i = 0; i < columns.length; i++) {
if (!(columns[i].isPrimaryKey() || localFkRefColumns.contains(columns[i].getName()))) {
row.put(columns[i].getName(), generateRandomValueForColumn(columns[i]));
}
}
return row;
}
use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.
the class Db2DdlReader method getTriggers.
public List<Trigger> getTriggers(final String catalog, final String schema, final String tableName) throws SqlException {
List<Trigger> triggers = new ArrayList<Trigger>();
log.debug("Reading triggers for: " + tableName);
JdbcSqlTemplate sqlTemplate = (JdbcSqlTemplate) platform.getSqlTemplate();
String sql = "SELECT " + "NAME as TRIGGER_NAME, " + "SCHEMA, " + "DEFINER, " + "TBNAME as TABLE_NAME, " + "TBCREATOR as TABLE_CREATOR, " + "TRIGEVENT as TRIGGER_TYPE, " + "TRIGTIME as TRIGGER_TIME, " + "GRANULARITY, " + "VALID, " + "TEXT, " + "ENABLED, " + "CREATE_TIME, " + "FUNC_PATH as FUNCTION_PATH, " + "ALTER_TIME as LAST_ALTERED " + "FROM SYSIBM.SYSTRIGGERS " + "WHERE TBNAME=? and SCHEMA=?";
triggers = sqlTemplate.query(sql, new ISqlRowMapper<Trigger>() {
public Trigger mapRow(Row row) {
Trigger trigger = new Trigger();
trigger.setName(row.getString("TRIGGER_NAME"));
trigger.setSchemaName(row.getString("SCHEMA"));
trigger.setTableName(row.getString("TABLE_NAME"));
trigger.setEnabled(row.getString("ENABLED").equals("Y"));
trigger.setSource(row.getString("TEXT"));
row.remove("TEXT");
String trigEvent = row.getString("TRIGGER_TYPE");
switch(trigEvent.charAt(0)) {
case ('I'):
trigEvent = "INSERT";
break;
case ('U'):
trigEvent = "UPDATE";
break;
case ('D'):
trigEvent = "DELETE";
}
trigger.setTriggerType(TriggerType.valueOf(trigEvent));
row.put("TRIGGER_TYPE", trigEvent);
switch(row.getString("TRIGGER_TIME").charAt(0)) {
case ('A'):
row.put("TRIGGER_TIME", "AFTER");
break;
case ('B'):
row.put("TRIGGER_TIME", "BEFORE");
break;
case ('I'):
row.put("TRIGGER_TIME", "INSTEAD OF");
}
if (row.getString("GRANULARITY").equals("S"))
row.put("GRANULARITY", "ONCE PER STATEMENT");
else if (row.getString("GRANULARITY").equals("R"))
row.put("GRANULARITY", "ONCE PER ROW");
trigger.setMetaData(row);
return trigger;
}
}, tableName, schema);
return triggers;
}
use of org.jumpmind.db.sql.Row in project symmetric-ds by JumpMind.
the class Db2zOsDdlReader method getTriggers.
public List<Trigger> getTriggers(final String catalog, final String schema, final String tableName) throws SqlException {
List<Trigger> triggers = new ArrayList<Trigger>();
log.debug("Reading triggers for: " + tableName);
JdbcSqlTemplate sqlTemplate = (JdbcSqlTemplate) platform.getSqlTemplate();
String sql = "SELECT * FROM SYSCAT.TRIGGERS " + "WHERE TABNAME=? and TABSCHEMA=?";
triggers = sqlTemplate.query(sql, new ISqlRowMapper<Trigger>() {
public Trigger mapRow(Row row) {
Trigger trigger = new Trigger();
trigger.setName(row.getString("TRIGNAME"));
trigger.setSchemaName(row.getString("TRIGSCHEMA"));
trigger.setTableName(row.getString("TABNAME"));
trigger.setEnabled(true);
trigger.setSource(row.getString("TEXT"));
row.remove("TEXT");
switch(row.getString("TRIGEVENT").charAt(0)) {
case ('I'):
row.put("TRIGEVENT", "INSERT");
break;
case ('U'):
row.put("TRIGEVENT", "UPDATE");
break;
case ('D'):
row.put("TRIGEVENT", "DELETE");
}
trigger.setTriggerType(TriggerType.valueOf(row.getString("TRIGEVENT")));
switch(row.getString("TRIGTIME").charAt(0)) {
case ('A'):
row.put("TRIGTIME", "AFTER");
break;
case ('B'):
row.put("TRIGTIME", "BEFORE");
break;
case ('I'):
row.put("TRIGTIME", "INSTEAD OF");
}
trigger.setMetaData(row);
return trigger;
}
}, tableName, schema);
return triggers;
}
Aggregations