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 2026/04/02 12:23:38 UTC

(hop) branch main updated: Optimize the metadata structure of the stream component (#6929)

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

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 3e729a0a6d Optimize the metadata structure of the stream component (#6929)
3e729a0a6d is described below

commit 3e729a0a6deb7286e9d6ada59495378e242ab780
Author: Lance <le...@gmail.com>
AuthorDate: Thu Apr 2 20:23:33 2026 +0800

    Optimize the metadata structure of the stream component (#6929)
    
    Signed-off-by: lance <le...@gmail.com>
---
 .../metastructure/TransformMetaStructure.java      |   2 +-
 .../metastructure/TransformMetaStructureData.java  |   2 -
 .../TransformMetaStructureDialog.java              | 311 ++++++++++-----------
 .../metastructure/TransformMetaStructureMeta.java  | 216 +++-----------
 4 files changed, 184 insertions(+), 347 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 70b2bee7d4..ce6a407e3a 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
@@ -91,7 +91,7 @@ public class TransformMetaStructure
                   outputRow, pos++, vPosition.convertDataCompatible(vPosition, (long) (i + 1)));
         }
 
-        if (meta.isIncludeFieldnameField()) {
+        if (meta.isIncludeFieldNameField()) {
           outputRow = RowDataUtil.addValueData(outputRow, pos++, v.getName());
         }
 
diff --git a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureData.java b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureData.java
index fde039fd4d..81080504b9 100644
--- a/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureData.java
+++ b/plugins/transforms/metastructure/src/main/java/org/apache/hop/pipeline/transforms/metastructure/TransformMetaStructureData.java
@@ -25,8 +25,6 @@ import org.apache.hop.pipeline.transform.ITransformData;
 public class TransformMetaStructureData extends BaseTransformData implements ITransformData {
 
   public IRowMeta outputRowMeta;
-  public IRowMeta inputRowMeta;
-
   public int rowCount;
 
   /** Default constructor. */
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 f230655df3..c3239ce5f1 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
@@ -41,14 +41,14 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 
 public class TransformMetaStructureDialog extends BaseTransformDialog {
-  private static final Class<?> PKG =
-      TransformMetaStructureMeta.class; // for i18n purposes, needed by Translator2!!
+  // for i18n purposes, needed by Translator2!!
+  private static final Class<?> PKG = TransformMetaStructureMeta.class;
 
   private final TransformMetaStructureMeta input;
 
   private Button wOutputRowcount;
   private Button wIncludePosition;
-  private Button wIncludeFieldname;
+  private Button wIncludeFieldName;
   private Button wIncludeType;
   private Button wIncludeComments;
   private Button wIncludeLength;
@@ -56,14 +56,32 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
   private Button wIncludeMask;
   private Button wIncludeOrigin;
 
+  // label, text
+  private Label wlRowCountField;
   private TextVar wRowCountField;
+
+  private Label wlPositionField;
   private TextVar wPositionField;
-  private TextVar wFieldnameField;
+
+  private Label wlFieldNameField;
+  private TextVar wFieldNameField;
+
+  private Label wlCommentsField;
   private TextVar wCommentsField;
+
+  private Label wlTypeField;
   private TextVar wTypeField;
+
+  private Label wlLengthField;
   private TextVar wLengthField;
+
+  private Label wlPrecisionField;
   private TextVar wPrecisionField;
+
+  private Label wlMaskField;
   private TextVar wMaskField;
+
+  private Label wlOriginField;
   private TextVar wOriginField;
 
   public TransformMetaStructureDialog(
@@ -101,7 +119,7 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
     contentLayout.marginHeight = PropsUi.getFormMargin();
     wContent.setLayout(contentLayout);
 
-    // Rowcout Output
+    // Row count Output
     Label wlOutputRowcount = new Label(wContent, SWT.RIGHT);
     wlOutputRowcount.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureDialog.outputRowcount.Label"));
@@ -123,21 +141,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wOutputRowcount.getSelection()) {
-              wRowCountField.setEnabled(true);
-              // Default to field name by using translations
-              wRowCountField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.RowcountName"));
-            } else {
-              wRowCountField.setText("");
-              wRowCountField.setEnabled(false);
-            }
+            toggleTextAndLabel(wOutputRowcount, wRowCountField, wlRowCountField, "RowcountName");
           }
         });
 
     // Row count Field
-    Label wlRowCountField = new Label(wContent, SWT.RIGHT);
+    wlRowCountField = new Label(wContent, SWT.RIGHT);
     wlRowCountField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureDialog.RowcountField.Label"));
     PropsUi.setLook(wlRowCountField);
@@ -179,21 +188,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludePosition.getSelection()) {
-              wPositionField.setEnabled(true);
-              // Default to field name by using translations
-              wPositionField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.PositionName"));
-            } else {
-              wPositionField.setText("");
-              wPositionField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludePosition, wPositionField, wlPositionField, "PositionName");
           }
         });
 
     // Position Field
