You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2021/03/17 09:53:47 UTC

[incubator-hop] branch master updated: HOP-2519: add metadata injection to stringoperations

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

hansva 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 caf6dec  HOP-2519: add metadata injection to stringoperations
     new c14aae9  Merge pull request #680 from hansva/master
caf6dec is described below

commit caf6decd989cf1d61d38d1bc9dc2c8764eb99a20
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Wed Mar 17 10:02:12 2021 +0100

    HOP-2519: add metadata injection to stringoperations
---
 .../src/main/doc/stringoperations.adoc             | 40 +++++++++++++++++++++-
 .../stringoperations/StringOperationsMeta.java     | 32 ++++++++++++-----
 .../messages/messages_en_US.properties             | 11 ++++++
 3 files changed, 73 insertions(+), 10 deletions(-)

diff --git a/plugins/transforms/stringoperations/src/main/doc/stringoperations.adoc b/plugins/transforms/stringoperations/src/main/doc/stringoperations.adoc
index 1663059..55f67fc 100644
--- a/plugins/transforms/stringoperations/src/main/doc/stringoperations.adoc
+++ b/plugins/transforms/stringoperations/src/main/doc/stringoperations.adoc
@@ -52,4 +52,42 @@ With the String Operations transform, you can perform the following string opera
 
 == Metadata Injection Support
 
-All fields of this transform support metadata injection. You can use this transform with ETL Metadata Injection to pass metadata to your pipeline at runtime.
\ No newline at end of file
+All fields of this transform support metadata injection. You can use this transform with ETL Metadata Injection to pass metadata to your pipeline at runtime.
+
+Values for Metadata Injection
+[width="90%", options="header"]
+|===
+|Field|Values
+|In stream fields|list of source fields
+|Out stream fields|list of target fields
+|Trim Type|0 = none +
+1 = left +
+2 = right +
+3 = both
+|Lower/Upper|0 = none +
+1 = lower +
+2 = upper
+|Padding|0 = none +
+1 = left +
+2= right
+|Pad Char| Character used for padding
+|Pad Length| Lenght to pad
+|InitCap|0 = no +
+1 = yes
+|Escape|0 = none +
+1 = escapexml +
+2 = cdata +
+3 = unescapexml +
+4 = escapesql +
+5 = escapehtml +
+6 = unescapehtml
+|Digits|0 = none +
+1 = digits_only +
+2 = remove_digits
+|Remove Special character|0 = none +
+1 = cr +
+2 = lf +
+3 = crlf +
+4 = tab +
+5 = espace
+|===
\ No newline at end of file
diff --git a/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java b/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
index 7f5b8d3..b363cf8 100644
--- a/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
+++ b/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
@@ -23,6 +23,8 @@ import org.apache.hop.core.ICheckResult;
 import org.apache.hop.core.annotations.Transform;
 import org.apache.hop.core.exception.HopTransformException;
 import org.apache.hop.core.exception.HopXmlException;
+import org.apache.hop.core.injection.Injection;
+import org.apache.hop.core.injection.InjectionSupported;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaString;
@@ -48,38 +50,50 @@ import java.util.List;
     categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Flow",
     documentationUrl =
         "https://hop.apache.org/manual/latest/plugins/transforms/stringoperations.html")
