Search in sources :

Example 46 with Row

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;
}
Also used : Trigger(org.jumpmind.db.model.Trigger) ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row) ISqlRowMapper(org.jumpmind.db.sql.ISqlRowMapper)

Example 47 with Row

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;
        }
    }
}
Also used : Column(org.jumpmind.db.model.Column) SqlException(org.jumpmind.db.sql.SqlException) DmlStatement(org.jumpmind.db.sql.DmlStatement) Row(org.jumpmind.db.sql.Row)

Example 48 with Row

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;
}
Also used : Column(org.jumpmind.db.model.Column) Row(org.jumpmind.db.sql.Row)

Example 49 with 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;
}
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 50 with Row

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

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