-    Label wlPositionField = new Label(wContent, SWT.RIGHT);
+    wlPositionField = new Label(wContent, SWT.RIGHT);
     wlPositionField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.PositionField.Label"));
     PropsUi.setLook(wlPositionField);
@@ -213,62 +213,53 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
     wPositionField.setLayoutData(fdPositionField);
     wPositionField.setEnabled(false);
 
-    // Include fieldname field
-    Label wlIncludeFieldname = new Label(wContent, SWT.RIGHT);
-    wlIncludeFieldname.setText(
+    // Include fieldName field
+    Label wlIncludeFieldName = new Label(wContent, SWT.RIGHT);
+    wlIncludeFieldName.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureDialog.includeFieldname.Label"));
-    PropsUi.setLook(wlIncludeFieldname);
-    FormData fdlIncludeFieldname = new FormData();
-    fdlIncludeFieldname.left = new FormAttachment(0, 0);
-    fdlIncludeFieldname.top = new FormAttachment(wlPositionField, margin);
-    fdlIncludeFieldname.right = new FormAttachment(middle, -margin);
-    wlIncludeFieldname.setLayoutData(fdlIncludeFieldname);
-    wIncludeFieldname = new Button(wContent, SWT.CHECK);
-    PropsUi.setLook(wIncludeFieldname);
-    FormData fdIncludeFieldname = new FormData();
-    fdIncludeFieldname.left = new FormAttachment(middle, 0);
-    fdIncludeFieldname.top = new FormAttachment(wlIncludeFieldname, 0, SWT.CENTER);
-    fdIncludeFieldname.right = new FormAttachment(100, 0);
-    wIncludeFieldname.setLayoutData(fdIncludeFieldname);
-
-    wIncludeFieldname.addSelectionListener(
+    PropsUi.setLook(wlIncludeFieldName);
+    FormData fdlIncludeFieldName = new FormData();
+    fdlIncludeFieldName.left = new FormAttachment(0, 0);
+    fdlIncludeFieldName.top = new FormAttachment(wlPositionField, margin);
+    fdlIncludeFieldName.right = new FormAttachment(middle, -margin);
+    wlIncludeFieldName.setLayoutData(fdlIncludeFieldName);
+    wIncludeFieldName = new Button(wContent, SWT.CHECK);
+    PropsUi.setLook(wIncludeFieldName);
+    FormData fdIncludeFieldName = new FormData();
+    fdIncludeFieldName.left = new FormAttachment(middle, 0);
+    fdIncludeFieldName.top = new FormAttachment(wlIncludeFieldName, 0, SWT.CENTER);
+    fdIncludeFieldName.right = new FormAttachment(100, 0);
+    wIncludeFieldName.setLayoutData(fdIncludeFieldName);
+
+    wIncludeFieldName.addSelectionListener(
         new SelectionAdapter() {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludeFieldname.getSelection()) {
-              wFieldnameField.setEnabled(true);
-              // Default to field name by using translations
-              wFieldnameField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.FieldName"));
-            } else {
-              wFieldnameField.setText("");
-              wFieldnameField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludeFieldName, wFieldNameField, wlFieldNameField, "FieldName");
           }
         });
 
     // Fieldname Field
