public Integer deleteByDateInterval( DeleteDataForm.DateIntervalType dateIntervalType, final Integer dateIntervalSize) { String sql = "DELETE FROM " + tableName + " WHERE occurred_at < DATE_SUB(CURDATE(), INTERVAL ? " + dateIntervalType.toString() + ")"; return jdbcTemplate.update( sql, new PreparedStatementSetter() { public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(1, dateIntervalSize); } }); }
public Integer deleteByCriteria( final String errorSource, final String errorLevel, final DeleteDataForm.DateIntervalType dateIntervalType, final Integer dateIntervalSize) { // TODO: research java db criteria... final LinkedList<String> filters = new LinkedList<String>(); if (null != errorSource) { filters.add("error_source = ?"); } if (null != errorLevel) { filters.add("error_level = ?"); } if (null != dateIntervalType) { String filterOccurredAt = "occurred_at < DATE_SUB(CURDATE(), INTERVAL ? " + dateIntervalType.name() + ")"; filters.add(filterOccurredAt); } if (filters.size() == 0) { return 0; } String sql = "DELETE FROM " + tableName + " WHERE " + String.join(" AND ", filters); return jdbcTemplate.update( sql, new PreparedStatementSetter() { public void setValues(PreparedStatement ps) throws SQLException { Integer parameterIndex = 1; if (null != errorSource) { ps.setString(parameterIndex++, errorSource); } if (null != errorLevel) { ps.setString(parameterIndex++, errorLevel); } if (null != dateIntervalType) { ps.setInt(parameterIndex, dateIntervalSize); } } }); }