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

nadment pushed a commit to branch 3120_META_STRUCTURE
in repository https://gitbox.apache.org/repos/asf/hop.git

commit 9ebf6ac9e7117887801622949259e8d8e61da74e
Author: Nicolas Adment <[email protected]>
AuthorDate: Mon Jul 31 22:05:25 2023 +0200

    Add mask information to the Metadata Structure of Stream transform #3120
---
 .../metastructure/TransformMetaStructure.java      |  4 ++
 .../TransformMetaStructureDialog.java              | 70 +++++++++++++++++++++-
 .../metastructure/TransformMetaStructureMeta.java  | 31 +++++++++-
 .../messages/messages_de_DE.properties             |  1 -
 .../messages/messages_en_US.properties             |  4 +-
 5 files changed, 105 insertions(+), 5 deletions(-)

diff --git 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructure.java
 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructure.java
index cf66e18f75..14f7a298c9 100644
--- 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructure.java
+++ 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructure.java
@@ -123,6 +123,10 @@ public class TransformMetaStructure
                   vPrecision.convertDataCompatible(vPrecision, 
Long.valueOf(v.getPrecision())));
         }
 
+        if (meta.isIncludeMaskField()) {
+          outputRow = RowDataUtil.addValueData(outputRow, pos++, 
v.getConversionMask());
+        }
+        
         if (meta.isIncludeOriginField()) {
           outputRow = RowDataUtil.addValueData(outputRow, pos++, 
v.getOrigin());
         }
diff --git 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureDialog.java
 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureDialog.java
index b56e475a12..c1d49eed8c 100644
--- 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureDialog.java
+++ 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureDialog.java
@@ -52,6 +52,7 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
   private Button wIncludeComments;
   private Button wIncludeLength;
   private Button wIncludePrecision;
+  private Button wIncludeMask;
   private Button wIncludeOrigin;
 
   private TextVar wRowCountField;
@@ -61,6 +62,7 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
   private TextVar wTypeField;
   private TextVar wLengthField;
   private TextVar wPrecisionField;
