From 1d5038ca51dbbe54d2ea2abd72f8506957f3edc4 Mon Sep 17 00:00:00 2001 From: szewczyw Date: Tue, 4 Feb 2025 17:41:22 +0100 Subject: [PATCH] Added params functionalities to multipleXml, bugfix --- .../controller/MultipleXMLController.java | 2 +- .../main/java/com/r11/tools/model/Param.java | 20 +++++++++ .../r11/tools/model/XMLMultipleFilesBody.java | 9 ++++ .../main/java/com/r11/tools/xml/Saxon.java | 7 ++-- .../main/java/com/r11/tools/xml/Xalan.java | 5 ++- .../java/com/r11/tools/xml/XmlEngine.java | 6 +-- .../src/components/XsltParamComponent.vue | 41 +++++++++++-------- .../xml/XmlOutputFieldComponent.vue | 5 ++- 8 files changed, 67 insertions(+), 28 deletions(-) create mode 100644 Backend/tools-services/src/main/java/com/r11/tools/model/Param.java diff --git a/Backend/tools-services/src/main/java/com/r11/tools/controller/MultipleXMLController.java b/Backend/tools-services/src/main/java/com/r11/tools/controller/MultipleXMLController.java index b6c24bb..ad87cf2 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/controller/MultipleXMLController.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/controller/MultipleXMLController.java @@ -68,7 +68,7 @@ public class MultipleXMLController implements RestController { private XMLResponseBody processData(MultipleXmlJob xmlJob) throws Exception { XmlEngine engine = xmlJob.getEngine(); XMLMultipleFilesBody requestBody = xmlJob.getRequestBody(); - String result = engine.processXSLT(requestBody.getData(), requestBody.getProcessorData()); + String result = engine.processXSLT(requestBody.getParams(), requestBody.getData(), requestBody.getProcessorData()); return new XMLResponseBody(result, "OK", requestBody.getVersion()); } diff --git a/Backend/tools-services/src/main/java/com/r11/tools/model/Param.java b/Backend/tools-services/src/main/java/com/r11/tools/model/Param.java new file mode 100644 index 0000000..f60308d --- /dev/null +++ b/Backend/tools-services/src/main/java/com/r11/tools/model/Param.java @@ -0,0 +1,20 @@ +package com.r11.tools.model; + +import com.google.gson.annotations.SerializedName; + + +public class Param { + @SerializedName("key") + private String key; + @SerializedName("value") + private String value; + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } +} + diff --git a/Backend/tools-services/src/main/java/com/r11/tools/model/XMLMultipleFilesBody.java b/Backend/tools-services/src/main/java/com/r11/tools/model/XMLMultipleFilesBody.java index 67291a4..9223c83 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/model/XMLMultipleFilesBody.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/model/XMLMultipleFilesBody.java @@ -2,6 +2,8 @@ package com.r11.tools.model; import com.google.gson.annotations.SerializedName; +import java.util.List; + public class XMLMultipleFilesBody { @SerializedName("data") @@ -12,6 +14,8 @@ public class XMLMultipleFilesBody { private String processor; @SerializedName("version") private String version; + @SerializedName("params") + private List params; public String getProcessorData() { @@ -29,4 +33,9 @@ public class XMLMultipleFilesBody { public XMLMultipleFilesData[] getData() { return data; } + + public List getParams() { + return params; + } + } diff --git a/Backend/tools-services/src/main/java/com/r11/tools/xml/Saxon.java b/Backend/tools-services/src/main/java/com/r11/tools/xml/Saxon.java index 8495e62..677a44b 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/xml/Saxon.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/xml/Saxon.java @@ -1,5 +1,6 @@ package com.r11.tools.xml; +import com.r11.tools.model.Param; import com.r11.tools.model.XMLMultipleFilesData; import com.r11.tools.model.XMLRequestBody; import com.r11.tools.model.XPathQueryResult; @@ -30,11 +31,11 @@ public class Saxon implements XmlEngine{ * @throws IOException thrown when file does not exist, or cannot be read. */ XmlTools tools = new XmlTools(); - public String processXSLT(XMLMultipleFilesData[] data, String transform) throws SaxonApiException, IOException{ + public String processXSLT(List params, XMLMultipleFilesData[] data, String transform) throws SaxonApiException, IOException{ Processor processor = new Processor(false); XsltCompiler compiler = processor.newXsltCompiler(); - // transform = tools.addParams(params,transform); + transform = tools.addParams(params,transform); String filesPath = "/tmp/"+UUID.randomUUID()+"/"; try{ @@ -91,7 +92,7 @@ public class Saxon implements XmlEngine{ * @return transformed xml * @throws SaxonApiException thrown on stylesheet or transformation errors */ - public String processXSLT(List params, String data, String transform) throws SaxonApiException { + public String processXSLT(List params, String data, String transform) throws SaxonApiException { Processor processor = new Processor(false); XsltCompiler compiler = processor.newXsltCompiler(); transform = tools.addParams(params,transform); diff --git a/Backend/tools-services/src/main/java/com/r11/tools/xml/Xalan.java b/Backend/tools-services/src/main/java/com/r11/tools/xml/Xalan.java index ee3b884..2b4d64c 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/xml/Xalan.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/xml/Xalan.java @@ -1,5 +1,6 @@ package com.r11.tools.xml; +import com.r11.tools.model.Param; import com.r11.tools.model.XMLMultipleFilesData; import com.r11.tools.model.XMLRequestBody; import com.r11.tools.model.XPathQueryResult; @@ -41,7 +42,7 @@ public class Xalan implements XmlEngine{ * @return transformed xml * @throws Exception thrown on stylesheet or transformation errors */ - public String processXSLT(List params, String data, String transform) throws Exception { + public String processXSLT(List params, String data, String transform) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(new StringReader(data))); @@ -69,7 +70,7 @@ public class Xalan implements XmlEngine{ } @Override - public String processXSLT(XMLMultipleFilesData[] data, String transform) throws Exception { + public String processXSLT(List params, XMLMultipleFilesData[] data, String transform) throws Exception { throw new UnsupportedOperationException("Xalan does not support multiple files XSLT processing"); } diff --git a/Backend/tools-services/src/main/java/com/r11/tools/xml/XmlEngine.java b/Backend/tools-services/src/main/java/com/r11/tools/xml/XmlEngine.java index e66645d..e422509 100644 --- a/Backend/tools-services/src/main/java/com/r11/tools/xml/XmlEngine.java +++ b/Backend/tools-services/src/main/java/com/r11/tools/xml/XmlEngine.java @@ -1,16 +1,16 @@ package com.r11.tools.xml; +import com.r11.tools.model.Param; import com.r11.tools.model.XMLMultipleFilesData; -import com.r11.tools.model.XMLRequestBody; import com.r11.tools.model.XPathQueryResult; import java.util.List; public interface XmlEngine { - String processXSLT(XMLMultipleFilesData[] data, String transform) throws Exception; + String processXSLT(List params, XMLMultipleFilesData[] data, String transform) throws Exception; XPathQueryResult processXPath(String data, String query, String version) throws Exception; - String processXSLT(List params, String data, String transform) throws Exception; + String processXSLT(List params, String data, String transform) throws Exception; String validate(String data, String xsd) throws Exception; String executeXQuery(String data, String xquery, String version) throws Exception; public String getVersion(); diff --git a/Frontend/src/components/XsltParamComponent.vue b/Frontend/src/components/XsltParamComponent.vue index 57608ea..32a1a9a 100644 --- a/Frontend/src/components/XsltParamComponent.vue +++ b/Frontend/src/components/XsltParamComponent.vue @@ -23,7 +23,11 @@ const selectedOption = ref(options.value[0].name) const selectedFunction = () => { if (selectOption(selectedOption.value) === 'Add Param') { - options.value.push({name: nameInput.value + " = " + valueInput.value}); + if(!valueInput.value.length == 0 && !nameInput.value.length == 0){ + options.value.push({name: nameInput.value + " = " + valueInput.value}); + valueInput.value = ""; + nameInput.value = ""; + } } if (selectOption(selectedOption.value) === 'Remove Param') { @@ -106,6 +110,22 @@ function selectOption(option: string): string { diff --git a/Frontend/src/components/xml/XmlOutputFieldComponent.vue b/Frontend/src/components/xml/XmlOutputFieldComponent.vue index dd074e1..8f198e1 100644 --- a/Frontend/src/components/xml/XmlOutputFieldComponent.vue +++ b/Frontend/src/components/xml/XmlOutputFieldComponent.vue @@ -149,12 +149,15 @@ function prepareRequestBodySingleXml(data: string):string { } function prepareRequestBodyMultiXml():string { - if (!Array.isArray(props.xml)) + const formattedParams = formatParams(); + + if (!Array.isArray(props.xml)) return ""; let xmlFilesArray = convertDataArray(props.xml); let requestBody = JSON.stringify({ + "params": formattedParams, "data": xmlFilesArray, "processorData": props.query, "processor": engine.value,