-    Label wlFieldnameField = new Label(wContent, SWT.RIGHT);
-    wlFieldnameField.setText(
+    wlFieldNameField = new Label(wContent, SWT.RIGHT);
+    wlFieldNameField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.FieldnameField.Label"));
-    PropsUi.setLook(wlFieldnameField);
-    FormData fdlFieldnameField = new FormData();
-    fdlFieldnameField.left = new FormAttachment(0, 0);
-    fdlFieldnameField.right = new FormAttachment(middle, -margin);
-    fdlFieldnameField.top = new FormAttachment(wlIncludeFieldname, margin);
-    wlFieldnameField.setLayoutData(fdlFieldnameField);
-
-    wFieldnameField = new TextVar(variables, wContent, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
-    PropsUi.setLook(wFieldnameField);
-    wFieldnameField.addModifyListener(lsMod);
-    FormData fdFieldnameField = new FormData();
-    fdFieldnameField.left = new FormAttachment(middle, 0);
-    fdFieldnameField.top = new FormAttachment(wlFieldnameField, 0, SWT.CENTER);
-    fdFieldnameField.right = new FormAttachment(100, -margin);
-    wFieldnameField.setLayoutData(fdFieldnameField);
-    wFieldnameField.setEnabled(false);
+    PropsUi.setLook(wlFieldNameField);
+    FormData fdlFieldNameField = new FormData();
+    fdlFieldNameField.left = new FormAttachment(0, 0);
+    fdlFieldNameField.right = new FormAttachment(middle, -margin);
+    fdlFieldNameField.top = new FormAttachment(wlIncludeFieldName, margin);
+    wlFieldNameField.setLayoutData(fdlFieldNameField);
+
+    wFieldNameField = new TextVar(variables, wContent, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
+    PropsUi.setLook(wFieldNameField);
+    wFieldNameField.addModifyListener(lsMod);
+    FormData fdFieldNameField = new FormData();
+    fdFieldNameField.left = new FormAttachment(middle, 0);
+    fdFieldNameField.top = new FormAttachment(wlFieldNameField, 0, SWT.CENTER);
+    fdFieldNameField.right = new FormAttachment(100, -margin);
+    wFieldNameField.setLayoutData(fdFieldNameField);
+    wFieldNameField.setEnabled(false);
 
     // Include Comment field
     Label wlIncludeComment = new Label(wContent, SWT.RIGHT);
@@ -277,7 +268,7 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
     PropsUi.setLook(wlIncludeComment);
     FormData fdlIncludeComment = new FormData();
     fdlIncludeComment.left = new FormAttachment(0, 0);
-    fdlIncludeComment.top = new FormAttachment(wlFieldnameField, margin);
+    fdlIncludeComment.top = new FormAttachment(wlFieldNameField, margin);
     fdlIncludeComment.right = new FormAttachment(middle, -margin);
     wlIncludeComment.setLayoutData(fdlIncludeComment);
     wIncludeComments = new Button(wContent, SWT.CHECK);
@@ -293,21 +284,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludeComments.getSelection()) {
-              wCommentsField.setEnabled(true);
-              // Default to field name by using translations
-              wCommentsField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.CommentsName"));
-            } else {
-              wCommentsField.setText("");
-              wCommentsField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludeComments, wCommentsField, wlCommentsField, "CommentsName");
           }
         });
 
     // Comments Field
-    Label wlCommentsField = new Label(wContent, SWT.RIGHT);
+    wlCommentsField = new Label(wContent, SWT.RIGHT);
     wlCommentsField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.CommentsField.Label"));
     PropsUi.setLook(wlCommentsField);
@@ -350,21 +332,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludeType.getSelection()) {
-              wTypeField.setEnabled(true);
-              // Default to field name by using translations
-              wTypeField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.TypeName"));
-            } else {
-              wTypeField.setText("");
-              wTypeField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludeType, wTypeField, wlTypeField, "TypeName");
           }
         });
 
     // Type Field