+  private TextVar wMaskField;
   private TextVar wOriginField;
 
   public TransformMetaStructureDialog(
@@ -92,8 +94,7 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
 
     // TransformName line
     wlTransformName = new Label(shell, SWT.RIGHT);
-    wlTransformName.setText(
-        BaseMessages.getString(PKG, 
"TransformMetaStructureDialog.TransformName.Label"));
+    
wlTransformName.setText(BaseMessages.getString("System.Label.TransformName"));
     PropsUi.setLook(wlTransformName);
     fdlTransformName = new FormData();
     fdlTransformName.left = new FormAttachment(0, 0);
@@ -392,6 +393,62 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
     wTypeField.setLayoutData(fdTypeField);
     wTypeField.setEnabled(true);
 
+    // Include Mask field
+    Label wlIncludeMask = new Label(shell, SWT.RIGHT);
+    wlIncludeMask.setText(
+        BaseMessages.getString(PKG, 
"TransformMetaStructureDialog.includeMask.Label"));
+    PropsUi.setLook(wlIncludeMask);
+    FormData fdlIncludeMask = new FormData();
+    fdlIncludeMask.left = new FormAttachment(0, 0);
+    fdlIncludeMask.top = new FormAttachment(wlTypeField, margin);
+    fdlIncludeMask.right = new FormAttachment(middle, -margin);
+    wlIncludeMask.setLayoutData(fdlIncludeMask);
+    wIncludeMask = new Button(shell, SWT.CHECK);
+    PropsUi.setLook(wIncludeOrigin);
+    FormData fdIncludeMask = new FormData();
+    fdIncludeMask.left = new FormAttachment(middle, 0);
+    fdIncludeMask.top = new FormAttachment(wlIncludeMask, 0, SWT.CENTER);
+    fdIncludeMask.right = new FormAttachment(100, 0);
+    wIncludeMask.setLayoutData(fdIncludeMask);
+
+    wIncludeMask.addSelectionListener(
+        new SelectionAdapter() {
+          @Override
+          public void widgetSelected(SelectionEvent e) {
+            input.setChanged();
+
+            if (wIncludeMask.getSelection()) {
+              wMaskField.setEnabled(true);
+              // Default to field name by using translations
+              wMaskField.setText(
+                  BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.MaskName"));
+            } else {
+              wMaskField.setEnabled(false);
+            }
+          }
+        });
+
+    // Mask Field
+    Label wlMaskField = new Label(shell, SWT.RIGHT);
+    wlMaskField.setText(
+        BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.MaskField.Label"));
+    PropsUi.setLook(wlMaskField);
+    FormData fdlMaskField = new FormData();
+    fdlMaskField.left = new FormAttachment(0, 0);
+    fdlMaskField.right = new FormAttachment(middle, -margin);
+    fdlMaskField.top = new FormAttachment(wlIncludeMask, 2 * margin);
+    wlMaskField.setLayoutData(fdlMaskField);
+
+    wMaskField = new TextVar(variables, shell, SWT.SINGLE | SWT.LEFT | 
SWT.BORDER);
+    PropsUi.setLook(wMaskField);
+    wMaskField.addModifyListener(lsMod);
+    FormData fdMaskField = new FormData();
+    fdMaskField.left = new FormAttachment(middle, 0);
+    fdMaskField.top = new FormAttachment(wlMaskField, 0, SWT.CENTER);
+    fdMaskField.right = new FormAttachment(100, -margin);
+    wMaskField.setLayoutData(fdMaskField);
+    wMaskField.setEnabled(true);  
+    
     // Include Length field
     Label wlIncludeLength = new Label(shell, SWT.RIGHT);
     wlIncludeLength.setText(
@@ -612,6 +669,13 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
       wTypeField.setText(input.getTypeFieldname());
     }
 
+    if (input.isIncludeMaskField()) {
+      wMaskField.setText(input.getMaskFieldname());
+    }
+
+    wMaskField.setEnabled(input.isIncludeMaskField());
+    wIncludeMask.setSelection(input.isIncludeMaskField());    
+    
     wTypeField.setEnabled(input.isIncludeTypeField());
     wIncludeType.setSelection(input.isIncludeTypeField());
 
@@ -669,6 +733,8 @@ public class TransformMetaStructureDialog extends 
BaseTransformDialog implements
     tfoi.setCommentsFieldname(wCommentsField.getText());
     tfoi.setIncludeTypeField(wIncludeType.getSelection());
     tfoi.setTypeFieldname(wTypeField.getText());
+    tfoi.setIncludeMaskField(wIncludeMask.getSelection());
+    tfoi.setMaskFieldname(wMaskField.getText());
     tfoi.setIncludePrecisionField(wIncludePrecision.getSelection());
     tfoi.setPrecisionFieldname(wPrecisionField.getText());
     tfoi.setIncludeLengthField(wIncludeLength.getSelection());
diff --git 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureMeta.java
 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureMeta.java
index b0c5861bc9..36f4fa68b4 100644
--- 
a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureMeta.java
+++ 
b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureMeta.java
@@ -74,9 +74,14 @@ public class TransformMetaStructureMeta extends 
BaseTransformMeta<TransformMetaS
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includePrecisionField;
-
+  
   @HopMetadataProperty private String precisionFieldname;
 
+  @HopMetadataProperty(defaultBoolean = true)
+  private boolean includeMaskField;
+
+  @HopMetadataProperty private String maskFieldname;
+  
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeOriginField;
 
@@ -100,6 +105,8 @@ public class TransformMetaStructureMeta extends 
BaseTransformMeta<TransformMetaS
     lengthFieldname = BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.LengthName");
     includePrecisionField = true;
     precisionFieldname = BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.PrecisionName");
+    includeMaskField = true;
+    maskFieldname = BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.MaskName");
     includeOriginField = true;
     originFieldname = BaseMessages.getString(PKG, 
"TransformMetaStructureMeta.OriginName");
   }
@@ -175,6 +182,12 @@ public class TransformMetaStructureMeta extends 
BaseTransformMeta<TransformMetaS
       precisionFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(precisionFieldValue);
     }
+    // Mask
+    if (includeMaskField) {
+      IValueMeta maskFieldValue = new ValueMetaString(maskFieldname);
+      maskFieldValue.setOrigin(name);
+      inputRowMeta.addValueMeta(maskFieldValue);
+    }    
     // Origin
     if (includeOriginField) {
       IValueMeta originFieldValue = new ValueMetaString(originFieldname);
@@ -254,6 +267,14 @@ public class TransformMetaStructureMeta extends 
BaseTransformMeta<TransformMetaS
     this.precisionFieldname = precisionFieldname;
   }
 
+  public String getMaskFieldname() {
+    return maskFieldname;
+  }
+
+  public void setMaskFieldname(String name) {
+    this.maskFieldname = name;
+  }
+  
   public String getOriginFieldname() {
     return originFieldname;
   }
@@ -310,6 +331,14 @@ public class TransformMetaStructureMeta extends 
BaseTransformMeta<TransformMetaS
     this.includePrecisionField = includePrecisionField;
   }
 
