Skip to content

Commit

Permalink
add HopMetadataProperty to workflow executor, fixes #1948
Browse files Browse the repository at this point in the history
Add missing header

remove clone
  • Loading branch information
hansva committed Feb 7, 2025
1 parent f10cab1 commit 1647088
Show file tree
Hide file tree
Showing 7 changed files with 334 additions and 835 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import com.google.common.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.hop.core.Const;
import org.apache.hop.core.Result;
Expand Down Expand Up @@ -289,20 +290,24 @@ private void executeWorkflow() throws HopException {
// .. but before, perform all the consistency checks just one time just in the first result
// row
if (!rowConsistencyChecked) {
for (int i = 0; i < meta.getResultRowsField().length; i++) {
int idx = row.getRowMeta().indexOfValue(meta.getResultRowsField()[i]);
for (int i = 0; i < meta.getResultRowsField().size(); i++) {
int idx = row.getRowMeta().indexOfValue(meta.getResultRowsField().get(i).getName());

if (idx == -1) {
missingFields +=
(missingFields.length() > 0 ? "," : "") + meta.getResultRowsField()[i];
(missingFields.length() > 0 ? "," : "")
+ meta.getResultRowsField().get(i).getName();
}

IValueMeta valueMeta = row.getRowMeta().getValueMeta(i);

if (valueMeta != null && valueMeta.getType() != meta.getResultRowsType()[i]) {
if (valueMeta != null
&& valueMeta.getType()
!= ValueMetaFactory.getIdForValueMeta(
meta.getResultRowsField().get(i).getType())) {
expectedTypes +=
(expectedTypes.length() > 0 ? "," : "")
+ ValueMetaFactory.getValueMetaName(meta.getResultRowsType()[i]);
+ meta.getResultRowsField().get(i).getType();
currentTypes += (currentTypes.length() > 0 ? "," : "") + valueMeta.getTypeDesc();
}
}
Expand All @@ -323,7 +328,7 @@ private void executeWorkflow() throws HopException {

Object[] targetRow = RowDataUtil.allocateRowData(data.resultRowsOutputRowMeta.size());

for (int i = 0; i < meta.getResultRowsField().length; i++) {
for (int i = 0; i < meta.getResultRowsField().size(); i++) {
targetRow[i] = row.getData()[i];
}

Expand Down Expand Up @@ -372,12 +377,12 @@ void discardLogLines(WorkflowExecutorData data) {
private void passParametersToWorkflow() throws HopException {
// Set parameters, when fields are used take the first row in the set.
//
WorkflowExecutorParameters parameters = meta.getParameters();
List<WorkflowExecutorParameters> parameters = meta.getParameters();

for (int i = 0; i < parameters.getVariable().length; i++) {
String variableName = parameters.getVariable()[i];
String variableInput = parameters.getInput()[i];
String fieldName = parameters.getField()[i];
for (int i = 0; i < parameters.size(); i++) {
String variableName = parameters.get(i).getVariable();
String variableInput = parameters.get(i).getInput();
String fieldName = parameters.get(i).getField();
String variableValue = null;
if (StringUtils.isNotEmpty(variableName)) {
// The value is provided by a field in an input row
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -453,14 +453,13 @@ public void getData() {
workflowExecutorMeta.getResultRowsTargetTransformMeta() == null
? ""
: workflowExecutorMeta.getResultRowsTargetTransformMeta().getName());
for (int i = 0; i < workflowExecutorMeta.getResultRowsField().length; i++) {
for (int i = 0; i < workflowExecutorMeta.getResultRowsField().size(); i++) {
TableItem item = new TableItem(wResultRowsFields.table, SWT.NONE);
item.setText(1, Const.NVL(workflowExecutorMeta.getResultRowsField()[i], ""));
item.setText(
2, ValueMetaFactory.getValueMetaName(workflowExecutorMeta.getResultRowsType()[i]));
int length = workflowExecutorMeta.getResultRowsLength()[i];
item.setText(1, Const.NVL(workflowExecutorMeta.getResultRowsField().get(i).getName(), ""));
item.setText(2, workflowExecutorMeta.getResultRowsField().get(i).getType());
int length = workflowExecutorMeta.getResultRowsField().get(i).getLength();
item.setText(3, length < 0 ? "" : Integer.toString(length));
int precision = workflowExecutorMeta.getResultRowsPrecision()[i];
int precision = workflowExecutorMeta.getResultRowsField().get(i).getPrecision();
item.setText(4, precision < 0 ? "" : Integer.toString(precision));
}
wResultRowsFields.removeEmptyRows();
Expand Down Expand Up @@ -506,7 +505,7 @@ private void addParametersTab() {
fdGetParameters.bottom = new FormAttachment(100, 0);
fdGetParameters.right = new FormAttachment(100, 0);
wGetParameters.setLayoutData(fdGetParameters);
wGetParameters.setSelection(workflowExecutorMeta.getParameters().isInheritingAllVariables());
wGetParameters.setSelection(workflowExecutorMeta.isInheritingAllVariables());
wGetParameters.addListener(
SWT.Selection, e -> getParametersFromWorkflow()); // null : reload file

Expand All @@ -520,7 +519,7 @@ private void addParametersTab() {
fdMapParameters.bottom = new FormAttachment(100, 0);
fdMapParameters.right = new FormAttachment(wGetParameters, -PropsUi.getMargin());
wMapParameters.setLayoutData(fdMapParameters);
wMapParameters.setSelection(workflowExecutorMeta.getParameters().isInheritingAllVariables());
wMapParameters.setSelection(workflowExecutorMeta.isInheritingAllVariables());
wMapParameters.addListener(SWT.Selection, e -> mapFieldsToWorkflowParameters());

// Now add a table view with the 3 columns to specify: variable name, input field & optional
Expand All @@ -546,14 +545,14 @@ private void addParametersTab() {
};
parameterColumns[1].setUsingVariables(true);

WorkflowExecutorParameters parameters = workflowExecutorMeta.getParameters();
List<WorkflowExecutorParameters> parameters = workflowExecutorMeta.getParameters();
wWorkflowExecutorParameters =
new TableView(
variables,
wParametersComposite,
SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER,
parameterColumns,
parameters.getVariable().length,
parameters.size(),
null,
props);
PropsUi.setLook(wWorkflowExecutorParameters);
Expand All @@ -564,11 +563,11 @@ private void addParametersTab() {
fdJobExecutors.bottom = new FormAttachment(wGetParameters, -10);
wWorkflowExecutorParameters.setLayoutData(fdJobExecutors);

for (int i = 0; i < parameters.getVariable().length; i++) {
for (int i = 0; i < parameters.size(); i++) {
TableItem tableItem = wWorkflowExecutorParameters.table.getItem(i);
tableItem.setText(1, Const.NVL(parameters.getVariable()[i], ""));
tableItem.setText(2, Const.NVL(parameters.getField()[i], ""));
tableItem.setText(3, Const.NVL(parameters.getInput()[i], ""));
tableItem.setText(1, Const.NVL(parameters.get(i).getVariable(), ""));
tableItem.setText(2, Const.NVL(parameters.get(i).getField(), ""));
tableItem.setText(3, Const.NVL(parameters.get(i).getInput(), ""));
}
wWorkflowExecutorParameters.setRowNums();
wWorkflowExecutorParameters.optWidth(true);
Expand All @@ -583,7 +582,7 @@ private void addParametersTab() {
fdInheritAll.left = new FormAttachment(0, 0);
fdInheritAll.top = new FormAttachment(wWorkflowExecutorParameters, 15);
wInheritAll.setLayoutData(fdInheritAll);
wInheritAll.setSelection(workflowExecutorMeta.getParameters().isInheritingAllVariables());
wInheritAll.setSelection(workflowExecutorMeta.isInheritingAllVariables());

FormData fdParametersComposite = new FormData();
fdParametersComposite.left = new FormAttachment(0, 0);
Expand Down Expand Up @@ -1024,7 +1023,7 @@ private void addResultRowsTab() {

int nrRows =
(workflowExecutorMeta.getResultRowsField() != null
? workflowExecutorMeta.getResultRowsField().length
? workflowExecutorMeta.getResultRowsField().size()
: 1);

ColumnInfo[] ciResultFields =
Expand Down Expand Up @@ -1146,22 +1145,20 @@ private void ok() {
private void collectInformation() {
// The parameters...
//
WorkflowExecutorParameters parameters = workflowExecutorMeta.getParameters();
List<WorkflowExecutorParameters> parameters = new ArrayList<>();

int nrLines = wWorkflowExecutorParameters.nrNonEmpty();
String[] variables = new String[nrLines];
String[] fields = new String[nrLines];
String[] input = new String[nrLines];
parameters.setVariable(variables);
parameters.setField(fields);
parameters.setInput(input);
for (int i = 0; i < nrLines; i++) {
TableItem item = wWorkflowExecutorParameters.getNonEmpty(i);
variables[i] = item.getText(1);
fields[i] = item.getText(2);
input[i] = item.getText(3);
WorkflowExecutorParameters param = new WorkflowExecutorParameters();
param.setVariable(item.getText(1));
param.setField(item.getText(2));
param.setInput(item.getText(3));
parameters.add(param);
}
parameters.setInheritingAllVariables(wInheritAll.getSelection());
workflowExecutorMeta.setParameters(parameters);

workflowExecutorMeta.setInheritingAllVariables(wInheritAll.getSelection());

// The group definition
//
Expand Down Expand Up @@ -1208,18 +1205,18 @@ private void collectInformation() {
workflowExecutorMeta.setResultRowsTargetTransformMeta(
pipelineMeta.findTransform(wResultRowsTarget.getText()));
int nrFields = wResultRowsFields.nrNonEmpty();
workflowExecutorMeta.setResultRowsField(new String[nrFields]);
workflowExecutorMeta.setResultRowsType(new int[nrFields]);
workflowExecutorMeta.setResultRowsLength(new int[nrFields]);
workflowExecutorMeta.setResultRowsPrecision(new int[nrFields]);

List<WorkflowExecutorResultRows> resultRows = new ArrayList<>();

for (int i = 0; i < nrFields; i++) {
TableItem item = wResultRowsFields.getNonEmpty(i);
workflowExecutorMeta.getResultRowsField()[i] = item.getText(1);
workflowExecutorMeta.getResultRowsType()[i] =
ValueMetaFactory.getIdForValueMeta(item.getText(2));
workflowExecutorMeta.getResultRowsLength()[i] = Const.toInt(item.getText(3), -1);
workflowExecutorMeta.getResultRowsPrecision()[i] = Const.toInt(item.getText(4), -1);
WorkflowExecutorResultRows row = new WorkflowExecutorResultRows();
row.setName(item.getText(1));
row.setType(item.getText(2));
row.setLength(Const.toInt(item.getText(3), -1));
row.setPrecision(Const.toInt(item.getText(4), -1));
resultRows.add(row);
}
workflowExecutorMeta.setResultRowsField(resultRows);
}
}
Loading

0 comments on commit 1647088

Please sign in to comment.