-    Label wlTypeField = new Label(wContent, SWT.RIGHT);
+    wlTypeField = new Label(wContent, SWT.RIGHT);
     wlTypeField.setText(BaseMessages.getString(PKG, "TransformMetaStructureMeta.TypeField.Label"));
     PropsUi.setLook(wlTypeField);
     FormData fdlTypeField = new FormData();
@@ -406,20 +379,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @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);
-            }
+            toggleTextAndLabel(wIncludeMask, wMaskField, wlMaskField, "MaskName");
           }
         });
 
     // Mask Field
-    Label wlMaskField = new Label(wContent, SWT.RIGHT);
+    wlMaskField = new Label(wContent, SWT.RIGHT);
     wlMaskField.setText(BaseMessages.getString(PKG, "TransformMetaStructureMeta.MaskField.Label"));
     PropsUi.setLook(wlMaskField);
     FormData fdlMaskField = new FormData();
@@ -461,21 +426,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludeLength.getSelection()) {
-              wLengthField.setEnabled(true);
-              // Default to field name by using translations
-              wLengthField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.LengthName"));
-            } else {
-              wLengthField.setText("");
-              wLengthField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludeLength, wLengthField, wlLengthField, "LengthName");
           }
         });
 
     // Length Field
-    Label wlLengthField = new Label(wContent, SWT.RIGHT);
+    wlLengthField = new Label(wContent, SWT.RIGHT);
     wlLengthField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.LengthField.Label"));
     PropsUi.setLook(wlLengthField);
@@ -518,21 +474,13 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludePrecision.getSelection()) {
-              wPrecisionField.setEnabled(true);
-              // Default to field name by using translations
-              wPrecisionField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.PrecisionName"));
-            } else {
-              wPrecisionField.setText("");
-              wPrecisionField.setEnabled(false);
-            }
+            toggleTextAndLabel(
+                wIncludePrecision, wPrecisionField, wlPrecisionField, "PrecisionName");
           }
         });
 
     // Precision Field
-    Label wlPrecisionField = new Label(wContent, SWT.RIGHT);
+    wlPrecisionField = new Label(wContent, SWT.RIGHT);
     wlPrecisionField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.PrecisionField.Label"));
     PropsUi.setLook(wlPrecisionField);
@@ -575,20 +523,12 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
           @Override
           public void widgetSelected(SelectionEvent e) {
             input.setChanged();
-
-            if (wIncludeOrigin.getSelection()) {
-              wOriginField.setEnabled(true);
-              // Default to field name by using translations
-              wOriginField.setText(
-                  BaseMessages.getString(PKG, "TransformMetaStructureMeta.OriginName"));
-            } else {
-              wOriginField.setEnabled(false);
-            }
+            toggleTextAndLabel(wIncludeOrigin, wOriginField, wlOriginField, "OriginName");
           }
         });
 
     // Origin Field
-    Label wlOriginField = new Label(wContent, SWT.RIGHT);
+    wlOriginField = new Label(wContent, SWT.RIGHT);
     wlOriginField.setText(
         BaseMessages.getString(PKG, "TransformMetaStructureMeta.OriginField.Label"));
     PropsUi.setLook(wlOriginField);
@@ -629,62 +569,72 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
     if (input.isOutputRowcount()) {
       wRowCountField.setText(input.getRowcountField());
     }
+
+    wlRowCountField.setEnabled(input.isOutputRowcount());
     wRowCountField.setEnabled(input.isOutputRowcount());
     wOutputRowcount.setSelection(input.isOutputRowcount());
 
     if (input.isIncludePositionField()) {
-      wPositionField.setText(input.getPositionFieldname());
+      wPositionField.setText(input.getPositionFieldName());
     }
 
+    wlPositionField.setEnabled(input.isIncludePositionField());
     wPositionField.setEnabled(input.isIncludePositionField());
     wIncludePosition.setSelection(input.isIncludePositionField());
 
