410 bugfix
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Mon, 13 Jun 2022 09:11:11 +0000 (11:11 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Wed, 22 Jun 2022 11:57:09 +0000 (13:57 +0200)
server/user.jobengine.osgi.server/src/user/jobengine/server/ast/XMLEncoder.java
server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java

index e4e4aecaf02d0074ffc40713e147560cf0238234..a0b9c3f4523b15dfa01e25c8658eee5b7cf19874 100644 (file)
@@ -10,6 +10,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 import org.w3c.dom.Document;\r
 import org.w3c.dom.Element;\r
+import org.w3c.dom.NodeList;\r
 \r
 public class XMLEncoder implements Visitor {\r
        private static final Logger logger = LogManager.getLogger(JobTemplate.class);\r
@@ -44,6 +45,7 @@ public class XMLEncoder implements Visitor {
                        }\r
                        inputs.appendChild(newInput);\r
                }\r
+\r
                if (command.getOutputParameterSequence() != null) {\r
                        Element outputs = document.createElement("outputs");\r
                        newCommand.appendChild(outputs);\r
@@ -145,16 +147,30 @@ public class XMLEncoder implements Visitor {
        @Override\r
        public Object visitParameterDeclaration(ParameterDeclaration parameterDeclaration, Object o) {\r
                Document document = (Document) o;\r
-               logger.info("document: {}", document.toString());\r
+               boolean parameterExists = false;\r
                Element jobtemplate = (Element) document.getElementsByTagName("jobtemplate").item(0);\r
                Element declarations = (Element) jobtemplate.getElementsByTagName("declarations").item(0);\r
                Element parameters = (Element) declarations.getElementsByTagName("parameters").item(0);\r
-               Element newParameter = document.createElement("parameter");\r
-               newParameter.setAttribute("name", parameterDeclaration.getName());\r
-               newParameter.setAttribute("type", parameterDeclaration.getType());\r
-               parameters.appendChild(newParameter);\r
+               if (parameters.hasChildNodes()) {\r
+                       NodeList childNodes = parameters.getChildNodes();\r
+                       for (int i = 0; i < childNodes.getLength(); i++) {\r
+                               if (childNodes.item(i).getAttributes().getNamedItem("name").getNodeValue()\r
+                                               .equals(parameterDeclaration.getName())) {\r
+                                       parameterExists = true;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
 \r
+               if (!parameterExists) {\r
+                       Element newParameter = document.createElement("parameter");\r
+                       newParameter.setAttribute("name", parameterDeclaration.getName());\r
+                       newParameter.setAttribute("type", parameterDeclaration.getType());\r
+                       parameters.appendChild(newParameter);\r
+               }\r
+               parameterExists = false;\r
                return null;\r
+\r
        }\r
 \r
        @Override\r
@@ -170,15 +186,28 @@ public class XMLEncoder implements Visitor {
        @Override\r
        public Object visitVariableDeclaration(VariableDeclaration variableDeclaration, Object o) {\r
                Document document = (Document) o;\r
-               logger.info("document: {}", document.toString());\r
+               boolean variableExists = false;\r
                Element jobtemplate = (Element) document.getElementsByTagName("jobtemplate").item(0);\r
                Element declarations = (Element) jobtemplate.getElementsByTagName("declarations").item(0);\r
                Element variables = (Element) declarations.getElementsByTagName("variables").item(0);\r
-               Element newVariable = document.createElement("variable");\r
-               newVariable.setAttribute("name", variableDeclaration.getName());\r
-               newVariable.setAttribute("type", variableDeclaration.getType());\r
-               variables.appendChild(newVariable);\r
+               if (variables.hasChildNodes()) {\r
+                       NodeList childNodes = variables.getChildNodes();\r
+                       for (int i = 0; i < childNodes.getLength(); i++) {\r
+                               if (childNodes.item(i).getAttributes().getNamedItem("name").getNodeValue()\r
+                                               .equals(variableDeclaration.getName())) {\r
+                                       variableExists = true;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
 \r
+               if (!variableExists) {\r
+                       Element newVariable = document.createElement("variable");\r
+                       newVariable.setAttribute("name", variableDeclaration.getName());\r
+                       newVariable.setAttribute("type", variableDeclaration.getType());\r
+                       variables.appendChild(newVariable);\r
+               }\r
+               variableExists = false;\r
                return null;\r
        }\r
 \r
index 65a428882304f016d5aa72845781632ad01c39c7..5e6b14013f7951e99b066a2ce4c7fa8757417467 100644 (file)
@@ -120,12 +120,14 @@ public class JobFlowChartModel extends BaseModel {
                        if (!node.get("text").toString().isEmpty()) {\r
                                JSONArray inputs = (JSONArray) node.get("inputs");\r
                                InputParameterSequence ips = new InputParameterSequence();\r
-                               for (int j = 0; j < inputs.size(); j++) {\r
-                                       JSONObject input = (JSONObject) inputs.get(j);\r
-                                       if (input.get("type").toString().equals("param")) {\r
-                                               ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString())));\r
-                                       } else {\r
-                                               ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString())));\r
+                               if (inputs != null) {\r
+                                       for (int j = 0; j < inputs.size(); j++) {\r
+                                               JSONObject input = (JSONObject) inputs.get(j);\r
+                                               if (input.get("type").toString().equals("param")) {\r
+                                                       ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString())));\r
+                                               } else {\r
+                                                       ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString())));\r
+                                               }\r
                                        }\r
                                }\r
 \r
@@ -141,10 +143,12 @@ public class JobFlowChartModel extends BaseModel {
 \r
                                CallJobStepCommand command = new CallJobStepCommand();\r
                                command.setInputParameterSequence(ips);\r
-                               command.setOutputParameterSequence(ops);\r
+                               if (ops != null) {\r
+                                       command.setOutputParameterSequence(ops);\r
+                               }\r
                                command.setType(node.get("text").toString().concat("Step.java"));\r
                                command.setWeight(1);\r
-                               template.getCommandSequence().addCommand(command);\r
+                               cs.addCommand(command);\r
                        }\r
                }\r
                return template;\r