This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch ty/NewDataType
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 5ebf1dfcf6493c24d57d5a46aa85be0418d26d0b
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Jun 27 20:53:17 2024 +0800

    Add new type in Type interface
---
 .../type/{IntType.java => AbstractIntType.java}    | 20 +------
 .../type/{LongType.java => AbstractLongType.java}  | 20 +------
 .../{BinaryType.java => AbstractVarcharType.java}  | 20 +------
 .../apache/tsfile/read/common/type/BinaryType.java | 40 +------------
 .../common/type/{BinaryType.java => BlobType.java} | 15 ++---
 .../common/type/{TypeEnum.java => DateType.java}   | 25 ++++----
 .../apache/tsfile/read/common/type/IntType.java    | 69 +---------------------
 .../apache/tsfile/read/common/type/LongType.java   | 69 +---------------------
 .../common/type/{TypeEnum.java => StringType.java} | 25 ++++----
 .../type/{TypeEnum.java => TimestampType.java}     | 25 ++++----
 .../apache/tsfile/read/common/type/TypeEnum.java   |  6 +-
 .../tsfile/read/common/type/TypeFactory.java       | 20 +++++--
 12 files changed, 77 insertions(+), 277 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractIntType.java
similarity index 87%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractIntType.java
index a48d1983..ca61ca77 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractIntType.java
@@ -26,11 +26,7 @@ import 
org.apache.tsfile.read.common.block.column.IntColumnBuilder;
 import java.util.Collections;
 import java.util.List;
 
