Search in sources :

Example 31 with Row

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

the class DbFill method deleteRandomRecord.

/**
     * Delete a random row in the given table or delete all rows matching selectColumns
     * in the given table.
     *
     * @param table Table to delete from.
     * @param selectColumns If provided, the rows that match this criteria are deleted.
     */
private void deleteRandomRecord(ISqlTransaction tran, Table table) {
    DmlStatement deleteStatement = createDeleteDmlStatement(table);
    Row row = selectRandomRow(tran, table);
    try {
        tran.prepareAndExecute(deleteStatement.getSql(), row.toArray(table.getPrimaryKeyColumnNames()));
    } catch (SqlException ex) {
        log.info("Failed to delete from {}: {}", table.getName(), ex.getMessage());
        if (continueOnError) {
            if (debug) {
                logRow(row);
                log.info("", ex);
            }
        } else {
            throw ex;
        }
    }
}
Also used : SqlException(org.jumpmind.db.sql.SqlException) DmlStatement(org.jumpmind.db.sql.DmlStatement) Row(org.jumpmind.db.sql.Row)

Example 32 with Row

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

the class SqlPersistenceManagerTest method testInsert.

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

Example 33 with Row

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

the class RouterService method getReadyChannels.

protected Set<String> getReadyChannels() {
    List<DataGap> dataGaps = gapDetector.getDataGaps();
    int dataIdSqlType = engine.getSymmetricDialect().getSqlTypeForIds();
    int numberOfGapsToQualify = parameterService.getInt(ParameterConstants.ROUTING_MAX_GAPS_TO_QUALIFY_IN_SQL, 100);
    int maxGapsBeforeGreaterThanQuery = parameterService.getInt(ParameterConstants.ROUTING_DATA_READER_THRESHOLD_GAPS_TO_USE_GREATER_QUERY, 100);
    String sql;
    Object[] args;
    int[] types;
    if (maxGapsBeforeGreaterThanQuery > 0 && dataGaps.size() > maxGapsBeforeGreaterThanQuery) {
        sql = getSql("selectChannelsUsingStartDataId");
        args = new Object[] { dataGaps.get(0).getStartId() };
        types = new int[] { dataIdSqlType };
    } else {
        sql = qualifyUsingDataGaps(dataGaps, numberOfGapsToQualify, getSql("selectChannelsUsingGapsSql"));
        int numberOfArgs = 2 * (numberOfGapsToQualify < dataGaps.size() ? numberOfGapsToQualify : dataGaps.size());
        args = new Object[numberOfArgs];
        types = new int[numberOfArgs];
        for (int i = 0; i < numberOfGapsToQualify && i < dataGaps.size(); i++) {
            DataGap gap = dataGaps.get(i);
            args[i * 2] = gap.getStartId();
            types[i * 2] = dataIdSqlType;
            if ((i + 1) == numberOfGapsToQualify && (i + 1) < dataGaps.size()) {
                args[i * 2 + 1] = dataGaps.get(dataGaps.size() - 1).getEndId();
            } else {
                args[i * 2 + 1] = gap.getEndId();
            }
            types[i * 2 + 1] = dataIdSqlType;
        }
    }
    final Set<String> readyChannels = new HashSet<String>();
    sqlTemplate.query(sql, new ISqlRowMapper<String>() {

        public String mapRow(Row row) {
            readyChannels.add(row.getString("channel_id"));
            return null;
        }
    }, args, types);
    return readyChannels;
}
Also used : DataGap(org.jumpmind.symmetric.model.DataGap) Row(org.jumpmind.db.sql.Row) HashSet(java.util.HashSet)

Example 34 with Row

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

the class ParameterService method readParametersFromDatabase.

protected TypedProperties readParametersFromDatabase(String sqlKey, Object... values) {
    final TypedProperties properties = new TypedProperties();
    final IParameterFilter filter = extensionService != null ? extensionService.getExtensionPoint(IParameterFilter.class) : null;
    sqlTemplate.query(sql.getSql(sqlKey), new ISqlRowMapper<Object>() {

        public Object mapRow(Row row) {
            String key = row.getString("param_key");
            String value = row.getString("param_value");
            if (filter != null) {
                value = filter.filterParameter(key, value);
            }
            if (value != null) {
                properties.setProperty(key, value);
            }
            return row;
        }
    }, values);
    return properties;
}
Also used : IParameterFilter(org.jumpmind.symmetric.config.IParameterFilter) Row(org.jumpmind.db.sql.Row) TypedProperties(org.jumpmind.properties.TypedProperties)

Example 35 with Row

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

the class PurgeService method selectIdsAndDelete.

protected int selectIdsAndDelete(String selectSql, String fieldName, String deleteSql) {
    List<Row> results = sqlTemplate.query(selectSql);
    int rowCount = 0;
    if (!results.isEmpty()) {
        List<Integer> ids = new ArrayList<Integer>(results.size());
        for (Row row : results) {
            ids.add(row.getInt(fieldName));
        }
        results = null;
        StringBuilder placeHolders = new StringBuilder(ids.size() * 2);
        for (int i = 0; i < ids.size(); i++) {
            placeHolders.append("?,");
        }
        placeHolders.setLength(placeHolders.length() - 1);
        String deleteStatement = deleteSql.replace("?", placeHolders);
        rowCount = sqlTemplate.update(deleteStatement, ids.toArray());
    }
    return rowCount;
}
Also used : ArrayList(java.util.ArrayList) Row(org.jumpmind.db.sql.Row)

Aggregations

Row (org.jumpmind.db.sql.Row)66 ArrayList (java.util.ArrayList)27 ISqlRowMapper (org.jumpmind.db.sql.ISqlRowMapper)23 Trigger (org.jumpmind.db.model.Trigger)19 JdbcSqlTemplate (org.jumpmind.db.sql.JdbcSqlTemplate)19 DmlStatement (org.jumpmind.db.sql.DmlStatement)13 Column (org.jumpmind.db.model.Column)11 Table (org.jumpmind.db.model.Table)9 Date (java.util.Date)8 HashMap (java.util.HashMap)7 ISqlTemplate (org.jumpmind.db.sql.ISqlTemplate)7 Test (org.junit.Test)5 HashSet (java.util.HashSet)3 IDatabasePlatform (org.jumpmind.db.platform.IDatabasePlatform)3 SqlException (org.jumpmind.db.sql.SqlException)3 NetworkedNode (org.jumpmind.symmetric.model.NetworkedNode)3 Node (org.jumpmind.symmetric.model.Node)3 Map (java.util.Map)2 NotImplementedException (org.apache.commons.lang.NotImplementedException)2 Database (org.jumpmind.db.model.Database)2