From: Omar Sweidan Date: Mon, 13 Jun 2022 09:11:11 +0000 (+0200) Subject: 410 bugfix X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=028f782e67cc53d12076b123b689643d16e9aeff;p=mediacube.git 410 bugfix --- diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/XMLEncoder.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/XMLEncoder.java index e4e4aeca..a0b9c3f4 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/XMLEncoder.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/XMLEncoder.java @@ -10,6 +10,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.NodeList; public class XMLEncoder implements Visitor { private static final Logger logger = LogManager.getLogger(JobTemplate.class); @@ -44,6 +45,7 @@ public class XMLEncoder implements Visitor { } inputs.appendChild(newInput); } + if (command.getOutputParameterSequence() != null) { Element outputs = document.createElement("outputs"); newCommand.appendChild(outputs); @@ -145,16 +147,30 @@ public class XMLEncoder implements Visitor { @Override public Object visitParameterDeclaration(ParameterDeclaration parameterDeclaration, Object o) { Document document = (Document) o; - logger.info("document: {}", document.toString()); + boolean parameterExists = false; Element jobtemplate = (Element) document.getElementsByTagName("jobtemplate").item(0); Element declarations = (Element) jobtemplate.getElementsByTagName("declarations").item(0); Element parameters = (Element) declarations.getElementsByTagName("parameters").item(0); - Element newParameter = document.createElement("parameter"); - newParameter.setAttribute("name", parameterDeclaration.getName()); - newParameter.setAttribute("type", parameterDeclaration.getType()); - parameters.appendChild(newParameter); + if (parameters.hasChildNodes()) { + NodeList childNodes = parameters.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + if (childNodes.item(i).getAttributes().getNamedItem("name").getNodeValue() + .equals(parameterDeclaration.getName())) { + parameterExists = true; + break; + } + } + } + if (!parameterExists) { + Element newParameter = document.createElement("parameter"); + newParameter.setAttribute("name", parameterDeclaration.getName()); + newParameter.setAttribute("type", parameterDeclaration.getType()); + parameters.appendChild(newParameter); + } + parameterExists = false; return null; + } @Override @@ -170,15 +186,28 @@ public class XMLEncoder implements Visitor { @Override public Object visitVariableDeclaration(VariableDeclaration variableDeclaration, Object o) { Document document = (Document) o; - logger.info("document: {}", document.toString()); + boolean variableExists = false; Element jobtemplate = (Element) document.getElementsByTagName("jobtemplate").item(0); Element declarations = (Element) jobtemplate.getElementsByTagName("declarations").item(0); Element variables = (Element) declarations.getElementsByTagName("variables").item(0); - Element newVariable = document.createElement("variable"); - newVariable.setAttribute("name", variableDeclaration.getName()); - newVariable.setAttribute("type", variableDeclaration.getType()); - variables.appendChild(newVariable); + if (variables.hasChildNodes()) { + NodeList childNodes = variables.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + if (childNodes.item(i).getAttributes().getNamedItem("name").getNodeValue() + .equals(variableDeclaration.getName())) { + variableExists = true; + break; + } + } + } + if (!variableExists) { + Element newVariable = document.createElement("variable"); + newVariable.setAttribute("name", variableDeclaration.getName()); + newVariable.setAttribute("type", variableDeclaration.getType()); + variables.appendChild(newVariable); + } + variableExists = false; return null; } diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java index 65a42888..5e6b1401 100644 --- a/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java +++ b/server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java @@ -120,12 +120,14 @@ public class JobFlowChartModel extends BaseModel { if (!node.get("text").toString().isEmpty()) { JSONArray inputs = (JSONArray) node.get("inputs"); InputParameterSequence ips = new InputParameterSequence(); - for (int j = 0; j < inputs.size(); j++) { - JSONObject input = (JSONObject) inputs.get(j); - if (input.get("type").toString().equals("param")) { - ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString()))); - } else { - ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString()))); + if (inputs != null) { + for (int j = 0; j < inputs.size(); j++) { + JSONObject input = (JSONObject) inputs.get(j); + if (input.get("type").toString().equals("param")) { + ips.addParameter(new InputParameter(new ParameterExpression(input.get("name").toString()))); + } else { + ips.addParameter(new InputParameter(new VariableExpression(input.get("name").toString()))); + } } } @@ -141,10 +143,12 @@ public class JobFlowChartModel extends BaseModel { CallJobStepCommand command = new CallJobStepCommand(); command.setInputParameterSequence(ips); - command.setOutputParameterSequence(ops); + if (ops != null) { + command.setOutputParameterSequence(ops); + } command.setType(node.get("text").toString().concat("Step.java")); command.setWeight(1); - template.getCommandSequence().addCommand(command); + cs.addCommand(command); } } return template;