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 0000000000000000000000000000000000000000..fb69eed100a8f38b778c8571f80c501e6c57d5ff --- /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 0000000000000000000000000000000000000000..0da9dca5748d34f6926282c6999587f0cbcd7a5f --- /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 0000000000000000000000000000000000000000..097ec536f620ea00c998a84c3e0547877575a647 --- /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 0000000000000000000000000000000000000000..2dd254b8110a4cf7305c6b6748f1acc6c695be3d --- /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 0000000000000000000000000000000000000000..cd14150783a7b092265c0e613d389119564bade8 --- /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 0000000000000000000000000000000000000000..a245fbf683b1eda4683bcfc3b4e87faabc4ef2cf --- /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 0000000000000000000000000000000000000000..1fc4cf24d23ca0e85f89a7a8771bf4294b022a80 --- /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