+@InjectionSupported(localizationPrefix = "StringOperationsDialog.Injection.")
 public class StringOperationsMeta extends BaseTransformMeta
     implements ITransformMeta<StringOperations, StringOperationsData> {
 
   private static final Class<?> PKG = StringOperationsMeta.class; // For Translator
 
   /** which field in input stream to compare with? */
+  @Injection(name = "SOURCEFIELDS")
   private String[] fieldInStream;
 
   /** output field */
+  @Injection(name = "TARGETFIELDS")
   private String[] fieldOutStream;
 
   /** Trim type */
+  @Injection(name = "TRIMTYPE")
   private int[] trimType;
 
   /** Lower/Upper type */
+  @Injection(name = "LOWERUPPER")
   private int[] lowerUpper;
 
   /** InitCap */
+  @Injection(name = "INITCAP")
   private int[] initCap;
 
+  @Injection(name = "MASKXML")
   private int[] maskXML;
 
+  @Injection(name = "DIGITS")
   private int[] digits;
 
+  @Injection(name = "SPECIALCHARS")
   private int[] remove_special_characters;
 
   /** padding type */
+  @Injection(name = "PADDING")
   private int[] paddingType;
 
   /** Pad length */
+  @Injection(name = "PADLEN")
   private String[] padLen;
 
+  @Injection(name = "PADCHAR")
   private String[] padChar;
 
   /** The trim type codes */
@@ -311,7 +325,7 @@ public class StringOperationsMeta extends BaseTransformMeta
   @Override
   public void loadXml(Node transformNode, IHopMetadataProvider metadataProvider)
       throws HopXmlException {
-    readData(transformNode);
+    readData(transformNode, metadataProvider);
   }
 
   public void allocate(int nrkeys) {
@@ -349,13 +363,12 @@ public class StringOperationsMeta extends BaseTransformMeta
     return retval;
   }
 
-  private void readData(Node transformNode) throws HopXmlException {
+  private void readData(Node transformNode, IHopMetadataProvider metadataProvider) throws HopXmlException {
     try {
       int nrkeys;
 
       Node lookup = XmlHandler.getSubNode(transformNode, "fields");
       nrkeys = XmlHandler.countNodes(lookup, "field");
-
       allocate(nrkeys);
 
       for (int i = 0; i < nrkeys; i++) {
@@ -390,10 +403,7 @@ public class StringOperationsMeta extends BaseTransformMeta
   public void setDefault() {
     fieldInStream = null;
     fieldOutStream = null;
-
-    int nrkeys = 0;
-
-    allocate(nrkeys);
+    allocate(0);
   }
 
   @Override
@@ -403,6 +413,10 @@ public class StringOperationsMeta extends BaseTransformMeta
     retval.append("    <fields>").append(Const.CR);
 
     for (int i = 0; i < fieldInStream.length; i++) {
+      //defaults when not present
+      String lPadChar = ((padChar.length == 0 || padChar.length <= i)) ? "" : padChar[i];
+      String lPadLen = ((padLen.length == 0 || padLen.length <= i)) ? "" : padLen[i];
+
       retval.append("      <field>").append(Const.CR);
       retval.append("        ").append(XmlHandler.addTagValue("in_stream_name", fieldInStream[i]));
       retval
@@ -418,8 +432,8 @@ public class StringOperationsMeta extends BaseTransformMeta
       retval
           .append("        ")
           .append(XmlHandler.addTagValue("padding_type", getPaddingCode(paddingType[i])));
-      retval.append("        ").append(XmlHandler.addTagValue("pad_char", padChar[i]));
-      retval.append("        ").append(XmlHandler.addTagValue("pad_len", padLen[i]));
+      retval.append("        ").append(XmlHandler.addTagValue("pad_char", lPadChar));
+      retval.append("        ").append(XmlHandler.addTagValue("pad_len", lPadLen));
       retval
           .append("        ")
           .append(XmlHandler.addTagValue("init_cap", getInitCapCode(initCap[i])));
diff --git a/plugins/transforms/stringoperations/src/main/resources/org/apache/hop/pipeline/transforms/stringoperations/messages/messages_en_US.properties b/plugins/transforms/stringoperations/src/main/resources/org/apache/hop/pipeline/transforms/stringoperations/messages/messages_en_US.properties
index 31e94f2..af2cfde 100644
--- a/plugins/transforms/stringoperations/src/main/resources/org/apache/hop/pipeline/transforms/stringoperations/messages/messages_en_US.properties
+++ b/plugins/transforms/stringoperations/src/main/resources/org/apache/hop/pipeline/transforms/stringoperations/messages/messages_en_US.properties
@@ -85,3 +85,14 @@ StringOperationsMeta.CheckResult.AllOperationsOnStringFields=Only operations on
 StringOperationsMeta.CheckResult.FieldInputError=Input field "{0}" occurs more than once.
 StringOperationsMeta.CheckResult.FieldOutputError=Output field "{0}" occurs more than once.
 StringOperationsDialog.ColumnInfo.OutStreamField.Tooltip=Leave this field empty if you want to update the input field in stream\nOtherwise a new field (string) will be added to the input stream.
+StringOperationsDialog.Injection.SOURCEFIELDS=In stream fields
+StringOperationsDialog.Injection.TARGETFIELDS=Out stream Fields
+StringOperationsDialog.Injection.TRIMTYPE=Trim Type
+StringOperationsDialog.Injection.LOWERUPPER=Lower/Upper
+StringOperationsDialog.Injection.INITCAP=InitCap
+StringOperationsDialog.Injection.MASKXML=Escape special characters
+StringOperationsDialog.Injection.DIGITS=Digits
+StringOperationsDialog.Injection.SPECIALCHARS=Remove Special Characters
+StringOperationsDialog.Injection.PADDING=Padding
+StringOperationsDialog.Injection.PADLEN=Pad Length
+StringOperationsDialog.Injection.PADCHAR=Pad Char