You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by he...@apache.org on 2022/03/15 10:19:31 UTC

[incubator-inlong] branch master updated: [INLONG-3146][Manager] Optimize field type enums (#3147)

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

healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 19cf9ee  [INLONG-3146][Manager] Optimize field type enums (#3147)
19cf9ee is described below

commit 19cf9ee6b8a4f3727a086d149a82e3e0bfeaeeda
Author: kipshi <48...@users.noreply.github.com>
AuthorDate: Tue Mar 15 18:19:26 2022 +0800

    [INLONG-3146][Manager] Optimize field type enums (#3147)
---
 .../inlong/manager/client/api/SinkField.java       |  1 +
 .../inlong/manager/client/api/StreamField.java     | 31 +-----------
 .../manager/client/api/impl/InlongStreamImpl.java  |  2 +-
 .../client/api/util/InlongStreamSinkTransfer.java  |  2 +-
 .../inlong/manager/common/enums/FieldType.java     | 57 ++++++++++++++++++++++
 .../thirdparty/sort/util/FieldInfoUtils.java       | 36 +++++++-------
 6 files changed, 80 insertions(+), 49 deletions(-)

diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/SinkField.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/SinkField.java
index 3dee543..a728a72 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/SinkField.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/SinkField.java
@@ -21,6 +21,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.inlong.manager.common.enums.FieldType;
 
 @Data
 @NoArgsConstructor
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/StreamField.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/StreamField.java
index cc1661a..992c500 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/StreamField.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/StreamField.java
@@ -22,8 +22,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-
-import java.util.Locale;
+import org.apache.inlong.manager.common.enums.FieldType;
 
 @Data
 @NoArgsConstructor
@@ -34,34 +33,6 @@ public class StreamField {
     @ApiModelProperty("Field index")
     private int index;
 
-    public enum FieldType {
-        INT,
-        LONG,
-        DOUBLE,
-        FLOAT,
-        STRING,
-        CHAR,
-        BYTE,
-        BINARY,
-        BOOLEAN,
-        DATE,
-        TIMESTAMP;
-
-        @Override
-        public String toString() {
-            return name().toLowerCase(Locale.ROOT);
-        }
-
-        public static FieldType forName(String name) {
-            for (FieldType value : values()) {
-                if (value.toString().equals(name)) {
-                    return value;
-                }
-            }
-            throw new IllegalArgumentException(String.format("Unsupported FieldType : %s", name));
-        }
-    }
-
     @ApiModelProperty(value = "Field type", required = true)
     private FieldType fieldType;
 
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongStreamImpl.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongStreamImpl.java
index 1228871..a4ca118 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongStreamImpl.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/impl/InlongStreamImpl.java
@@ -25,12 +25,12 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.inlong.manager.client.api.InlongStream;
 import org.apache.inlong.manager.client.api.StreamField;
-import org.apache.inlong.manager.client.api.StreamField.FieldType;
 import org.apache.inlong.manager.client.api.StreamSink;
 import org.apache.inlong.manager.client.api.StreamSource;
 import org.apache.inlong.manager.client.api.util.AssertUtil;
 import org.apache.inlong.manager.client.api.util.InlongStreamSinkTransfer;
 import org.apache.inlong.manager.client.api.util.InlongStreamSourceTransfer;
+import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.pojo.sink.SinkResponse;
 import org.apache.inlong.manager.common.pojo.source.SourceResponse;
 import org.apache.inlong.manager.common.pojo.stream.FullStreamResponse;
diff --git a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/util/InlongStreamSinkTransfer.java b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/util/InlongStreamSinkTransfer.java
index 2c48e91..9456cc1 100644
--- a/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/util/InlongStreamSinkTransfer.java
+++ b/inlong-manager/manager-client/src/main/java/org/apache/inlong/manager/client/api/util/InlongStreamSinkTransfer.java
@@ -22,12 +22,12 @@ import org.apache.commons.compress.utils.Lists;
 import org.apache.inlong.manager.client.api.DataFormat;
 import org.apache.inlong.manager.client.api.DataSeparator;
 import org.apache.inlong.manager.client.api.SinkField;
-import org.apache.inlong.manager.client.api.StreamField.FieldType;
 import org.apache.inlong.manager.client.api.StreamSink;
 import org.apache.inlong.manager.client.api.auth.DefaultAuthentication;
 import org.apache.inlong.manager.client.api.sink.ClickHouseSink;
 import org.apache.inlong.manager.client.api.sink.HiveSink;
 import org.apache.inlong.manager.client.api.sink.KafkaSink;
+import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.FileFormat;
 import org.apache.inlong.manager.common.enums.SinkType;
 import org.apache.inlong.manager.common.pojo.sink.SinkFieldRequest;
diff --git a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/FieldType.java b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/FieldType.java
new file mode 100644
index 0000000..5cb23d0
--- /dev/null
+++ b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/FieldType.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.inlong.manager.common.enums;
+
+import org.apache.inlong.manager.common.util.Preconditions;
+
+import java.util.Locale;
+
+public enum FieldType {
+    INT,
+    TINYINT,
+    SMALLINT,
+    BIGINT,
+    SHORT,
+    LONG,
+    DOUBLE,
+    FLOAT,
+    DECIMAL,
+    STRING,
+    FIXED,
+    BYTE,
+    BINARY,
+    BOOLEAN,
+    DATE,
+    TIME,
+    TIMESTAMP;
+
+    @Override
+    public String toString() {
+        return name().toLowerCase(Locale.ROOT);
+    }
+
+    public static FieldType forName(String name) {
+        Preconditions.checkNotNull(name, "FieldType should not be null");
+        for (FieldType value : values()) {
+            if (value.toString().equals(name) || value.toString().equals(name.toUpperCase(Locale.ROOT))) {
+                return value;
+            }
+        }
+        throw new IllegalArgumentException(String.format("Unsupported FieldType : %s", name));
+    }
+}
diff --git a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdparty/sort/util/FieldInfoUtils.java b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdparty/sort/util/FieldInfoUtils.java
index b7de742..bb386f8 100644
--- a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdparty/sort/util/FieldInfoUtils.java
+++ b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/thirdparty/sort/util/FieldInfoUtils.java
@@ -18,6 +18,7 @@
 package org.apache.inlong.manager.service.thirdparty.sort.util;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.inlong.manager.common.enums.FieldType;
 import org.apache.inlong.manager.common.enums.MetaFieldType;
 import org.apache.inlong.manager.common.pojo.sink.SinkFieldResponse;
 import org.apache.inlong.sort.formats.common.ArrayFormatInfo;
@@ -180,45 +181,46 @@ public class FieldInfoUtils {
      */
     public static FormatInfo convertFieldFormat(String type) {
         FormatInfo formatInfo;
-        switch (type) {
-            case "boolean":
+        FieldType fieldType = FieldType.forName(type);
+        switch (fieldType) {
+            case BOOLEAN:
                 formatInfo = new BooleanFormatInfo();
                 break;
-            case "tinyint":
-            case "byte":
+            case TINYINT:
+            case BYTE:
                 formatInfo = new ByteFormatInfo();
                 break;
-            case "smallint":
-            case "short":
+            case SMALLINT:
+            case SHORT:
                 formatInfo = new ShortFormatInfo();
                 break;
-            case "int":
+            case INT:
                 formatInfo = new IntFormatInfo();
                 break;
-            case "bigint":
-            case "long":
+            case BIGINT:
+            case LONG:
                 formatInfo = new LongFormatInfo();
                 break;
-            case "float":
+            case FLOAT:
                 formatInfo = new FloatFormatInfo();
                 break;
-            case "double":
+            case DOUBLE:
                 formatInfo = new DoubleFormatInfo();
                 break;
-            case "decimal":
+            case DECIMAL:
                 formatInfo = new DecimalFormatInfo();
                 break;
-            case "date":
+            case DATE:
                 formatInfo = new DateFormatInfo();
                 break;
-            case "time":
+            case TIME:
                 formatInfo = new TimeFormatInfo();
                 break;
-            case "timestamp":
+            case TIMESTAMP:
                 formatInfo = new TimestampFormatInfo();
                 break;
-            case "binary":
-            case "fixed":
+            case BINARY:
+            case FIXED:
                 formatInfo = new ArrayFormatInfo(ByteTypeInfo::new);
                 break;
             default: // default is string