You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by mc...@apache.org on 2021/12/02 09:48:49 UTC
[incubator-hop] branch master updated: HOP-3402 Fixed minor issue with parameters' argument list
This is an automated email from the ASF dual-hosted git repository.
mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git
The following commit(s) were added to refs/heads/master by this push:
new 6c3cab5 HOP-3402 Fixed minor issue with parameters' argument list
new 173684b Merge pull request #1209 from sramazzina/HOP-3402.1
6c3cab5 is described below
commit 6c3cab5476e773bd1026ba8d9554e0ad3da7b32b
Author: Sergio Ramazzina <se...@serasoft.it>
AuthorDate: Wed Dec 1 22:12:58 2021 +0100
HOP-3402 Fixed minor issue with parameters' argument list
---
.../hop/pipeline/transforms/sql/ExecSql.java | 2 +-
.../transforms/sql/ExecSqlArgumentItem.java | 57 ++++++++++++++++++
.../hop/pipeline/transforms/sql/ExecSqlDialog.java | 6 +-
.../hop/pipeline/transforms/sql/ExecSqlMeta.java | 12 ++--
.../pipeline/transforms/sql/ExecSqlMetaTest.java | 67 +++++++++++++++++++---
5 files changed, 126 insertions(+), 18 deletions(-)
diff --git a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSql.java b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSql.java
index 87561ca..a9e24ce 100644
--- a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSql.java
+++ b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSql.java
@@ -117,7 +117,7 @@ public class ExecSql extends BaseTransform<ExecSqlMeta, ExecSqlData>
// Find the indexes of the arguments
data.argumentIndexes = new int[meta.getArguments().size()];
for (int i = 0; i < meta.getArguments().size(); i++) {
- String arg = meta.getArguments().get(i);
+ String arg = meta.getArguments().get(i).getName();
data.argumentIndexes[i] = this.getInputRowMeta().indexOfValue(arg);
if (data.argumentIndexes[i] < 0) {
logError(BaseMessages.getString(PKG, "ExecSql.Log.ErrorFindingField") + arg + "]");
diff --git a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlArgumentItem.java b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlArgumentItem.java
new file mode 100644
index 0000000..0aad1ab
--- /dev/null
+++ b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlArgumentItem.java
@@ -0,0 +1,57 @@
+package org.apache.hop.pipeline.transforms.sql;
+
+/*
+ * 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.
+ */
+
+import org.apache.hop.metadata.api.HopMetadataProperty;
+
+import java.util.Objects;
+
+public class ExecSqlArgumentItem {
+
+ @HopMetadataProperty(
+ injectionKeyDescription = "ExecSqlMeta.Injection.PARAMETER_NAME",
+ injectionKey = "PARAMETER_NAME")
+ private String name;
+
+ public ExecSqlArgumentItem() {}
+
+ public ExecSqlArgumentItem(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ExecSqlArgumentItem that = (ExecSqlArgumentItem) o;
+ return name.equals(that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+}
diff --git a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlDialog.java b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlDialog.java
index f04b59b..189a4b8 100644
--- a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlDialog.java
+++ b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlDialog.java
@@ -611,9 +611,9 @@ public class ExecSqlDialog extends BaseTransformDialog implements ITransformDial
for (int i = 0; i < input.getArguments().size(); i++) {
TableItem item = wFields.table.getItem(i);
- String arg = input.getArguments().get(i);
+ ExecSqlArgumentItem arg = input.getArguments().get(i);
if (arg != null) {
- item.setText(1, arg);
+ item.setText(1, arg.getName());
}
}
wSetParams.setSelection(input.isParams());
@@ -670,7 +670,7 @@ public class ExecSqlDialog extends BaseTransformDialog implements ITransformDial
input.getArguments().clear();
for (int i = 0; i < nrargs; i++) {
TableItem item = wFields.getNonEmpty(i);
- input.getArguments().add(item.getText(1));
+ input.getArguments().add(new ExecSqlArgumentItem(item.getText(1)));
}
if (input.getConnection() == null) {
diff --git a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMeta.java b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMeta.java
index 3d91afc..69b2bbf 100644
--- a/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMeta.java
+++ b/plugins/transforms/sql/src/main/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMeta.java
@@ -119,14 +119,12 @@ public class ExecSqlMeta extends BaseTransformMeta implements ITransformMeta<Exe
key = "argument",
groupKey = "arguments",
injectionGroupKey = "PARAMETERS",
- injectionGroupDescription = "ExecSqlMeta.Injection.PARAMETERS",
- injectionKeyDescription = "ExecSqlMeta.Injection.PARAMETER_NAME",
- injectionKey = "PARAMETER_NAME")
- private List<String> arguments;
+ injectionGroupDescription = "ExecSqlMeta.Injection.PARAMETERS")
+ private List<ExecSqlArgumentItem> arguments;
public ExecSqlMeta() {
super();
- arguments = new ArrayList<>();
+ arguments = new ArrayList<ExecSqlArgumentItem>();
}
/** @return Returns the true if we have to set params. */
@@ -150,12 +148,12 @@ public class ExecSqlMeta extends BaseTransformMeta implements ITransformMeta<Exe
}
/** @return Returns the arguments. */
- public List<String> getArguments() {
+ public List<ExecSqlArgumentItem> getArguments() {
return arguments;
}
/** @param arguments The arguments to set. */
- public void setArguments(List<String> arguments) {
+ public void setArguments(List<ExecSqlArgumentItem> arguments) {
this.arguments = arguments;
}
diff --git a/plugins/transforms/sql/src/test/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMetaTest.java b/plugins/transforms/sql/src/test/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMetaTest.java
index 15b3494..bd35867 100644
--- a/plugins/transforms/sql/src/test/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMetaTest.java
+++ b/plugins/transforms/sql/src/test/java/org/apache/hop/pipeline/transforms/sql/ExecSqlMetaTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.hop.pipeline.transforms.sql;
+import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.hop.core.HopEnvironment;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.plugins.PluginRegistry;
@@ -23,9 +24,7 @@ import org.apache.hop.junit.rules.RestoreHopEngineEnvironment;
import org.apache.hop.pipeline.transform.ITransformMeta;
import org.apache.hop.pipeline.transforms.loadsave.LoadSaveTester;
import org.apache.hop.pipeline.transforms.loadsave.initializer.IInitializer;
-import org.apache.hop.pipeline.transforms.loadsave.validator.IFieldLoadSaveValidator;
-import org.apache.hop.pipeline.transforms.loadsave.validator.ListLoadSaveValidator;
-import org.apache.hop.pipeline.transforms.loadsave.validator.StringLoadSaveValidator;
+import org.apache.hop.pipeline.transforms.loadsave.validator.*;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
@@ -92,9 +91,6 @@ public class ExecSqlMetaTest implements IInitializer<ITransformMeta> {
};
Map<String, IFieldLoadSaveValidator<?>> attrValidatorMap = new HashMap<>();
- attrValidatorMap.put(
- "arguments", new ListLoadSaveValidator<String>(new StringLoadSaveValidator(), 5));
-
Map<String, IFieldLoadSaveValidator<?>> typeValidatorMap = new HashMap<>();
loadSaveTester =
@@ -107,6 +103,55 @@ public class ExecSqlMetaTest implements IInitializer<ITransformMeta> {
attrValidatorMap,
typeValidatorMap,
this);
+
+ IFieldLoadSaveValidatorFactory validatorFactory =
+ loadSaveTester.getFieldLoadSaveValidatorFactory();
+
+ validatorFactory.registerValidator(
+ validatorFactory.getName(ExecSqlArgumentItem.class),
+ new ObjectValidator<>(
+ validatorFactory,
+ ExecSqlArgumentItem.class,
+ Arrays.asList("name"),
+ new HashMap<String, String>() {
+ {
+ put("name", "getName");
+ }
+ },
+ new HashMap<String, String>() {
+ {
+ put("name", "setName");
+ }
+ }));
+
+ validatorFactory.registerValidator(
+ validatorFactory.getName(List.class, ExecSqlArgumentItem.class),
+ new ListLoadSaveValidator<>(new ExecSqlArgumentItemFieldLoadSaveValidator()));
+ }
+
+ public class ExecSqlArgumentItemFieldLoadSaveValidator
+ implements IFieldLoadSaveValidator<ExecSqlArgumentItem> {
+ final Random rand = new Random();
+
+ @Override
+ public ExecSqlArgumentItem getTestObject() {
+
+ ExecSqlArgumentItem field =
+ new ExecSqlArgumentItem(
+ UUID.randomUUID().toString());
+
+ return field;
+ }
+
+ @Override
+ public boolean validateTestObject(ExecSqlArgumentItem testObject, Object actual) {
+ if (!(actual instanceof ExecSqlArgumentItem)) {
+ return false;
+ }
+ ExecSqlArgumentItem another = (ExecSqlArgumentItem) actual;
+ return new EqualsBuilder()
+ .append(testObject.getName(), another.getName()).isEquals();
+ }
}
// Call the allocate method on the LoadSaveTester meta class
@@ -114,7 +159,15 @@ public class ExecSqlMetaTest implements IInitializer<ITransformMeta> {
public void modify(ITransformMeta someMeta) {
if (someMeta instanceof ExecSqlMeta) {
((ExecSqlMeta) someMeta).getArguments().clear();
- ((ExecSqlMeta) someMeta).getArguments().addAll(Arrays.asList("a", "b", "c", "d", "e"));
+ ((ExecSqlMeta) someMeta)
+ .getArguments()
+ .addAll(
+ Arrays.asList(
+ new ExecSqlArgumentItem("a"),
+ new ExecSqlArgumentItem("b"),
+ new ExecSqlArgumentItem("c"),
+ new ExecSqlArgumentItem("d"),
+ new ExecSqlArgumentItem("e")));
}
}