-    if (input.isIncludeFieldnameField()) {
-      wFieldnameField.setText(input.getFieldFieldname());
+    if (input.isIncludeFieldNameField()) {
+      wFieldNameField.setText(input.getFieldFieldName());
     }
 
-    wFieldnameField.setEnabled(input.isIncludeFieldnameField());
-    wIncludeFieldname.setSelection(input.isIncludeFieldnameField());
+    wlFieldNameField.setEnabled(input.isIncludeFieldNameField());
+    wFieldNameField.setEnabled(input.isIncludeFieldNameField());
+    wIncludeFieldName.setSelection(input.isIncludeFieldNameField());
 
     if (input.isIncludeCommentsField()) {
-      wCommentsField.setText(input.getCommentsFieldname());
+      wCommentsField.setText(input.getCommentsFieldName());
     }
 
+    wlCommentsField.setEnabled(input.isIncludeCommentsField());
     wCommentsField.setEnabled(input.isIncludeCommentsField());
     wIncludeComments.setSelection(input.isIncludeCommentsField());
 
     if (input.isIncludeTypeField()) {
-      wTypeField.setText(input.getTypeFieldname());
+      wTypeField.setText(input.getTypeFieldName());
     }
 
     if (input.isIncludeMaskField()) {
-      wMaskField.setText(input.getMaskFieldname());
+      wMaskField.setText(input.getMaskFieldName());
     }
 
+    wlMaskField.setEnabled(input.isIncludeMaskField());
     wMaskField.setEnabled(input.isIncludeMaskField());
     wIncludeMask.setSelection(input.isIncludeMaskField());
 
+    wlTypeField.setEnabled(input.isIncludeTypeField());
     wTypeField.setEnabled(input.isIncludeTypeField());
     wIncludeType.setSelection(input.isIncludeTypeField());
 
     if (input.isIncludeLengthField()) {
-      wLengthField.setText(input.getLengthFieldname());
+      wLengthField.setText(input.getLengthFieldName());
     }
 
+    wlLengthField.setEnabled(input.isIncludeLengthField());
     wLengthField.setEnabled(input.isIncludeLengthField());
     wIncludeLength.setSelection(input.isIncludeLengthField());
 
     if (input.isIncludePrecisionField()) {
-      wPrecisionField.setText(input.getPrecisionFieldname());
+      wPrecisionField.setText(input.getPrecisionFieldName());
     }
 
+    wlPrecisionField.setEnabled(input.isIncludePrecisionField());
     wPrecisionField.setEnabled(input.isIncludePrecisionField());
     wIncludePrecision.setSelection(input.isIncludePrecisionField());
 
     if (input.isIncludeOriginField()) {
-      wOriginField.setText(input.getOriginFieldname());
+      wOriginField.setText(input.getOriginFieldName());
     }
 
+    wlOriginField.setEnabled(input.isIncludeOriginField());
     wOriginField.setEnabled(input.isIncludeOriginField());
     wIncludeOrigin.setSelection(input.isIncludeOriginField());
   }
@@ -700,31 +650,52 @@ public class TransformMetaStructureDialog extends BaseTransformDialog {
       return;
     }
 
-    transformName = wTransformName.getText(); // return value
+    // return value
+    transformName = wTransformName.getText();
 
     getInfo(input);
-
     dispose();
   }
 
