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