package database.table.operations;
import database.table.internals.Row;
/**
* Author: Koushik Sen (ksen@cs.berkeley.edu)
* Date: 8/22/12
* Time: 1:31 AM
*/
public abstract class StandardOperation implements Operations {
public int tableIndex;
public String columnName;
public StandardOperation(int tableIndex, String columnName) {
this.tableIndex = tableIndex;
this.columnName = columnName;
}
public StandardOperation(String columnName) {
this.tableIndex = 0;
this.columnName = columnName;
}
public Object apply(Object old, Row[] rows) {
Object nu = rows[tableIndex].get(columnName);
if (old == null) return nu;
if (nu == null) return old;
return operation(old, nu);
}
protected abstract Object operation(Object aggregate, Object current);
public abstract String name();
}