-  private void getInfo(TransformMetaStructureMeta tfoi) {
-    tfoi.setOutputRowcount(wOutputRowcount.getSelection());
-    tfoi.setRowcountField(wRowCountField.getText());
-    tfoi.setIncludePositionField(wIncludePosition.getSelection());
-    tfoi.setPositionFieldname(wPositionField.getText());
-    tfoi.setIncludeFieldnameField(wIncludeFieldname.getSelection());
-    tfoi.setFieldFieldname(wFieldnameField.getText());
-    tfoi.setIncludeCommentsField(wIncludeComments.getSelection());
-    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());
-    tfoi.setLengthFieldname(wLengthField.getText());
-    tfoi.setIncludeOriginField(wIncludeOrigin.getSelection());
-    tfoi.setOriginFieldname(wOriginField.getText());
+  private void getInfo(TransformMetaStructureMeta meta) {
+    meta.setOutputRowcount(wOutputRowcount.getSelection());
+    meta.setRowcountField(wRowCountField.getText());
+    meta.setIncludePositionField(wIncludePosition.getSelection());
+    meta.setPositionFieldName(wPositionField.getText());
+    meta.setIncludeFieldNameField(wIncludeFieldName.getSelection());
+    meta.setFieldFieldName(wFieldNameField.getText());
+    meta.setIncludeCommentsField(wIncludeComments.getSelection());
+    meta.setCommentsFieldName(wCommentsField.getText());
+    meta.setIncludeTypeField(wIncludeType.getSelection());
+    meta.setTypeFieldName(wTypeField.getText());
+    meta.setIncludeMaskField(wIncludeMask.getSelection());
+    meta.setMaskFieldName(wMaskField.getText());
+    meta.setIncludePrecisionField(wIncludePrecision.getSelection());
+    meta.setPrecisionFieldName(wPrecisionField.getText());
+    meta.setIncludeLengthField(wIncludeLength.getSelection());
+    meta.setLengthFieldName(wLengthField.getText());
+    meta.setIncludeOriginField(wIncludeOrigin.getSelection());
+    meta.setOriginFieldName(wOriginField.getText());
+  }
+
+  /**
+   * Updates the enabled state of the given TextVar and Label based on the checkbox selection.
+   *
+   * @param check the checkbox controlling the state
+   * @param text the text field to update
+   * @param label the label associated with the text field
+   * @param message the message key used to retrieve the default value
+   */
+  private void toggleTextAndLabel(Button check, TextVar text, Label label, String message) {
+    if (check.getSelection()) {
+      text.setEnabled(true);
+      label.setEnabled(true);
+      // Default to field name by using translations
+      text.setText(BaseMessages.getString(PKG, "TransformMetaStructureMeta." + message));
+    } else {
+      text.setText("");
+      text.setEnabled(false);
+      label.setEnabled(false);
+    }
   }
 }
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 a6f2f4658e..d81b871b6e 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
@@ -18,6 +18,8 @@
 package org.apache.hop.pipeline.transforms.metastructure;
 
 import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.hop.core.CheckResult;
 import org.apache.hop.core.ICheckResult;
 import org.apache.hop.core.annotations.Transform;
@@ -34,6 +36,8 @@ import org.apache.hop.pipeline.PipelineMeta;
 import org.apache.hop.pipeline.transform.BaseTransformMeta;
 import org.apache.hop.pipeline.transform.TransformMeta;
 
