Skip to content

Commit b148c57

Browse files
committed
cleaned up handling of standard comparisons for integer column types
1 parent e8fbaff commit b148c57

File tree

4 files changed

+58
-15
lines changed

4 files changed

+58
-15
lines changed

src/main/java/com/github/lwhite1/tablesaw/columns/ShortColumn.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void set(int index, short value) {
9595
data.set(index, value);
9696
}
9797

98-
public RoaringBitmap isLessThan(short i) {
98+
public RoaringBitmap isLessThan(int i) {
9999
return apply(ShortColumnUtils.isLessThan, i);
100100
}
101101

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.lwhite1.tablesaw.filter;
22

3+
import com.github.lwhite1.tablesaw.api.ColumnType;
34
import com.github.lwhite1.tablesaw.api.Table;
45
import com.github.lwhite1.tablesaw.columns.Column;
56
import com.github.lwhite1.tablesaw.columns.ColumnReference;
@@ -8,8 +9,6 @@
89
import com.github.lwhite1.tablesaw.columns.ShortColumn;
910
import org.roaringbitmap.RoaringBitmap;
1011

11-
import static com.github.lwhite1.tablesaw.columns.IntColumnUtils.isGreaterThan;
12-
1312
/**
1413
*
1514
*/
@@ -23,16 +22,22 @@ public IntGreaterThan(ColumnReference reference, int value) {
2322
}
2423

2524
public RoaringBitmap apply(Table relation) {
26-
Column column = relation.column(columnReference.getColumnName());
27-
switch (column.type()) {
25+
String name = columnReference.getColumnName();
26+
Column column = relation.column(name);
27+
ColumnType type = column.type();
28+
switch (type) {
2829
case INTEGER:
29-
return ((IntColumn) column).isGreaterThan(value);
30-
case SHORT_INT:
31-
return ((ShortColumn) column).isGreaterThan((short) value);
30+
IntColumn intColumn = relation.intColumn(name);
31+
return intColumn.isGreaterThan(value);
3232
case LONG_INT:
33-
return ((LongColumn) column).isGreaterThan(value);
33+
LongColumn longColumn = relation.longColumn(name);
34+
return longColumn.isGreaterThan(value);
35+
case SHORT_INT:
36+
ShortColumn shortColumn = relation.shortColumn(name);
37+
return shortColumn.isGreaterThan(value);
38+
default:
39+
throw new UnsupportedOperationException("Columns of type " + type.name() + " do not support the operation "
40+
+ "greaterThan(anInt) ");
3441
}
35-
IntColumn intColumn = (IntColumn) column;
36-
return intColumn.apply(isGreaterThan, value);
3742
}
3843
}

src/main/java/com/github/lwhite1/tablesaw/filter/IntLessThan.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.github.lwhite1.tablesaw.filter;
22

3+
import com.github.lwhite1.tablesaw.api.ColumnType;
4+
import com.github.lwhite1.tablesaw.columns.Column;
35
import com.github.lwhite1.tablesaw.columns.IntColumn;
46
import com.github.lwhite1.tablesaw.api.Table;
57
import com.github.lwhite1.tablesaw.columns.ColumnReference;
8+
import com.github.lwhite1.tablesaw.columns.LongColumn;
9+
import com.github.lwhite1.tablesaw.columns.ShortColumn;
610
import org.roaringbitmap.RoaringBitmap;
711

812
/**
@@ -17,7 +21,22 @@ public IntLessThan(ColumnReference reference, int value) {
1721
}
1822

1923
public RoaringBitmap apply(Table relation) {
20-
IntColumn intColumn = (IntColumn) relation.column(columnReference.getColumnName());
21-
return intColumn.isLessThan(value);
24+
String name = columnReference.getColumnName();
25+
Column column = relation.column(name);
26+
ColumnType type = column.type();
27+
switch (type) {
28+
case INTEGER:
29+
IntColumn intColumn = relation.intColumn(name);
30+
return intColumn.isLessThan(value);
31+
case LONG_INT:
32+
LongColumn longColumn = relation.longColumn(name);
33+
return longColumn.isLessThan(value);
34+
case SHORT_INT:
35+
ShortColumn shortColumn = relation.shortColumn(name);
36+
return shortColumn.isLessThan(value);
37+
default:
38+
throw new UnsupportedOperationException("Columns of type " + type.name() + " do not support the operation "
39+
+ "lessThan(anInt) ");
40+
}
2241
}
2342
}

src/main/java/com/github/lwhite1/tablesaw/filter/IntLessThanOrEqualTo.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.github.lwhite1.tablesaw.filter;
22

3+
import com.github.lwhite1.tablesaw.api.ColumnType;
34
import com.github.lwhite1.tablesaw.api.Table;
5+
import com.github.lwhite1.tablesaw.columns.Column;
46
import com.github.lwhite1.tablesaw.columns.ColumnReference;
57
import com.github.lwhite1.tablesaw.columns.IntColumn;
8+
import com.github.lwhite1.tablesaw.columns.LongColumn;
9+
import com.github.lwhite1.tablesaw.columns.ShortColumn;
610
import org.roaringbitmap.RoaringBitmap;
711

812
/**
@@ -17,7 +21,22 @@ public IntLessThanOrEqualTo(ColumnReference reference, int value) {
1721
}
1822

1923
public RoaringBitmap apply(Table relation) {
20-
IntColumn intColumn = (IntColumn) relation.column(columnReference.getColumnName());
21-
return intColumn.isLessThanOrEqualTo(value);
24+
String name = columnReference.getColumnName();
25+
Column column = relation.column(name);
26+
ColumnType type = column.type();
27+
switch (type) {
28+
case INTEGER:
29+
IntColumn intColumn = relation.intColumn(name);
30+
return intColumn.isLessThanOrEqualTo(value);
31+
case LONG_INT:
32+
LongColumn longColumn = relation.longColumn(name);
33+
return longColumn.isLessThanOrEqualTo(value);
34+
case SHORT_INT:
35+
ShortColumn shortColumn = relation.shortColumn(name);
36+
return shortColumn.isLessThanOrEqualTo(value);
37+
default:
38+
throw new UnsupportedOperationException("Columns of type " + type.name() + " do not support the operation "
39+
+ "lessThanOrEqualTo(anInt) ");
40+
}
2241
}
2342
}

0 commit comments

Comments
 (0)