package com.github.lwhite1.tablesaw.filtering;
import com.github.lwhite1.tablesaw.api.ColumnType;
import com.github.lwhite1.tablesaw.api.IntColumn;
import com.github.lwhite1.tablesaw.api.LongColumn;
import com.github.lwhite1.tablesaw.api.ShortColumn;
import com.github.lwhite1.tablesaw.api.Table;
import com.github.lwhite1.tablesaw.columns.Column;
import com.github.lwhite1.tablesaw.columns.ColumnReference;
import com.github.lwhite1.tablesaw.util.Selection;
/**
*
*/
public class IntGreaterThan extends ColumnFilter {
private int value;
public IntGreaterThan(ColumnReference reference, int value) {
super(reference);
this.value = value;
}
public Selection apply(Table relation) {
String name = columnReference.getColumnName();
Column column = relation.column(name);
ColumnType type = column.type();
switch (type) {
case INTEGER:
IntColumn intColumn = relation.intColumn(name);
return intColumn.isGreaterThan(value);
case LONG_INT:
LongColumn longColumn = relation.longColumn(name);
return longColumn.isGreaterThan(value);
case SHORT_INT:
ShortColumn shortColumn = relation.shortColumn(name);
return shortColumn.isGreaterThan(value);
default:
throw new UnsupportedOperationException("Columns of type " + type.name() + " do not support the operation "
+ "greaterThan(anInt) ");
}
}
}