+@Getter
+@Setter
 @Transform(
     id = "TransformMetaStructure",
     name = "i18n::TransformMetaStructure.Transform.Name",
@@ -44,48 +48,56 @@ import org.apache.hop.pipeline.transform.TransformMeta;
     image = "metastructure.svg")
 public class TransformMetaStructureMeta
     extends BaseTransformMeta<TransformMetaStructure, TransformMetaStructureData> {
-
-  private static final Class<?> PKG = TransformMetaStructureMeta.class; // needed by Translator
+  // needed by Translator
+  private static final Class<?> PKG = TransformMetaStructureMeta.class;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includePositionField;
 
-  @HopMetadataProperty private String positionFieldname;
+  @HopMetadataProperty(key = "positionFieldname")
+  private String positionFieldName;
 
-  @HopMetadataProperty(defaultBoolean = true)
-  private boolean includeFieldnameField;
+  @HopMetadataProperty(key = "includeFieldnameField", defaultBoolean = true)
+  private boolean includeFieldNameField;
 
-  @HopMetadataProperty private String fieldFieldname;
+  @HopMetadataProperty(key = "fieldFieldname")
+  private String fieldFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeCommentsField;
 
-  @HopMetadataProperty private String commentsFieldname;
+  @HopMetadataProperty(key = "commentsFieldname")
+  private String commentsFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeTypeField;
 
-  @HopMetadataProperty private String typeFieldname;
+  @HopMetadataProperty(key = "typeFieldname")
+  private String typeFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeLengthField;
 
-  @HopMetadataProperty private String lengthFieldname;
+  @HopMetadataProperty(key = "lengthFieldname")
+  private String lengthFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includePrecisionField;
 
-  @HopMetadataProperty private String precisionFieldname;
+  @HopMetadataProperty(key = "precisionFieldname")
+  private String precisionFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeMaskField;
 
-  @HopMetadataProperty private String maskFieldname;
+  @HopMetadataProperty(key = "maskFieldname")
+  private String maskFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean includeOriginField;
 
-  @HopMetadataProperty private String originFieldname;
+  @HopMetadataProperty(key = "originFieldname")
+  private String originFieldName;
 
   @HopMetadataProperty(defaultBoolean = true)
   private boolean outputRowcount;
@@ -94,21 +106,21 @@ public class TransformMetaStructureMeta
 
   public TransformMetaStructureMeta() {
     includePositionField = true;
-    positionFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.PositionName");
-    includeFieldnameField = true;
-    fieldFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.FieldName");
+    positionFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.PositionName");
+    includeFieldNameField = true;
+    fieldFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.FieldName");
     includeCommentsField = true;
-    commentsFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.CommentsName");
+    commentsFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.CommentsName");
     includeTypeField = true;
-    typeFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.TypeName");
+    typeFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.TypeName");
     includeLengthField = true;
-    lengthFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.LengthName");
+    lengthFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.LengthName");
     includePrecisionField = true;
-    precisionFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.PrecisionName");
+    precisionFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.PrecisionName");
     includeMaskField = true;
-    maskFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.MaskName");
+    maskFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.MaskName");
     includeOriginField = true;
-    originFieldname = BaseMessages.getString(PKG, "TransformMetaStructureMeta.OriginName");
+    originFieldName = BaseMessages.getString(PKG, "TransformMetaStructureMeta.OriginName");
   }
 
   @Override
@@ -148,49 +160,49 @@ public class TransformMetaStructureMeta
     // create the new fields
     // Position
     if (includePositionField) {
-      IValueMeta positionFieldValue = new ValueMetaInteger(positionFieldname);
+      IValueMeta positionFieldValue = new ValueMetaInteger(positionFieldName);
       positionFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(positionFieldValue);
     }
     // field name
-    if (includeFieldnameField) {
-      IValueMeta nameFieldValue = new ValueMetaString(fieldFieldname);
+    if (includeFieldNameField) {
+      IValueMeta nameFieldValue = new ValueMetaString(fieldFieldName);
       nameFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(nameFieldValue);
     }
     // comments
     if (includeCommentsField) {
-      IValueMeta commentsFieldValue = new ValueMetaString(commentsFieldname);
+      IValueMeta commentsFieldValue = new ValueMetaString(commentsFieldName);
       commentsFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(commentsFieldValue);
     }
     // Type
     if (includeTypeField) {
-      IValueMeta typeFieldValue = new ValueMetaString(typeFieldname);
+      IValueMeta typeFieldValue = new ValueMetaString(typeFieldName);
       typeFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(typeFieldValue);
     }
     // Length
     if (includeLengthField) {
-      IValueMeta lengthFieldValue = new ValueMetaInteger(lengthFieldname);
+      IValueMeta lengthFieldValue = new ValueMetaInteger(lengthFieldName);
       lengthFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(lengthFieldValue);
     }
     // Precision
     if (includePrecisionField) {
-      IValueMeta precisionFieldValue = new ValueMetaInteger(precisionFieldname);
+      IValueMeta precisionFieldValue = new ValueMetaInteger(precisionFieldName);
       precisionFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(precisionFieldValue);
     }
     // Mask
     if (includeMaskField) {
-      IValueMeta maskFieldValue = new ValueMetaString(maskFieldname);
+      IValueMeta maskFieldValue = new ValueMetaString(maskFieldName);
       maskFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(maskFieldValue);
     }
     // Origin
     if (includeOriginField) {
-      IValueMeta originFieldValue = new ValueMetaString(originFieldname);
+      IValueMeta originFieldValue = new ValueMetaString(originFieldName);
       originFieldValue.setOrigin(name);
       inputRowMeta.addValueMeta(originFieldValue);
     }
@@ -202,148 +214,4 @@ public class TransformMetaStructureMeta
       inputRowMeta.addValueMeta(v);
     }
   }
