From 10ddbeeb391ef5cfe91d0145d4ef6dec0ae09bfc Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Fri, 19 Jul 2024 15:23:07 -0500 Subject: [PATCH] Remove isDateTime helper --- .../impl/preview/ColumnPreviewManager.java | 5 +++-- .../java/io/deephaven/time/DateTimeUtils.java | 10 ---------- .../extensions/barrage/util/BarrageUtil.java | 3 +-- .../table/ops/ColumnStatisticsGrpcImpl.java | 18 +++++------------- 4 files changed, 9 insertions(+), 27 deletions(-) diff --git a/engine/table/src/main/java/io/deephaven/engine/table/impl/preview/ColumnPreviewManager.java b/engine/table/src/main/java/io/deephaven/engine/table/impl/preview/ColumnPreviewManager.java index 52b7dc956a8..a8e82e2a9e2 100644 --- a/engine/table/src/main/java/io/deephaven/engine/table/impl/preview/ColumnPreviewManager.java +++ b/engine/table/src/main/java/io/deephaven/engine/table/impl/preview/ColumnPreviewManager.java @@ -6,7 +6,6 @@ import io.deephaven.configuration.Configuration; import io.deephaven.engine.table.ColumnDefinition; import io.deephaven.engine.table.Table; -import io.deephaven.time.DateTimeUtils; import io.deephaven.util.type.NumericTypeUtils; import io.deephaven.vector.Vector; import io.deephaven.engine.table.impl.BaseTable; @@ -15,6 +14,8 @@ import org.apache.commons.lang3.StringUtils; import org.jpy.PyListWrapper; +import java.time.Instant; +import java.time.ZonedDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -157,7 +158,7 @@ public static boolean isColumnTypeDisplayable(Class type) { || io.deephaven.util.type.TypeUtils.isBoxedType(type) || io.deephaven.util.type.TypeUtils.isString(type) || NumericTypeUtils.isBigNumeric(type) - || DateTimeUtils.isDateTime(type) + || Instant.class == type || ZonedDateTime.class == type || isOnWhiteList(type); } diff --git a/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java b/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java index ca6b118b6c0..367bddda671 100644 --- a/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java +++ b/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java @@ -201,16 +201,6 @@ public class DateTimeUtils { */ public static final double YEARS_PER_NANO_AVG = 1. / (double) YEAR_AVG; - /** - * Whether the class is an {@link Instant} or a {@link ZonedDateTime}. - * - * @param type The class. - * @return true if the type is a DateTime: {@link ZonedDateTime} or {@link Instant}. - */ - public static boolean isDateTime(Class type) { - return Instant.class == type || ZonedDateTime.class == type; - } - // endregion // region Overflow / Underflow diff --git a/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/BarrageUtil.java b/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/BarrageUtil.java index 41032d872b0..b11cc5f2a08 100755 --- a/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/BarrageUtil.java +++ b/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/util/BarrageUtil.java @@ -41,7 +41,6 @@ import io.deephaven.engine.util.input.InputTableUpdater; import io.deephaven.chunk.ChunkType; import io.deephaven.proto.backplane.grpc.ExportedTableCreationResponse; -import io.deephaven.time.DateTimeUtils; import io.deephaven.util.type.TypeUtils; import io.deephaven.vector.Vector; import io.grpc.stub.StreamObserver; @@ -683,7 +682,7 @@ private static ConvertedArrowSchema convertArrowSchema( private static boolean isTypeNativelySupported(final Class typ) { if (typ.isPrimitive() || TypeUtils.isBoxedType(typ) || supportedTypes.contains(typ) - || Vector.class.isAssignableFrom(typ) || DateTimeUtils.isDateTime(typ)) { + || Vector.class.isAssignableFrom(typ) || Instant.class == typ || ZonedDateTime.class == typ) { return true; } if (typ.isArray()) { diff --git a/server/src/main/java/io/deephaven/server/table/ops/ColumnStatisticsGrpcImpl.java b/server/src/main/java/io/deephaven/server/table/ops/ColumnStatisticsGrpcImpl.java index 5fb589e0921..f74bae1614d 100644 --- a/server/src/main/java/io/deephaven/server/table/ops/ColumnStatisticsGrpcImpl.java +++ b/server/src/main/java/io/deephaven/server/table/ops/ColumnStatisticsGrpcImpl.java @@ -22,7 +22,6 @@ import io.deephaven.server.table.stats.ChunkedStatsKernel; import io.deephaven.server.table.stats.DateTimeChunkedStats; import io.deephaven.server.table.stats.ObjectChunkedStats; -import io.deephaven.time.DateTimeUtils; import io.deephaven.util.type.NumericTypeUtils; import org.apache.commons.lang3.mutable.Mutable; import org.apache.commons.lang3.mutable.MutableObject; @@ -68,19 +67,12 @@ public Table create(ColumnStatisticsRequest request, List columnSource; - if (DateTimeUtils.isDateTime(type)) { - // Instant/ZonedDateTime only look at max/min and count + if (type == Instant.class) { statsFunc = new DateTimeChunkedStats(); - - // Reinterpret the column to read only long values - if (Instant.class.isAssignableFrom(type)) { - columnSource = ReinterpretUtils.instantToLongSource(table.getColumnSource(columnName)); - } else if (ZonedDateTime.class.isAssignableFrom(type)) { - columnSource = ReinterpretUtils.zonedDateTimeToLongSource(table.getColumnSource(columnName)); - } else { - throw Exceptions.statusRuntimeException(Code.INVALID_ARGUMENT, - "DateTime columns must be Instant or ZonedDateTime"); - } + columnSource = ReinterpretUtils.instantToLongSource(table.getColumnSource(columnName)); + } else if (type == ZonedDateTime.class) { + statsFunc = new DateTimeChunkedStats(); + columnSource = ReinterpretUtils.zonedDateTimeToLongSource(table.getColumnSource(columnName)); } else if (NumericTypeUtils.isNumeric(type)) { // Numeric types have a variety of statistics recorded statsFunc = ChunkedNumericalStatsKernel.makeChunkedNumericalStats(type);