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")));
     }
   }