View Javadoc

1   package com.imcode.db.commands;
2   
3   import com.imcode.db.DatabaseConnection;
4   import com.imcode.db.DatabaseException;
5   import org.apache.commons.collections.CollectionUtils;
6   import org.apache.commons.collections.Transformer;
7   import org.apache.commons.lang.StringUtils;
8   
9   import java.util.Arrays;
10  import java.util.Collection;
11  
12  public class DeleteWhereColumnsEqualDatabaseCommand extends ColumnValuesDatabaseCommand {
13  
14      public DeleteWhereColumnsEqualDatabaseCommand( String table, String column, Object columnValue ) {
15          this(table, new Object[][] {{column,  columnValue}});
16      }
17  
18      public DeleteWhereColumnsEqualDatabaseCommand(String table, Object[][] columnNamesAndValues) {
19          super(table, columnNamesAndValues);
20      }
21  
22      public Object executeOn( DatabaseConnection connection ) throws DatabaseException {
23          Collection whereClauses = CollectionUtils.collect(Arrays.asList(columnNames), new ColumnNameToWhereClauseTransformer());
24          String joinedWhereClauses = StringUtils.join(whereClauses.iterator()," AND ") ;
25          return new Integer(connection.executeUpdate("DELETE FROM "+tableName+" WHERE "+joinedWhereClauses, columnValues)) ;
26      }
27  
28      private static class ColumnNameToWhereClauseTransformer implements Transformer {
29          public Object transform(Object object) {
30              return object + " = ?" ;
31          }
32      }
33  }