package com.github.lwhite1.tablesaw.filtering.datetimes;
import com.github.lwhite1.tablesaw.api.ColumnType;
import com.github.lwhite1.tablesaw.api.DateColumn;
import com.github.lwhite1.tablesaw.api.DateTimeColumn;
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.filtering.ColumnFilter;
import com.github.lwhite1.tablesaw.util.Selection;
/**
*
*/
public class IsFirstDayOfTheMonth extends ColumnFilter {
public IsFirstDayOfTheMonth(ColumnReference columnReference) {
super(columnReference);
}
@Override
public Selection apply(Table relation) {
String name = columnReference().getColumnName();
Column column = relation.column(name);
ColumnType type = column.type();
switch (type) {
case LOCAL_DATE:
DateColumn dateColumn = relation.dateColumn(name);
return dateColumn.isFirstDayOfMonth();
case LOCAL_DATE_TIME:
DateTimeColumn dateTimeColumn = relation.dateTimeColumn(name);
return dateTimeColumn.isFirstDayOfMonth();
default:
throw new UnsupportedOperationException("Columns of type " + type.name() + " do not support the operation "
+ "isFirstDayOfTheMonth() ");
}
}
}