Re-Initialize the HTML-template on language change.
Handle templates in an language based map for switching language.
This commit is contained in:
@@ -46,6 +46,8 @@ import javax.xml.transform.stream.StreamResult;
|
|||||||
import javax.xml.transform.stream.StreamSource;
|
import javax.xml.transform.stream.StreamSource;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -77,7 +79,7 @@ public class ZUGFeRDVisualizer {
|
|||||||
private Templates mXsltXRTemplate = null;
|
private Templates mXsltXRTemplate = null;
|
||||||
private Templates mXsltUBLTemplate = null;
|
private Templates mXsltUBLTemplate = null;
|
||||||
private Templates mXsltCIOTemplate = null;
|
private Templates mXsltCIOTemplate = null;
|
||||||
private Templates mXsltHTMLTemplate = null;
|
private Map<Language, Templates> mXsltHTMLTemplates = null;
|
||||||
private Templates mXsltPDFTemplate = null;
|
private Templates mXsltPDFTemplate = null;
|
||||||
private Templates mXsltZF1HTMLTemplate = null;
|
private Templates mXsltZF1HTMLTemplate = null;
|
||||||
|
|
||||||
@@ -179,7 +181,7 @@ public class ZUGFeRDVisualizer {
|
|||||||
Optional<InputStream> in = copyStream(htmlOutput);
|
Optional<InputStream> in = copyStream(htmlOutput);
|
||||||
ByteArrayOutputStream htmlOutStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream htmlOutStream = new ByteArrayOutputStream();
|
||||||
if (in.isPresent()) {
|
if (in.isPresent()) {
|
||||||
applyXSLTToHTML(in.get(), htmlOutStream);
|
applyXSLTToHTML(in.get(), htmlOutStream, lang);
|
||||||
}
|
}
|
||||||
|
|
||||||
return htmlOutStream.toString(StandardCharsets.UTF_8);
|
return htmlOutStream.toString(StandardCharsets.UTF_8);
|
||||||
@@ -222,9 +224,12 @@ public class ZUGFeRDVisualizer {
|
|||||||
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
|
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mXsltHTMLTemplate == null) {
|
if (mXsltHTMLTemplates == null) {
|
||||||
mXsltHTMLTemplate = mFactory.newTemplates(new StreamSource(
|
mXsltHTMLTemplates = new HashMap<>();
|
||||||
CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xrechnung-html." + lang.name().toLowerCase() + ".xsl")));
|
if (mXsltHTMLTemplates.get(lang) == null) {
|
||||||
|
Templates mXsltHTMLTemplate = mFactory.newTemplates(new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xrechnung-html." + lang.name().toLowerCase() + ".xsl")));
|
||||||
|
mXsltHTMLTemplates.put(lang, mXsltHTMLTemplate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mXsltZF1HTMLTemplate == null) {
|
if (mXsltZF1HTMLTemplate == null) {
|
||||||
mXsltZF1HTMLTemplate = mFactory.newTemplates(new StreamSource(
|
mXsltZF1HTMLTemplate = mFactory.newTemplates(new StreamSource(
|
||||||
@@ -442,9 +447,9 @@ public class ZUGFeRDVisualizer {
|
|||||||
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
|
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void applyXSLTToHTML(final InputStream xmlFile, final OutputStream htmlOutStream)
|
protected void applyXSLTToHTML(final InputStream xmlFile, final OutputStream htmlOutStream, Language lang)
|
||||||
throws TransformerException, IOException {
|
throws TransformerException, IOException {
|
||||||
Transformer transformer = mXsltHTMLTemplate.newTransformer();
|
Transformer transformer = mXsltHTMLTemplates.get(lang).newTransformer();
|
||||||
|
|
||||||
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
|
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
|
||||||
xmlFile.close();
|
xmlFile.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user