-
-  public boolean isOutputRowcount() {
-    return outputRowcount;
-  }
-
-  public void setOutputRowcount(boolean outputRowcount) {
-    this.outputRowcount = outputRowcount;
-  }
-
-  public String getRowcountField() {
-    return rowcountField;
-  }
-
-  public void setRowcountField(String rowcountField) {
-    this.rowcountField = rowcountField;
-  }
-
-  public String getFieldFieldname() {
-    return fieldFieldname;
-  }
-
-  public void setFieldFieldname(String fieldFieldname) {
-    this.fieldFieldname = fieldFieldname;
-  }
-
-  public String getCommentsFieldname() {
-    return commentsFieldname;
-  }
-
-  public void setCommentsFieldname(String commentsFieldname) {
-    this.commentsFieldname = commentsFieldname;
-  }
-
-  public String getTypeFieldname() {
-    return typeFieldname;
-  }
-
-  public void setTypeFieldname(String typeFieldname) {
-    this.typeFieldname = typeFieldname;
-  }
-
-  public String getPositionFieldname() {
-    return positionFieldname;
-  }
-
-  public void setPositionFieldname(String positionFieldname) {
-    this.positionFieldname = positionFieldname;
-  }
-
-  public String getLengthFieldname() {
-    return lengthFieldname;
-  }
-
-  public void setLengthFieldname(String lengthFieldname) {
-    this.lengthFieldname = lengthFieldname;
-  }
-
-  public String getPrecisionFieldname() {
-    return precisionFieldname;
-  }
-
-  public void setPrecisionFieldname(String precisionFieldname) {
-    this.precisionFieldname = precisionFieldname;
-  }
-
-  public String getMaskFieldname() {
-    return maskFieldname;
-  }
-
-  public void setMaskFieldname(String name) {
-    this.maskFieldname = name;
-  }
-
-  public String getOriginFieldname() {
-    return originFieldname;
-  }
-
-  public void setOriginFieldname(String originFieldname) {
-    this.originFieldname = originFieldname;
-  }
-
-  public boolean isIncludePositionField() {
-    return includePositionField;
-  }
-
-  public void setIncludePositionField(boolean includePositionField) {
-    this.includePositionField = includePositionField;
-  }
-
-  public boolean isIncludeFieldnameField() {
-    return includeFieldnameField;
-  }
-
-  public void setIncludeFieldnameField(boolean includeFieldnameField) {
-    this.includeFieldnameField = includeFieldnameField;
-  }
-
-  public boolean isIncludeCommentsField() {
-    return includeCommentsField;
-  }
-
-  public void setIncludeCommentsField(boolean includeCommentsField) {
-    this.includeCommentsField = includeCommentsField;
-  }
-
-  public boolean isIncludeTypeField() {
-    return includeTypeField;
-  }
-
-  public void setIncludeTypeField(boolean includeTypeField) {
-    this.includeTypeField = includeTypeField;
-  }
-
-  public boolean isIncludeLengthField() {
-    return includeLengthField;
-  }
-
-  public void setIncludeLengthField(boolean includeLengthField) {
-    this.includeLengthField = includeLengthField;
-  }
-
-  public boolean isIncludePrecisionField() {
-    return includePrecisionField;
-  }
-
-  public void setIncludePrecisionField(boolean includePrecisionField) {
-    this.includePrecisionField = includePrecisionField;
-  }
-
-  public boolean isIncludeMaskField() {
-    return includeMaskField;
-  }
-
-  public void setIncludeMaskField(boolean include) {
-    this.includeMaskField = include;
-  }
-
-  public boolean isIncludeOriginField() {
-    return includeOriginField;
-  }
-
-  public void setIncludeOriginField(boolean includeOriginField) {
-    this.includeOriginField = includeOriginField;
-  }
 }