This is an automated email from the ASF dual-hosted git repository.
fanjia pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new f9fcdff32 [Feature][Transform V2] expose configurable options in
SplitTransform (#3496)
f9fcdff32 is described below
commit f9fcdff32d03c322a21a3f5e82911bbb0b7a5d9a
Author: TaoZex <[email protected]>
AuthorDate: Tue Nov 22 09:55:37 2022 +0800
[Feature][Transform V2] expose configurable options in SplitTransform
(#3496)
---
.../seatunnel/transform/CopyFieldTransform.java | 2 +-
.../seatunnel/transform/ReplaceTransform.java | 2 +-
.../apache/seatunnel/transform/SplitTransform.java | 29 +++++++++++----
.../seatunnel/transform/SplitTransformFactory.java | 43 ++++++++++++++++++++++
4 files changed, 66 insertions(+), 10 deletions(-)
diff --git
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/CopyFieldTransform.java
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/CopyFieldTransform.java
index 766810918..dd8753ee9 100644
---
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/CopyFieldTransform.java
+++
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/CopyFieldTransform.java
@@ -57,7 +57,7 @@ public class CopyFieldTransform extends
SingleFieldOutputTransform {
CheckResult checkResult = CheckConfigUtil.checkAllExists(pluginConfig,
SRC_FIELD, DEST_FIELD);
if (!checkResult.isSuccess()) {
- throw new IllegalArgumentException("Field to check config! " +
checkResult.getMsg());
+ throw new IllegalArgumentException("Failed to check config! " +
checkResult.getMsg());
}
this.srcField = pluginConfig.getString(SRC_FIELD);
diff --git
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/ReplaceTransform.java
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/ReplaceTransform.java
index 10985ca79..310164062 100644
---
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/ReplaceTransform.java
+++
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/ReplaceTransform.java
@@ -56,7 +56,7 @@ public class ReplaceTransform extends
SingleFieldOutputTransform {
CheckResult checkResult = CheckConfigUtil.checkAllExists(pluginConfig,
KEY_REPLACE_FIELD, KEY_PATTERN, KEY_REPLACEMENT);
if (!checkResult.isSuccess()) {
- throw new IllegalArgumentException("Field to check config! " +
checkResult.getMsg());
+ throw new IllegalArgumentException("Failed to check config! " +
checkResult.getMsg());
}
replaceField = pluginConfig.getString(KEY_REPLACE_FIELD);
diff --git
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransform.java
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransform.java
index 06a661c27..5ce4e23c8 100644
---
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransform.java
+++
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransform.java
@@ -17,6 +17,8 @@
package org.apache.seatunnel.transform;
+import org.apache.seatunnel.api.configuration.Option;
+import org.apache.seatunnel.api.configuration.Options;
import org.apache.seatunnel.api.table.type.BasicType;
import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
import org.apache.seatunnel.api.table.type.SeaTunnelRowType;
@@ -30,16 +32,27 @@ import
org.apache.seatunnel.shade.com.typesafe.config.Config;
import com.google.auto.service.AutoService;
+import java.util.List;
import java.util.function.IntFunction;
import java.util.stream.IntStream;
@AutoService(SeaTunnelTransform.class)
public class SplitTransform extends MultipleFieldOutputTransform {
- private static final String KEY_SEPARATOR = "separator";
- private static final String KEY_SPLIT_FIELD = "split_field";
- private static final String KEY_OUTPUT_FIELDS = "output_fields";
+ public static final Option<String> KEY_SEPARATOR = Options.key("separator")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("The separator to split the field");
+ public static final Option<String> KEY_SPLIT_FIELD =
Options.key("split_field")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("The field to be split");
+
+ public static final Option<List<String>> KEY_OUTPUT_FIELDS =
Options.key("output_fields")
+ .listType()
+ .noDefaultValue()
+ .withDescription("The result fields after split");
private String separator;
private String splitField;
private int splitFieldIndex;
@@ -54,14 +67,14 @@ public class SplitTransform extends
MultipleFieldOutputTransform {
@Override
protected void setConfig(Config pluginConfig) {
CheckResult checkResult = CheckConfigUtil.checkAllExists(pluginConfig,
- KEY_SEPARATOR, KEY_SPLIT_FIELD, KEY_OUTPUT_FIELDS);
+ KEY_SEPARATOR.key(), KEY_SPLIT_FIELD.key(),
KEY_OUTPUT_FIELDS.key());
if (!checkResult.isSuccess()) {
- throw new IllegalArgumentException("Field to check config! " +
checkResult.getMsg());
+ throw new IllegalArgumentException("Failed to check config! " +
checkResult.getMsg());
}
- separator = pluginConfig.getString(KEY_SEPARATOR);
- splitField = pluginConfig.getString(KEY_SPLIT_FIELD);
- outputFields =
pluginConfig.getStringList(KEY_OUTPUT_FIELDS).toArray(new String[0]);
+ separator = pluginConfig.getString(KEY_SEPARATOR.key());
+ splitField = pluginConfig.getString(KEY_SPLIT_FIELD.key());
+ outputFields =
pluginConfig.getStringList(KEY_OUTPUT_FIELDS.key()).toArray(new String[0]);
emptySplits = new String[outputFields.length];
}
diff --git
a/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransformFactory.java
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransformFactory.java
new file mode 100644
index 000000000..cdc6be7b3
--- /dev/null
+++
b/seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/SplitTransformFactory.java
@@ -0,0 +1,43 @@
+/*
+ * 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.seatunnel.transform;
+
+import static org.apache.seatunnel.transform.SplitTransform.KEY_OUTPUT_FIELDS;
+import static org.apache.seatunnel.transform.SplitTransform.KEY_SEPARATOR;
+import static org.apache.seatunnel.transform.SplitTransform.KEY_SPLIT_FIELD;
+
+import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.api.table.factory.Factory;
+import org.apache.seatunnel.api.table.factory.TableTransformFactory;
+
+import com.google.auto.service.AutoService;
+
+@AutoService(Factory.class)
+public class SplitTransformFactory implements TableTransformFactory{
+ @Override
+ public String factoryIdentifier() {
+ return "Split";
+ }
+
+ @Override
+ public OptionRule optionRule() {
+ return OptionRule.builder()
+ .required(KEY_SEPARATOR, KEY_SPLIT_FIELD, KEY_OUTPUT_FIELDS)
+ .build();
+ }
+}