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 b9edb33 HOP-3236 - Dummy task wrongly converted in workflows
new 4d21fe2 Merge pull request #1032 from sramazzina/HOP-3236
b9edb33 is described below
commit b9edb3340bb19954e1f75e32919fb806412d13f3
Author: sergio.ramazzina <[email protected]>
AuthorDate: Wed Sep 1 00:52:56 2021 +0200
HOP-3236 - Dummy task wrongly converted in workflows
---
.../org/apache/hop/imports/kettle/KettleConst.java | 28 +++++++
.../apache/hop/imports/kettle/KettleImport.java | 88 ++++++++++++++++------
2 files changed, 94 insertions(+), 22 deletions(-)
diff --git
a/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleConst.java
b/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleConst.java
index 88b613a..9affe61 100644
---
a/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleConst.java
+++
b/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleConst.java
@@ -98,6 +98,34 @@ public class KettleConst {
})
.collect(Collectors.toMap(data -> (String) data[0], data -> (String)
data[1]));
+ public static final Map<String, String> kettleStartEntryElementsToRemove =
+ Stream.of(
+ new Object[][] {
+ {"start", ""},
+ {"draw", ""},
+ {"nr", ""},
+ {"dummy", ""}
+ })
+ .collect(Collectors.toMap(data -> (String) data[0], data -> (String)
data[1]));
+
+ public static final Map<String, String> kettleDummyEntryElementsToRemove =
+ Stream.of(
+ new Object[][] {
+ {"start", ""},
+ {"dummy", ""},
+ {"repeat", ""},
+ {"schedulerType", ""},
+ {"intervalSeconds", ""},
+ {"intervalMinutes", ""},
+ {"hour", ""},
+ {"minutes", ""},
+ {"weekDay", ""},
+ {"DayOfMonth", ""},
+ {"draw", ""},
+ {"nr", ""}
+ })
+ .collect(Collectors.toMap(data -> (String) data[0], data -> (String)
data[1]));
+
public static final Map<String, String> kettleReplaceContent =
Stream.of(
new Object[][] {
diff --git
a/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleImport.java
b/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleImport.java
index 205844e..ca8aa1f 100644
---
a/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleImport.java
+++
b/plugins/misc/import/src/main/java/org/apache/hop/imports/kettle/KettleImport.java
@@ -70,6 +70,12 @@ public class KettleImport extends HopImportBase implements
IHopImport {
private String variablesTargetConfigFile;
private String connectionsReportFileName;
+ private enum EntryType {
+ START,
+ DUMMY,
+ OTHER
+ };
+
public KettleImport() {
super();
}
@@ -155,7 +161,8 @@ public class KettleImport extends HopImportBase implements
IHopImport {
//
documentElement.insertBefore(nameSync,
XmlHandler.getSubNode(documentElement, "description"));
}
- processNode(doc, documentElement);
+
+ processNode(doc, documentElement, EntryType.OTHER);
// Align x/y locations with a grid size...
//
@@ -452,7 +459,7 @@ public class KettleImport extends HopImportBase implements
IHopImport {
doc.renameNode(element, null, newElementName);
}
- private void processNode(Document doc, Node node) {
+ private void processNode(Document doc, Node node, EntryType entryType) {
Node nodeToProcess = node;
NodeList nodeList = nodeToProcess.getChildNodes();
@@ -478,34 +485,71 @@ public class KettleImport extends HopImportBase
implements IHopImport {
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentNode = nodeList.item(i);
-
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
+ // Identify if an entry is of type START or DUMMY type because they
must be managed properly
+ if (currentNode.getNodeName().equals("entry")) {
+ entryType = EntryType.OTHER;
+ Node entryTypeNode = null;
+ boolean isEntryTypeSpecial = false;
+ NodeList currentNodeChildNodes = currentNode.getChildNodes();
+ for (int i1 = 0; i1 < currentNodeChildNodes.getLength(); i1++) {
+ Node childNode = currentNodeChildNodes.item(i1);
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ if (childNode.getNodeName().equals("type")
+ &&
childNode.getChildNodes().item(0).getNodeValue().equals("SPECIAL")) {
+ isEntryTypeSpecial = true;
+ entryTypeNode = childNode;
+ } else if (isEntryTypeSpecial
+ && childNode.getNodeName().equals("start")
+ &&
childNode.getChildNodes().item(0).getNodeValue().equals("Y")) {
+ entryType = EntryType.START;
+ } else if (isEntryTypeSpecial
+ && childNode.getNodeName().equals("dummy")
+ &&
childNode.getChildNodes().item(0).getNodeValue().equals("Y")) {
+ entryType = EntryType.DUMMY;
+ // Immediately change entry type to DUMMY to not bother about
it later on
+ entryTypeNode.getFirstChild().setTextContent("DUMMY");
+ }
+ }
+ }
+ }
// remove superfluous elements
- if
(KettleConst.kettleElementsToRemove.containsKey(currentNode.getNodeName())) {
- if (!StringUtils.isEmpty(
-
KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()))) {
- // see if we have multiple parent nodes to check for:
- if
(KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()).contains(","))
{
- Node parentNode = currentNode.getParentNode();
- String[] parentNodeNames =
-
KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()).split(",");
- for (String parentNodeName : parentNodeNames) {
- if (parentNode.getNodeName().equals(parentNodeName)) {
- parentNode.removeChild(currentNode);
+ if (entryType == EntryType.OTHER) {
+ if
(KettleConst.kettleElementsToRemove.containsKey(currentNode.getNodeName())) {
+ if (!StringUtils.isEmpty(
+
KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()))) {
+ // see if we have multiple parent nodes to check for:
+ if
(KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()).contains(","))
{
+ Node parentNode = currentNode.getParentNode();
+ String[] parentNodeNames =
+
KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()).split(",");
+ for (String parentNodeName : parentNodeNames) {
+ if (parentNode.getNodeName().equals(parentNodeName)) {
+ parentNode.removeChild(currentNode);
+ }
+ }
+ } else {
+ if (currentNode
+ .getParentNode()
+ .getNodeName()
+
.equals(KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()))) {
+ currentNode.getParentNode().removeChild(currentNode);
}
}
} else {
- if (currentNode
- .getParentNode()
- .getNodeName()
-
.equals(KettleConst.kettleElementsToRemove.get(currentNode.getNodeName()))) {
- currentNode.getParentNode().removeChild(currentNode);
- }
+ currentNode.getParentNode().removeChild(currentNode);
}
- } else {
+ }
+ } else if (entryType == EntryType.START) {
+ if
(KettleConst.kettleStartEntryElementsToRemove.containsKey(currentNode.getNodeName()))
{
currentNode.getParentNode().removeChild(currentNode);
}
+ } else if (entryType == EntryType.DUMMY) {
+ if
(KettleConst.kettleDummyEntryElementsToRemove.containsKey(currentNode.getNodeName()))
{
+ currentNode.getParentNode().removeChild(currentNode);
+
+ }
}
// rename Kettle elements to Hop elements
@@ -522,7 +566,7 @@ public class KettleImport extends HopImportBase implements
IHopImport {
KettleConst.kettleReplaceContent.get(currentNode.getTextContent()));
}
- processNode(doc, currentNode);
+ processNode(doc, currentNode, entryType);
}
// partial node content replacement