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