user.commons.server.protocol,
user.commons.server.tcp,
user.commons.strings,
+ user.commons.xml,
user.mediacube.metadata.interfaces
Require-Bundle: org.apache.commons.lang;bundle-version="2.4.0",
user.tsm.client;bundle-version="1.2.0",
--- /dev/null
+package user.commons.xml;\r
+\r
+import java.io.IOException;\r
+import java.io.StringWriter;\r
+\r
+import javax.xml.transform.OutputKeys;\r
+import javax.xml.transform.Transformer;\r
+import javax.xml.transform.TransformerException;\r
+import javax.xml.transform.TransformerFactory;\r
+import javax.xml.transform.dom.DOMSource;\r
+import javax.xml.transform.stream.StreamResult;\r
+\r
+import org.w3c.dom.Document;\r
+\r
+public final class XMLUtils {\r
+ public static String getStringFromDocument(Document document) {\r
+ StringWriter writer = null;\r
+ try {\r
+ DOMSource domSource = new DOMSource(document);\r
+ writer = new StringWriter();\r
+ StreamResult result = new StreamResult(writer);\r
+ TransformerFactory tf = TransformerFactory.newInstance();\r
+ Transformer transformer = tf.newTransformer();\r
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");\r
+ transformer.transform(domSource, result);\r
+ return writer.toString();\r
+ } catch (TransformerException ex) {\r
+ return null;\r
+ } finally {\r
+ if (writer != null) {\r
+ try {\r
+ writer.close();\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
import user.jobengine.server.ast.JSONEncoder;\r
import user.jobengine.server.ast.JobTemplate;\r
import user.jobengine.server.ast.Parser;\r
+import user.jobengine.server.ast.XMLEncoder;\r
import user.jobengine.server.scheduler.ScheduledJob;\r
import user.jobengine.server.steps.IJobStep;\r
\r
String name = jobJSON.getString("name");\r
String template = jobJSON.getString("template");\r
\r
- // 220426 ha a name null, akkor nem regisztralhato tobbszor ugyan az a template\r
+ // 220426 ha a name null, akkor nem regisztrálható többször ugyanaz a template\r
// sj.setJobId(String.format("%s.%s", template, name));\r
sj.setJobId(String.format("%s.%s", template, RandomStringUtils.randomAlphanumeric(8)));\r
\r
}\r
FileOutputStream fos = new FileOutputStream(filePath);\r
logger.info("Saving job template to {}", filePath);\r
- if (templateToSave.toXmlDocument() != null) {\r
- writeXml(templateToSave.toXmlDocument(), fos);\r
+ if (templateToSave != null) {\r
+ XMLEncoder xmlEncoder = new XMLEncoder();\r
+ writeXml((Document) xmlEncoder.visitJobTemplate(templateToSave, null), fos);\r
}\r
}\r
} catch (FileNotFoundException e) {\r
package user.jobengine.server.ast;\r
\r
import java.io.Serializable;\r
-import java.io.StringWriter;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.parsers.ParserConfigurationException;\r
-import javax.xml.transform.Transformer;\r
-import javax.xml.transform.TransformerException;\r
-import javax.xml.transform.TransformerFactory;\r
-import javax.xml.transform.dom.DOMSource;\r
-import javax.xml.transform.stream.StreamResult;\r
-\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
-import org.w3c.dom.Comment;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Element;\r
\r
/**\r
* Gyökér osztály.\r
public Object visit(Visitor v, Object o) {\r
return v.visitJobTemplate(this, o);\r
}\r
-\r
- public Document toXmlDocument() {\r
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r
- DocumentBuilder documentBuilder;\r
- Document document = null;\r
- try {\r
- documentBuilder = dbf.newDocumentBuilder();\r
- document = documentBuilder.newDocument();\r
-\r
- if (getDescription() != null) {\r
- Comment description = document.createComment(getDescription());\r
- document.appendChild(description);\r
- }\r
-\r
- Element root = document.createElement("jobtemplate");\r
- document.appendChild(root);\r
- if (getName() != null) {\r
- root.setAttribute("name", getName());\r
- }\r
- root.setAttribute("useSessionLog", Boolean.toString(isUseSessionLog()));\r
-\r
- if (getDeclarationSequence() != null) {\r
- Element declarations = document.createElement("declarations");\r
- root.appendChild(declarations);\r
- Element parameters = document.createElement("parameters");\r
- Element variables = document.createElement("variables");\r
-\r
- for (int i = 0; i < getDeclarationSequence().getDeclarations().size(); i++) {\r
- Element declarationElement = null;\r
- Declaration declaration = getDeclarationSequence().getDeclarations().get(i);\r
-\r
- if (declaration.getClass().getSimpleName().equals("ParameterDeclaration")) {\r
- declarationElement = document.createElement("parameter");\r
- declarationElement.setAttribute("name", declaration.getName());\r
- declarationElement.setAttribute("type", declaration.getType());\r
- parameters.appendChild(declarationElement);\r
- } else {\r
- declarationElement = document.createElement("variable");\r
- declarationElement.setAttribute("name", declaration.getName());\r
- declarationElement.setAttribute("type", declaration.getType());\r
- variables.appendChild(declarationElement);\r
- }\r
- }\r
- declarations.appendChild(parameters);\r
- if (variables.hasChildNodes()) {\r
- declarations.appendChild(variables);\r
- }\r
- }\r
- if (getCommandSequence() != null) {\r
- Element commands = document.createElement("commands");\r
- root.appendChild(commands);\r
- for (int i = 0; i < getCommandSequence().getCommands().size(); i++) {\r
- CallJobStepCommand cjs = (CallJobStepCommand) getCommandSequence().getCommands().get(i);\r
- Element command = document.createElement("calljobstep");\r
- command.setAttribute("type", cjs.getType());\r
- command.setAttribute("weight", Integer.toString(cjs.getWeight()));\r
- commands.appendChild(command);\r
-\r
- InputParameterSequence ips = (InputParameterSequence) cjs.getInputParameterSequence();\r
- Element inputs = document.createElement("inputs");\r
-\r
- for (int j = 0; j < ips.getParameters().size(); j++) {\r
- InputParameter ip = (InputParameter) (ips.getParameters().get(j));\r
- Element input = document.createElement("input");\r
- Element parameter;\r
- if (ip.getExpression().getClass().getSimpleName().equals("VariableExpression")) {\r
- parameter = document.createElement("variable");\r
- } else {\r
- parameter = document.createElement("parameter");\r
- }\r
- parameter.setAttribute("name", ip.getExpression().getName());\r
- input.appendChild(parameter);\r
- inputs.appendChild(input);\r
- }\r
- command.appendChild(inputs);\r
-\r
- OutputParameterSequence ops = (OutputParameterSequence) cjs.getOutputParameterSequence();\r
- if (ops != null) {\r
- Element outputs = document.createElement("outputs");\r
- for (int j = 0; j < ops.getParameters().size(); j++) {\r
- OutputParameter op = (OutputParameter) (ops.getParameters().get(j));\r
- Element output = document.createElement("output");\r
- Element variable = document.createElement("variable");\r
- variable.setAttribute("name", op.getVariableName().getName());\r
- output.appendChild(variable);\r
- outputs.appendChild(output);\r
- }\r
- command.appendChild(outputs);\r
- }\r
- }\r
- }\r
- } catch (ParserConfigurationException e) {\r
- e.printStackTrace();\r
- }\r
-\r
- return document;\r
- }\r
-\r
- public String getStringFromTemplate() {\r
- try {\r
- Document xmlDocument = this.toXmlDocument();\r
- DOMSource domSource = new DOMSource(xmlDocument);\r
- StringWriter writer = new StringWriter();\r
- StreamResult result = new StreamResult(writer);\r
- TransformerFactory tf = TransformerFactory.newInstance();\r
- Transformer transformer = tf.newTransformer();\r
- transformer.transform(domSource, result);\r
- return writer.toString();\r
- } catch (TransformerException ex) {\r
- ex.printStackTrace();\r
- return null;\r
- }\r
- }\r
}\r
--- /dev/null
+package user.jobengine.server.ast;\r
+\r
+import java.util.List;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.parsers.ParserConfigurationException;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.w3c.dom.Document;\r
+import org.w3c.dom.Element;\r
+\r
+public class XMLEncoder implements Visitor {\r
+ private static final Logger logger = LogManager.getLogger(JobTemplate.class);\r
+\r
+ @Override\r
+ public Object visitCallStepCommand(CallJobStepCommand command, Object o) {\r
+ Document document = (Document) o;\r
+ Element jobtemplate = (Element) document.getElementsByTagName("jobtemplate").item(0);\r
+ Element commands = (Element) jobtemplate.getElementsByTagName("commands").item(0);\r
+ Element newCommand = document.createElement("calljobstep");\r
+ newCommand.setAttribute("type", command.getType());\r
+ newCommand.setAttribute("weight", Integer.toString(command.getWeight()));\r
+ commands.appendChild(newCommand);\r
+\r
+ Element inputs = document.createElement("inputs");\r
+ newCommand.appendChild(inputs);\r
+\r
+ List<Parameter> inputParameters = command.getInputParameterSequence().getParameters();\r
+ for (int i = 0; i < inputParameters.size(); i++) {\r
+ Element newInput = document.createElement("input");\r
+ Expression expression = ((InputParameter) inputParameters.get(i)).getExpression();\r
+ String inputName = expression.getName();\r
+\r
+ if (expression instanceof ParameterExpression) {\r
+ Element newInputParameter = document.createElement("parameter");\r
+ newInputParameter.setAttribute("name", inputName);\r
+ newInput.appendChild(newInputParameter);\r
+ } else {\r
+ Element newInputVariable = document.createElement("variable");\r
+ newInputVariable.setAttribute("name", inputName);\r
+ newInput.appendChild(newInputVariable);\r
+ }\r
+ inputs.appendChild(newInput);\r
+ }\r
+ if (command.getOutputParameterSequence() != null) {\r
+ Element outputs = document.createElement("outputs");\r
+ newCommand.appendChild(outputs);\r
+ List<Parameter> outputParameters = command.getOutputParameterSequence().getParameters();\r
+ for (int i = 0; i < outputParameters.size(); i++) {\r
+ Element newOutput = document.createElement("output");\r
+ Element newOutputVariable = document.createElement("variable");\r
+ newOutputVariable.setAttribute("name",\r
+ ((OutputParameter) outputParameters.get(i)).getVariableName().getName());\r
+ newOutput.appendChild(newOutputVariable);\r
+ outputs.appendChild(newOutput);\r
+ }\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitCommandSequence(CommandSequence commandSequence, Object o) {\r
+ List<Command> commands = commandSequence.getCommands();\r
+ if (commands != null) {\r
+ for (Command command : commands) {\r
+ command.visit(this, o);\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitDeclarationSequence(DeclarationSequence declarationSequence, Object o) {\r
+ List<Declaration> declarations = declarationSequence.getDeclarations();\r
+ if (declarations != null) {\r
+ for (Declaration declaration : declarations) {\r
+ declaration.visit(this, o);\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitInputParameter(InputParameter inputParameter, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitInputParameterSequence(InputParameterSequence parameterSequence, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitJobTemplate(JobTemplate jobTemplate, Object o) {\r
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder documentBuilder;\r
+ Document document = null;\r
+ try {\r
+ documentBuilder = dbf.newDocumentBuilder();\r
+ document = documentBuilder.newDocument();\r
+ Element root = document.createElement("jobtemplate");\r
+ document.appendChild(root);\r
+ if (jobTemplate.getName() != null) {\r
+ root.setAttribute("name", jobTemplate.getName());\r
+ }\r
+ root.setAttribute("useSessionLog", Boolean.toString(jobTemplate.isUseSessionLog()));\r
+\r
+ Element declarations = document.createElement("declarations");\r
+ root.appendChild(declarations);\r
+ Element parameters = document.createElement("parameters");\r
+ Element variables = document.createElement("variables");\r
+ declarations.appendChild(parameters);\r
+ declarations.appendChild(variables);\r
+ if (jobTemplate.getDeclarationSequence() != null) {\r
+ DeclarationSequence ds = jobTemplate.getDeclarationSequence();\r
+ ds.visit(this, document);\r
+ }\r
+\r
+ Element commands = document.createElement("commands");\r
+ root.appendChild(commands);\r
+ if (jobTemplate.getCommandSequence() != null) {\r
+ CommandSequence cs = jobTemplate.getCommandSequence();\r
+ cs.visit(this, document);\r
+ }\r
+ } catch (ParserConfigurationException e) {\r
+ logger.info("ParserConfigurationException: {}", e.getMessage());\r
+ }\r
+\r
+ return document;\r
+ }\r
+\r
+ @Override\r
+ public Object visitOutputParameter(OutputParameter outputParameter, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitOutputParameterSequence(OutputParameterSequence parameterSequence, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitParameterDeclaration(ParameterDeclaration parameterDeclaration, Object o) {\r
+ Document document = (Document) o;\r
+ logger.info("document: {}", document.toString());\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
+\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitParameterExpression(ParameterExpression parameterExpression, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitSendUserMessageCommand(SendUserMessageCommand command, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitVariableDeclaration(VariableDeclaration variableDeclaration, Object o) {\r
+ Document document = (Document) o;\r
+ logger.info("document: {}", document.toString());\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
+\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitVariableExpression(VariableExpression variableExpression, Object o) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Object visitVariableName(VariableName variableName, Object o) {\r
+ return null;\r
+ }\r
+}\r
<h:canvas id="myCanvas" width="550px" height="550px"/>\r
</div>\r
<div id="flowchartDataListener" onFlowchartDataChanged="@command('onFlowchartDataChanged')" />\r
- <button label="Send data to Java" onClick="@command('getFlowchartData')"/>\r
+ <button label="Save" onClick="@command('getFlowchartData')"/>\r
</div>\r
<h:script src="/js/diagramflowjs.js" />\r
<h:script src="/js/processVisualizer2.js" />\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.w3c.dom.Document;\r
import org.zkoss.bind.annotation.AfterCompose;\r
import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
+import user.commons.xml.XMLUtils;\r
import user.jobengine.server.ast.CallJobStepCommand;\r
import user.jobengine.server.ast.CommandSequence;\r
import user.jobengine.server.ast.DeclarationSequence;\r
import user.jobengine.server.ast.VariableDeclaration;\r
import user.jobengine.server.ast.VariableExpression;\r
import user.jobengine.server.ast.VariableName;\r
+import user.jobengine.server.ast.XMLEncoder;\r
\r
public class JobFlowChartModel extends BaseModel {\r
private static final Logger logger = LogManager.getLogger();\r
@Command\r
public void onFlowchartDataChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
logger.info("onFlowchartDataChanged");\r
- logger.info("template: {}", JSONObjectToJobtemplate((JSONObject) ((JSONObject) event.getData()).get("model"))\r
- .getStringFromTemplate());\r
+ XMLEncoder xmlEncoder = new XMLEncoder();\r
+ JobTemplate jobTemplate = JSONObjectToJobtemplate((JSONObject) ((JSONObject) event.getData()).get("model"));\r
+ Document document = (Document) xmlEncoder.visitJobTemplate(jobTemplate, null);\r
+ logger.info("converted document: {}", XMLUtils.getStringFromDocument(document));\r
}\r
\r
private JobTemplate JSONObjectToJobtemplate(JSONObject data) {\r
JobTemplate template = new JobTemplate();\r
DeclarationSequence ds = new DeclarationSequence();\r
template.setDeclarationSequence(ds);\r
- logger.info("template: {}", template.getStringFromTemplate());\r
\r
JSONArray params = (JSONArray) data.get("params");\r
for (int i = 0; i < params.size(); i++) {\r