1 package com.imcode.db.commands;
2
3 import com.imcode.db.DatabaseConnection;
4 import com.imcode.db.DatabaseException;
5 import org.apache.commons.lang.StringUtils;
6
7 public class UpdateTableWhereColumnEqualsDatabaseCommand extends ColumnValuesDatabaseCommand {
8
9 private final String columnName;
10 private Object columnValue;
11
12 public UpdateTableWhereColumnEqualsDatabaseCommand(String tableName, String columnName,
13 Object columnValue, Object[][] columnNamesAndValues) {
14 super(tableName, columnNamesAndValues);
15 this.columnName = columnName;
16 this.columnValue = columnValue;
17 }
18
19 public Object executeOn(DatabaseConnection connection) throws DatabaseException {
20 String[] columnNamePlaceHolderPairs = new String[columnNames.length];
21 for ( int i = 0; i < columnNames.length; i++ ) {
22 columnNamePlaceHolderPairs[i] = columnNames[i]+ " = ?";
23 }
24 Object[] parameters = new Object[columnValues.length+1];
25 System.arraycopy(columnValues, 0, parameters, 0, columnValues.length);
26 parameters[parameters.length-1] = columnValue ;
27 return new Integer(connection.executeUpdate("UPDATE "+tableName+" SET "+ StringUtils.join(columnNamePlaceHolderPairs, ", ")+ " WHERE "+columnName +" = ?", parameters)) ;
28 }
29 }