1
22
23 package com.liferay.portlet.journal.util;
24
25 import com.liferay.portal.kernel.util.ByteArrayMaker;
26 import com.liferay.portal.kernel.util.GetterUtil;
27 import com.liferay.portal.kernel.util.LocaleUtil;
28 import com.liferay.portlet.journal.TransformException;
29
30 import java.io.StringReader;
31 import java.io.UnsupportedEncodingException;
32
33 import java.util.Locale;
34 import java.util.Map;
35
36 import javax.xml.transform.Transformer;
37 import javax.xml.transform.TransformerConfigurationException;
38 import javax.xml.transform.TransformerException;
39 import javax.xml.transform.TransformerFactory;
40 import javax.xml.transform.stream.StreamResult;
41 import javax.xml.transform.stream.StreamSource;
42
43
49 public class JournalXslUtil {
50
51 public static String transform(
52 Map tokens, String languageId, String xml, String script)
53 throws TransformException, UnsupportedEncodingException {
54
55 ByteArrayMaker bam = new ByteArrayMaker();
56
57 long companyId = GetterUtil.getLong((String)tokens.get("company_id"));
58 Locale locale = LocaleUtil.fromLanguageId(languageId);
59
60 JournalXslErrorListener errorListener = new JournalXslErrorListener(
61 companyId, locale);
62
63 try {
64 StreamSource xmlSource = new StreamSource(new StringReader(xml));
65 StreamSource scriptSource = new StreamSource(
66 new StringReader(script));
67
68 TransformerFactory transformerFactory =
69 TransformerFactory.newInstance();
70
71 transformerFactory.setURIResolver(
72 new URIResolver(tokens, languageId));
73 transformerFactory.setErrorListener(errorListener);
74
75 Transformer transformer =
76 transformerFactory.newTransformer(scriptSource);
77
78 transformer.transform(xmlSource, new StreamResult(bam));
79 }
80 catch (TransformerConfigurationException tce) {
81 throw new TransformException(errorListener.getMessageAndLocation());
82 }
83 catch (TransformerException te) {
84 throw new TransformException(errorListener.getMessageAndLocation());
85 }
86
87 return bam.toString("UTF-8");
88 }
89
90 }