-public class IntType implements Type {
-
-  public static final IntType INT32 = new IntType();
-
-  private IntType() {}
+public abstract class AbstractIntType implements Type {
 
   @Override
   public int getInt(Column c, int position) {
@@ -77,16 +73,6 @@ public class IntType implements Type {
     return new IntColumnBuilder(null, expectedEntries);
   }
 
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.INT32;
-  }
-
-  @Override
-  public String getDisplayName() {
-    return "INT32";
-  }
-
   @Override
   public boolean isComparable() {
     return true;
@@ -101,8 +87,4 @@ public class IntType implements Type {
   public List<Type> getTypeParameters() {
     return Collections.emptyList();
   }
-
-  public static IntType getInstance() {
-    return INT32;
-  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractLongType.java
similarity index 87%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractLongType.java
index 679d908d..74392465 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractLongType.java
@@ -26,11 +26,7 @@ import 
org.apache.tsfile.read.common.block.column.LongColumnBuilder;
 import java.util.Collections;
 import java.util.List;
 
-public class LongType implements Type {
-
-  public static final LongType INT64 = new LongType();
-
-  private LongType() {}
+public abstract class AbstractLongType implements Type {
 
   @Override
   public int getInt(Column c, int position) {
@@ -77,16 +73,6 @@ public class LongType implements Type {
     return new LongColumnBuilder(null, expectedEntries);
   }
 
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.INT64;
-  }
-
-  @Override
-  public String getDisplayName() {
-    return "INT64";
-  }
-
   @Override
   public boolean isComparable() {
     return true;
@@ -101,8 +87,4 @@ public class LongType implements Type {
   public List<Type> getTypeParameters() {
     return Collections.emptyList();
   }
-
-  public static LongType getInstance() {
-    return INT64;
-  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java
similarity index 83%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java
index e3619e42..981da8b6 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java
@@ -27,11 +27,7 @@ import org.apache.tsfile.utils.Binary;
 import java.util.Collections;
 import java.util.List;
 
-public class BinaryType implements Type {
-  public static final BinaryType TEXT = new BinaryType();
-
-  private BinaryType() {}
-
+public abstract class AbstractVarcharType implements Type {
   @Override
   public Binary getBinary(Column c, int position) {
     return c.getBinary(position);
@@ -47,16 +43,6 @@ public class BinaryType implements Type {
     return new BinaryColumnBuilder(null, expectedEntries);
   }
 
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.TEXT;
-  }
-
-  @Override
-  public String getDisplayName() {
-    return "TEXT";
-  }
-
   @Override
   public boolean isComparable() {
     return true;
@@ -71,8 +57,4 @@ public class BinaryType implements Type {
   public List<Type> getTypeParameters() {
     return Collections.emptyList();
   }
-
-  public static BinaryType getInstance() {
-    return TEXT;
-  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
index e3619e42..68c87499 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
@@ -19,34 +19,11 @@
 
 package org.apache.tsfile.read.common.type;
 
-import org.apache.tsfile.block.column.Column;
-import org.apache.tsfile.block.column.ColumnBuilder;
-import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.tsfile.utils.Binary;
-
-import java.util.Collections;
-import java.util.List;
-
-public class BinaryType implements Type {
+public class BinaryType extends AbstractVarcharType {
   public static final BinaryType TEXT = new BinaryType();
 
   private BinaryType() {}
 
-  @Override
-  public Binary getBinary(Column c, int position) {
-    return c.getBinary(position);
-  }
-
-  @Override
-  public void writeBinary(ColumnBuilder builder, Binary value) {
-    builder.writeBinary(value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new BinaryColumnBuilder(null, expectedEntries);
-  }
-
   @Override
   public TypeEnum getTypeEnum() {
     return TypeEnum.TEXT;
@@ -57,21 +34,6 @@ public class BinaryType implements Type {
     return "TEXT";
   }
 
-  @Override
-  public boolean isComparable() {
-    return true;
-  }
-
-  @Override
-  public boolean isOrderable() {
-    return true;
-  }
-
-  @Override
-  public List<Type> getTypeParameters() {
-    return Collections.emptyList();
-  }
-
   public static BinaryType getInstance() {
     return TEXT;
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java
similarity index 88%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java
index e3619e42..c7f94250 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BinaryType.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java
@@ -27,10 +27,11 @@ import org.apache.tsfile.utils.Binary;
 import java.util.Collections;
 import java.util.List;
 
-public class BinaryType implements Type {
-  public static final BinaryType TEXT = new BinaryType();
+public class BlobType implements Type {
 
-  private BinaryType() {}
+  public static final BlobType BLOB = new BlobType();
+
+  private BlobType() {}
 
   @Override
   public Binary getBinary(Column c, int position) {
@@ -49,12 +50,12 @@ public class BinaryType implements Type {
 
   @Override
   public TypeEnum getTypeEnum() {
-    return TypeEnum.TEXT;
+    return TypeEnum.BLOB;
   }
 
   @Override
   public String getDisplayName() {
-    return "TEXT";
+    return "BLOB";
   }
 
   @Override
@@ -72,7 +73,7 @@ public class BinaryType implements Type {
     return Collections.emptyList();
   }
 
-  public static BinaryType getInstance() {
-    return TEXT;
+  public static BlobType getInstance() {
+    return BLOB;
   }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/DateType.java
similarity index 72%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/DateType.java
index 1524a681..88d17e24 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/DateType.java
@@ -19,20 +19,23 @@
 
 package org.apache.tsfile.read.common.type;
 
-public enum TypeEnum {
-  INT32,
+public class DateType extends AbstractIntType {
 
-  INT64,
+  public static final DateType DATE = new DateType();
 
-  FLOAT,
+  private DateType() {}
 
-  DOUBLE,
+  @Override
+  public TypeEnum getTypeEnum() {
+    return TypeEnum.DATE;
+  }
 
-  BOOLEAN,
+  @Override
+  public String getDisplayName() {
+    return "DATE";
+  }
 
-  TEXT,
-
-  ROW,
-
-  UNKNOWN
+  public static DateType getInstance() {
+    return DATE;
+  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java
index a48d1983..e4d36c2a 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/IntType.java
@@ -19,64 +19,12 @@
 
 package org.apache.tsfile.read.common.type;
 
-import org.apache.tsfile.block.column.Column;
-import org.apache.tsfile.block.column.ColumnBuilder;
-import org.apache.tsfile.read.common.block.column.IntColumnBuilder;
-
-import java.util.Collections;
-import java.util.List;
-
-public class IntType implements Type {
+public class IntType extends AbstractIntType {
 
   public static final IntType INT32 = new IntType();
 
   private IntType() {}
 
-  @Override
-  public int getInt(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeInt(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new IntColumnBuilder(null, expectedEntries);
-  }
-
   @Override
   public TypeEnum getTypeEnum() {
     return TypeEnum.INT32;
@@ -87,21 +35,6 @@ public class IntType implements Type {
     return "INT32";
   }
 
-  @Override
-  public boolean isComparable() {
-    return true;
-  }
-
-  @Override
-  public boolean isOrderable() {
-    return true;
-  }
-
-  @Override
-  public List<Type> getTypeParameters() {
-    return Collections.emptyList();
-  }
-
   public static IntType getInstance() {
     return INT32;
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java
index 679d908d..a1ed2a1c 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/LongType.java
@@ -19,64 +19,12 @@
 
 package org.apache.tsfile.read.common.type;
 
-import org.apache.tsfile.block.column.Column;
-import org.apache.tsfile.block.column.ColumnBuilder;
-import org.apache.tsfile.read.common.block.column.LongColumnBuilder;
-
-import java.util.Collections;
-import java.util.List;
-
-public class LongType implements Type {
+public class LongType extends AbstractLongType {
 
   public static final LongType INT64 = new LongType();
 
   private LongType() {}
 
-  @Override
-  public int getInt(Column c, int position) {
-    return (int) c.getLong(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeLong(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeLong(value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeLong((long) value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeLong((long) value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new LongColumnBuilder(null, expectedEntries);
-  }
-
   @Override
   public TypeEnum getTypeEnum() {
     return TypeEnum.INT64;
@@ -87,21 +35,6 @@ public class LongType implements Type {
     return "INT64";
   }
 
-  @Override
-  public boolean isComparable() {
-    return true;
-  }
-
-  @Override
-  public boolean isOrderable() {
-    return true;
-  }
-
-  @Override
-  public List<Type> getTypeParameters() {
-    return Collections.emptyList();
-  }
-
   public static LongType getInstance() {
     return INT64;
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/StringType.java
similarity index 70%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/StringType.java
index 1524a681..725ae9e3 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/StringType.java
@@ -19,20 +19,23 @@
 
 package org.apache.tsfile.read.common.type;
 
-public enum TypeEnum {
-  INT32,
+public class StringType extends AbstractVarcharType {
 
-  INT64,
+  public static final StringType STRING = new StringType();
 
-  FLOAT,
+  private StringType() {}
 
-  DOUBLE,
+  @Override
+  public TypeEnum getTypeEnum() {
+    return TypeEnum.STRING;
+  }
 
-  BOOLEAN,
+  @Override
+  public String getDisplayName() {
+    return "STRING";
+  }
 
-  TEXT,
-
-  ROW,
-
-  UNKNOWN
+  public static StringType getInstance() {
+    return STRING;
+  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TimestampType.java
similarity index 69%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TimestampType.java
index 1524a681..c4e5e843 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TimestampType.java
@@ -19,20 +19,23 @@
 
 package org.apache.tsfile.read.common.type;
 
-public enum TypeEnum {
-  INT32,
+public class TimestampType extends AbstractLongType {
 
-  INT64,
+  public static final TimestampType TIMESTAMP = new TimestampType();
 
-  FLOAT,
+  private TimestampType() {}
 
-  DOUBLE,
+  @Override
+  public TypeEnum getTypeEnum() {
+    return TypeEnum.TIMESTAMP;
+  }
 
-  BOOLEAN,
+  @Override
+  public String getDisplayName() {
+    return "TIMESTAMP";
+  }
 
-  TEXT,
-
-  ROW,
-
-  UNKNOWN
+  public static TimestampType getInstance() {
+    return TIMESTAMP;
+  }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
index 1524a681..184a64af 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
@@ -34,5 +34,9 @@ public enum TypeEnum {
 
   ROW,
 
-  UNKNOWN
+  UNKNOWN,
+  TIMESTAMP,
+  DATE,
+  BLOB,
+  STRING
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
index 81c8a015..41474542 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
@@ -29,12 +29,14 @@ public class TypeFactory {
 
   public static Type getType(TSDataType tsDataType) {
     switch (tsDataType) {
-      case INT32:
       case DATE:
+        return DateType.getInstance();
+      case INT32:
         return IntType.getInstance();
       case INT64:
-      case TIMESTAMP:
         return LongType.getInstance();
+      case TIMESTAMP:
+        return TimestampType.getInstance();
       case FLOAT:
         return FloatType.getInstance();
       case DOUBLE:
@@ -42,9 +44,11 @@ public class TypeFactory {
       case BOOLEAN:
         return BooleanType.getInstance();
       case TEXT:
-      case BLOB:
-      case STRING:
         return BinaryType.getInstance();
+      case STRING:
+        return StringType.getInstance();
+      case BLOB:
+        return BlobType.getInstance();
       default:
         throw new UnsupportedOperationException(
             String.format("Invalid TSDataType for TypeFactory: %s", 
tsDataType));
@@ -67,6 +71,14 @@ public class TypeFactory {
         return BinaryType.getInstance();
       case UNKNOWN:
         return UnknownType.getInstance();
+      case DATE:
+        return DateType.getInstance();
+      case TIMESTAMP:
+        return TimestampType.getInstance();
+      case BLOB:
+        return BlobType.getInstance();
+      case STRING:
+        return StringType.getInstance();
       default:
         throw new UnsupportedOperationException(
             String.format("Invalid TypeEnum for TypeFactory: %s", typeEnum));

Reply via email to