package com.github.lwhite1.tablesaw.filtering;
import com.github.lwhite1.tablesaw.api.CategoryColumn;
import com.github.lwhite1.tablesaw.api.ColumnType;
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;
/**
* Implements EqualTo testing for Category and Text Columns
*/
public class StringNotEqualTo extends ColumnFilter {
private String value;
public StringNotEqualTo(ColumnReference reference, String value) {
super(reference);
this.value = value;
}
public Selection apply(Table relation) {
Column column = relation.column(columnReference.getColumnName());
ColumnType type = column.type();
switch (type) {
case CATEGORY: {
CategoryColumn categoryColumn = (CategoryColumn) relation.column(columnReference.getColumnName());
return categoryColumn.isNotEqualTo(value);
}
default:
throw new UnsupportedOperationException(
String.format("ColumnType %s does not support equalTo on a String value", type));
}
}
}