/*
* (C) Copyright IBM Corp. 2011
*
* LICENSE: Eclipse Public License v1.0
* http://www.eclipse.org/legal/epl-v10.html
*/
package com.ibm.gaiandb.policyframework;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.derby.iapi.types.DataValueDescriptor;
import com.ibm.gaiandb.Util;
public class PolicyRowFilterX extends SQLResultFilterX {
// Use PROPRIETARY notice if class contains a main() method, otherwise use COPYRIGHT notice.
public static final String COPYRIGHT_NOTICE = "(c) Copyright IBM Corp. 2011";
private PolicyRowFilter prf = null;
public PolicyRowFilterX() { super(); prf = new PolicyRowFilter(); }
public DataValueDescriptor[][] filterRowsBatch(String dataSourceID, DataValueDescriptor[][] rows) {
System.out.println("Entered filterRowsBatch()");
prf.applyPolicyHandlerAccessTimeDelay();
ArrayList<DataValueDescriptor[]> filteredRows = new ArrayList<DataValueDescriptor[]>();
for ( DataValueDescriptor[] row : rows )
if ( prf.applyRowFilter(row) ) filteredRows.add(row);
return (DataValueDescriptor[][]) filteredRows.toArray(new DataValueDescriptor[0][]);
}
public int nextQueriedDataSource(String dataSourceID, String dataSourceDescription, int[] columnMappings) {
System.out.println("Entered nextQueriedDataSource(), args: " +
Arrays.asList(dataSourceID, dataSourceDescription, Util.intArrayAsString(columnMappings)));
return nextQueriedDataSource(dataSourceDescription, columnMappings);
}
public int setDataSourceWrapper(String wrapperID) {
System.out.println("Entered setDataSourceWrapper(), args: " + wrapperID);
return Integer.MAX_VALUE;
}
@Override
protected Object executeOperationImpl(String opID, Object... args) {
System.out.println("Entered executeOperation(), opID: " + opID + ", args: " + (null == args ? null : Arrays.asList(args)) );
return null;
}
// @Override
// protected int[] getSupportedOperationsImpl(int opID) {
// // TODO Auto-generated method stub
// return null;
// }
public void close() {}
public boolean filterRow(DataValueDescriptor[] row) { return prf.filterRow(row); }
public int nextQueriedDataSource(String dataSource, int[] columnMappings) { return prf.nextQueriedDataSource(dataSource, columnMappings); }
public boolean setForwardingNode(String nodeName) { return prf.setForwardingNode(nodeName); }
public boolean setLogicalTable(String logicalTableName, ResultSetMetaData logicalTableResultSetMetaData) {
return prf.setLogicalTable(logicalTableName, logicalTableResultSetMetaData); }
public boolean setQueriedColumns(int[] queriedColumns) { return prf.setQueriedColumns(queriedColumns); }
public boolean setUserCredentials(String credentialsStringBlock) { return prf.setUserCredentials(credentialsStringBlock); }
}