Skip to content

Commit d5c79fb

Browse files
committed
Typed get/set object column methods
1 parent 7b66066 commit d5c79fb

File tree

7 files changed

+29
-14
lines changed

7 files changed

+29
-14
lines changed

core/src/main/java/tech/tablesaw/api/BooleanColumn.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
/**
5555
* A column in a base table that contains float values
5656
*/
57-
public class BooleanColumn extends AbstractColumn implements BooleanMapUtils, CategoricalColumn,
57+
public class BooleanColumn extends AbstractColumn<Boolean, BooleanColumn> implements BooleanMapUtils, CategoricalColumn,
5858
BooleanFillers<BooleanColumn>, Iterable<Boolean> {
5959

6060
public static final byte MISSING_VALUE = (Byte) BOOLEAN.getMissingValue();
@@ -431,6 +431,11 @@ public BooleanColumn set(int i, boolean b) {
431431
return this;
432432
}
433433

434+
@Override
435+
public BooleanColumn set(int i, Boolean val) {
436+
return set(i, val.booleanValue());
437+
}
438+
434439
public BooleanColumn lead(int n) {
435440
BooleanColumn column = lag(-n);
436441
column.setName(name() + " lead(" + n + ")");
@@ -726,7 +731,8 @@ public Object[] asObjectArray() {
726731
}
727732

728733
@Override
729-
public Object getObject(int index) {
734+
public Boolean getObject(int index) {
730735
return get(index);
731736
}
737+
732738
}

core/src/main/java/tech/tablesaw/api/DateColumn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
/**
5454
* A column in a base table that contains float values
5555
*/
56-
public class DateColumn extends AbstractColumn implements DateFilters, DateFillers<DateColumn>,
56+
public class DateColumn extends AbstractColumn<LocalDate, DateColumn> implements DateFilters, DateFillers<DateColumn>,
5757
DateMapFunctions, CategoricalColumn, Iterable<LocalDate> {
5858

5959
public static final int MISSING_VALUE = (Integer) ColumnType.LOCAL_DATE.getMissingValue();
@@ -657,7 +657,7 @@ public Object[] asObjectArray() {
657657
}
658658

659659
@Override
660-
public Object getObject(int index) {
660+
public LocalDate getObject(int index) {
661661
return get(index);
662662
}
663663
}

core/src/main/java/tech/tablesaw/api/DateTimeColumn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
/**
5353
* A column in a table that contains long-integer encoded (packed) local date-time values
5454
*/
55-
public class DateTimeColumn extends AbstractColumn
55+
public class DateTimeColumn extends AbstractColumn<LocalDateTime, DateTimeColumn>
5656
implements DateTimeMapFunctions, DateTimeFilters, DateTimeFillers<DateTimeColumn>, Iterable<LocalDateTime> {
5757

5858
public static final long MISSING_VALUE = (Long) ColumnType.LOCAL_DATE_TIME.getMissingValue();
@@ -597,7 +597,7 @@ public Object[] asObjectArray() {
597597
}
598598

599599
@Override
600-
public Object getObject(int index) {
600+
public LocalDateTime getObject(int index) {
601601
return get(index);
602602
}
603603
}

core/src/main/java/tech/tablesaw/api/DoubleColumn.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
/**
5757
* A column in a base table that contains double precision floating point values
5858
*/
59-
public class DoubleColumn extends AbstractColumn implements NumberColumn {
59+
public class DoubleColumn extends AbstractColumn<Double, DoubleColumn> implements NumberColumn {
6060

6161
/**
6262
* Compares two doubles, such that a sort based on this comparator would sort in descending order
@@ -431,6 +431,11 @@ public DoubleColumn set(final int r, final double value) {
431431
return this;
432432
}
433433

434+
@Override
435+
public DoubleColumn set(int i, Double val) {
436+
return set(i, val.doubleValue());
437+
}
438+
434439
/**
435440
* Conditionally update this column, replacing current values with newValue for all rows where the current value
436441
* matches the selection criteria
@@ -679,7 +684,8 @@ public Object[] asObjectArray() {
679684
}
680685

681686
@Override
682-
public Object getObject(int index) {
687+
public Double getObject(int index) {
683688
return getDouble(index);
684689
}
690+
685691
}

core/src/main/java/tech/tablesaw/api/StringColumn.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
* Because the MISSING_VALUE for this column type is an empty string, there is little or no need for special handling
5656
* of missing values in this class's methods.
5757
*/
58-
public class StringColumn extends AbstractColumn
58+
public class StringColumn extends AbstractColumn<String, StringColumn>
5959
implements CategoricalColumn, StringFilters, StringMapFunctions, StringReduceUtils {
6060

6161
public static final String MISSING_VALUE = (String) STRING.getMissingValue();
@@ -571,11 +571,10 @@ public StringColumn removeMissing() {
571571
}
572572

573573
@Override
574-
public Object getObject(int index) {
574+
public String getObject(int index) {
575575
return get(index);
576576
}
577577

578-
579578
@Override
580579
public Iterator<String> iterator() {
581580
return new Iterator<String>() {

core/src/main/java/tech/tablesaw/api/TimeColumn.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
/**
5252
* A column in a base table that contains float values
5353
*/
54-
public class TimeColumn extends AbstractColumn implements CategoricalColumn, Iterable<LocalTime>, TimeFilters, TimeFillers<TimeColumn>, TimeMapFunctions {
54+
public class TimeColumn extends AbstractColumn<LocalTime, TimeColumn> implements CategoricalColumn, Iterable<LocalTime>, TimeFilters, TimeFillers<TimeColumn>, TimeMapFunctions {
5555

5656
public static final int MISSING_VALUE = (Integer) LOCAL_TIME.getMissingValue();
5757

@@ -595,7 +595,7 @@ public int[] asIntArray() {
595595
}
596596

597597
@Override
598-
public Object getObject(int index) {
598+
public LocalTime getObject(int index) {
599599
return get(index);
600600
}
601601
}

core/src/main/java/tech/tablesaw/columns/AbstractColumn.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
/**
2121
* Partial implementation of the {@link Column} interface
2222
*/
23-
public abstract class AbstractColumn implements Column {
23+
public abstract class AbstractColumn<T, C extends AbstractColumn<T, C>> implements Column {
2424

2525
public static final int DEFAULT_ARRAY_SIZE = 128;
2626

@@ -62,6 +62,10 @@ public ColumnType type() {
6262
return type;
6363
}
6464

65+
public abstract C set(int i, T val);
66+
67+
public abstract T getObject(int i);
68+
6569
@Override
6670
public String toString() {
6771
return type().getPrinterFriendlyName() + " column: " + name();

0 commit comments

Comments
 (0)