From 7d03ac4516443bacd54f4b5b30b853bd097d10b8 Mon Sep 17 00:00:00 2001 From: npedot <nicola.pedot@gmail.com> Date: Tue, 14 Jan 2020 18:05:42 +0100 Subject: [PATCH] adds xstl trasnfromer --- .../adapter/XSLTransformerJaxpAdapter.kt | 20 +++++++++++++ .../service/IXSLTransformerService.kt | 5 ++++ .../usecase/XSLTrasformUseCase.kt | 11 +++++++ .../usecase/xstl/XSTLTransformTest.kt | 25 ++++++++++++++++ src/test/resources/xslt/report.html | 13 ++++++++ src/test/resources/xslt/report.xml | 28 +++++++++++++++++ src/test/resources/xslt/stylesheet.xsl | 30 +++++++++++++++++++ 7 files changed, 132 insertions(+) create mode 100644 src/main/kotlin/unibz.cs.semint.kprime/adapter/XSLTransformerJaxpAdapter.kt create mode 100644 src/main/kotlin/unibz.cs.semint.kprime/service/IXSLTransformerService.kt create mode 100644 src/main/kotlin/unibz.cs.semint.kprime/usecase/XSLTrasformUseCase.kt create mode 100644 src/test/kotlin/unibz.cs.semint.kprime/usecase/xstl/XSTLTransformTest.kt create mode 100644 src/test/resources/xslt/report.html create mode 100644 src/test/resources/xslt/report.xml create mode 100644 src/test/resources/xslt/stylesheet.xsl diff --git a/src/main/kotlin/unibz.cs.semint.kprime/adapter/XSLTransformerJaxpAdapter.kt b/src/main/kotlin/unibz.cs.semint.kprime/adapter/XSLTransformerJaxpAdapter.kt new file mode 100644 index 0000000..fb69eed --- /dev/null +++ b/src/main/kotlin/unibz.cs.semint.kprime/adapter/XSLTransformerJaxpAdapter.kt @@ -0,0 +1,20 @@ +package unibz.cs.semint.kprime.adapter + +import unibz.cs.semint.kprime.service.IXSLTransformerService +import java.io.FileOutputStream +import javax.xml.transform.OutputKeys +import javax.xml.transform.TransformerFactory +import javax.xml.transform.stream.StreamResult +import javax.xml.transform.stream.StreamSource + +class XSLTransformerJaxpAdapter:IXSLTransformerService { + override fun trasform(xsl: String, xml: String, out: String) { + val tFactory = TransformerFactory.newInstance() + val fileOutputStream = FileOutputStream(out) + val transformer = tFactory.newTransformer(StreamSource(xsl)) + transformer.setOutputProperty(OutputKeys.INDENT, "yes") + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4") + transformer.transform(StreamSource(xml), StreamResult(fileOutputStream)) + } + +} \ No newline at end of file diff --git a/src/main/kotlin/unibz.cs.semint.kprime/service/IXSLTransformerService.kt b/src/main/kotlin/unibz.cs.semint.kprime/service/IXSLTransformerService.kt new file mode 100644 index 0000000..0da9dca --- /dev/null +++ b/src/main/kotlin/unibz.cs.semint.kprime/service/IXSLTransformerService.kt @@ -0,0 +1,5 @@ +package unibz.cs.semint.kprime.service + +interface IXSLTransformerService { + fun trasform(xsl:String,xml:String,out:String) +} \ No newline at end of file diff --git a/src/main/kotlin/unibz.cs.semint.kprime/usecase/XSLTrasformUseCase.kt b/src/main/kotlin/unibz.cs.semint.kprime/usecase/XSLTrasformUseCase.kt new file mode 100644 index 0000000..097ec53 --- /dev/null +++ b/src/main/kotlin/unibz.cs.semint.kprime/usecase/XSLTrasformUseCase.kt @@ -0,0 +1,11 @@ +package unibz.cs.semint.kprime.usecase + +import unibz.cs.semint.kprime.domain.UseCaseResult +import unibz.cs.semint.kprime.service.IXSLTransformerService + +class XSLTrasformUseCase (val transformer:IXSLTransformerService){ + + fun transform(xsl: String, xml: String, out: String):UseCaseResult<Unit> { + return UseCaseResult("done",transformer.trasform(xsl,xml,out)) + } +} \ No newline at end of file diff --git a/src/test/kotlin/unibz.cs.semint.kprime/usecase/xstl/XSTLTransformTest.kt b/src/test/kotlin/unibz.cs.semint.kprime/usecase/xstl/XSTLTransformTest.kt new file mode 100644 index 0000000..2dd254b --- /dev/null +++ b/src/test/kotlin/unibz.cs.semint.kprime/usecase/xstl/XSTLTransformTest.kt @@ -0,0 +1,25 @@ +package unibz.cs.semint.kprime.usecase.xstl + +import org.junit.Test +import unibz.cs.semint.kprime.adapter.XSLTransformerJaxpAdapter +import unibz.cs.semint.kprime.usecase.XMLSerializeUseCase +import unibz.cs.semint.kprime.usecase.XSLTrasformUseCase + +class XSTLTransformTest { + + @Test + fun test_xstl() { + // given + val transformer = XSLTrasformUseCase(XSLTransformerJaxpAdapter()) + //val path = XSTLTransformTest::class.java.getResource("xslt/stylesheet.xsl").path + //println(path) + // when + transformer.transform( + "target/test-classes/xslt/stylesheet.xsl", + "target/test-classes/xslt/report.xml", + "target/test-classes/xslt/report.html" + ) + // then + // check output file + } +} \ No newline at end of file diff --git a/src/test/resources/xslt/report.html b/src/test/resources/xslt/report.html new file mode 100644 index 0000000..cd14150 --- /dev/null +++ b/src/test/resources/xslt/report.html @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<urlset> + <url> + <stepno>1</stepno> + <stepname>Successfully Started browser at http://www.officedepot.com</stepname> + <status>PASS</status> + </url> + <url> + <stepno>2</stepno> + <stepname>click : By.cssSelector: .ui-link-inherit</stepname> + <status>PASS</status> + </url> +</urlset> diff --git a/src/test/resources/xslt/report.xml b/src/test/resources/xslt/report.xml new file mode 100644 index 0000000..a245fbf --- /dev/null +++ b/src/test/resources/xslt/report.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<urlset> + <url> + <stepno>1</stepno> + <stepname>Successfully Started browser at http://www.officedepot.com</stepname> + <status>PASS</status> + </url> + <url> + <stepno>2</stepno> + <stepname>click : By.cssSelector: .ui-link-inherit</stepname> + <status>PASS</status> + </url> + <url> + <stepno>2</stepno> + <stepname>click : By.cssSelector: .ui-link-inherit</stepname> + <status>PASS</status> + </url> + <url> + <stepno>2</stepno> + <stepname>click : By.cssSelector: .ui-link-inherit</stepname> + <status>PASS</status> + </url> + <url> + <stepno>2</stepno> + <stepname>click : By.cssSelector: .ui-link-inherit</stepname> + <status>PASS</status> + </url> +</urlset> \ No newline at end of file diff --git a/src/test/resources/xslt/stylesheet.xsl b/src/test/resources/xslt/stylesheet.xsl new file mode 100644 index 0000000..1fc4cf2 --- /dev/null +++ b/src/test/resources/xslt/stylesheet.xsl @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:template match="/"> + <html> + <body> + <h1>Test HTML result</h1> + <table border="1"> + <tr> + <th>stepno</th> + <th>stepname</th> + <th>status</th> + </tr> + <xsl:for-each select="urlset/url"> + <tr> + <td> + <xsl:value-of select="stepno" /> + </td> + <td> + <xsl:value-of select="stepname" /> + </td> + <td> + <xsl:value-of select="status" /> + </td> + </tr> + </xsl:for-each> + </table> + </body> + </html> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file -- GitLab