+  public boolean isIncludeMaskField() {
+    return includeMaskField;
+  }
+  
+  public void setIncludeMaskField(boolean include) {
+    this.includeMaskField = include;
+  }
+  
   public boolean isIncludeOriginField() {
     return includeOriginField;
   }
diff --git 
a/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_de_DE.properties
 
b/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_de_DE.properties
index 2e7612fce3..f0b4b9b686 100644
--- 
a/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_de_DE.properties
+++ 
b/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_de_DE.properties
@@ -19,7 +19,6 @@
 #
 TransformMetaStructure.Transform.Name=Metadaten des eingehenden stream
 TransformMetaStructure.Transform.Description=Liest die Metadaten des 
eingehenden Streams aus.
-TransformMetaStructureDialog.TransformName.Label=Schrittname 
 TransformMetaStructureDialog.Shell.Title=Metadaten Struktur
 TransformMetaStructureDialog.outputRowcount.Label=Zeilenanzahl ausgeben?
 TransformMetaStructureMeta.PositionName=Position
diff --git 
a/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_en_US.properties
 
b/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_en_US.properties
index a66e9e6021..8f6027b323 100644
--- 
a/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_en_US.properties
+++ 
b/plugins/transforms/metastructure/src/main/resources/org/apache/hop/pipeline/transforms/metastructure/messages/messages_en_US.properties
@@ -18,7 +18,6 @@
 
 TransformMetaStructure.Transform.Name=Metadata structure of stream
 TransformMetaStructure.Transform.Description=Produces the metadata of the 
input fields of this transform as output
-TransformMetaStructureDialog.TransformName.Label=Step name 
 TransformMetaStructureDialog.Shell.Title=Metadata structure of stream
 TransformMetaStructureDialog.outputRowcount.Label=Output row count?
 TransformMetaStructureDialog.RowcountField.Label=Field for row count
@@ -26,6 +25,7 @@ TransformMetaStructureMeta.PositionName=Position
 TransformMetaStructureMeta.FieldName=Fieldname
 TransformMetaStructureMeta.CommentsName=Comments
 TransformMetaStructureMeta.TypeName=Type
+TransformMetaStructureMeta.MaskName=Mask
 TransformMetaStructureMeta.LengthName=Length
 TransformMetaStructureMeta.PrecisionName=Precision
 TransformMetaStructureMeta.OriginName=Origin
@@ -34,6 +34,7 @@ TransformMetaStructureMeta.PositionField.Label=Field for 
position
 TransformMetaStructureMeta.FieldnameField.Label=Field for field name
 TransformMetaStructureMeta.CommentsField.Label=Field for comments
 TransformMetaStructureMeta.TypeField.Label=Field for type
+TransformMetaStructureMeta.MaskField.Label=Field for mask
 TransformMetaStructureMeta.LengthField.Label=Field for length
 TransformMetaStructureMeta.PrecisionField.Label=Field for precision
 TransformMetaStructureMeta.OriginField.Label=Field for origin
@@ -41,6 +42,7 @@ TransformMetaStructureDialog.includePosition.Label=Include 
position field?
 TransformMetaStructureDialog.includeFieldname.Label=Include field name field?
 TransformMetaStructureDialog.includeComments.Label=Include comment field?
 TransformMetaStructureDialog.includeType.Label=Include type field?
+TransformMetaStructureDialog.includeMask.Label=Include mask field?
 TransformMetaStructureDialog.includeLength.Label=Include length field?
 TransformMetaStructureDialog.includePrecision.Label=Include precision field?
 TransformMetaStructureDialog.includeOrigin.Label=Include origin field?

Reply via email to