Project

General

Profile

1 15160 katerina.i
package eu.dnetlib.data.search.transform;
2
3 28988 katerina.i
import org.apache.log4j.Logger;
4 15397 katerina.i
5 16443 katerina.i
import javax.xml.transform.TransformerConfigurationException;
6 15349 dimitra.ke
import javax.xml.transform.TransformerFactory;
7 16443 katerina.i
import javax.xml.transform.TransformerFactoryConfigurationError;
8 15349 dimitra.ke
import javax.xml.transform.stream.StreamResult;
9 15397 katerina.i
import javax.xml.transform.stream.StreamSource;
10 28988 katerina.i
import java.io.StringReader;
11
import java.io.StringWriter;
12 15349 dimitra.ke
13
public class XsltTransformer implements Transformer {
14 15160 katerina.i
15
	private final String xslt;
16
17 15397 katerina.i
	private final Logger logger = Logger.getLogger(XsltTransformer.class);
18 15427 dimitra.ke
	private javax.xml.transform.Transformer xmlTransformer = null;
19
	private StringWriter xmlResultResource = new StringWriter();
20 15397 katerina.i
21 16443 katerina.i
	public XsltTransformer(String xslt) throws TransformerConfigurationException, TransformerFactoryConfigurationError {
22
		this.xslt = xslt;
23 17818 dimitra.ke
24 28988 katerina.i
		//logger.debug(xslt);
25 18012 dimitra.ke
		synchronized(this) {
26
			xmlTransformer = TransformerFactory.newInstance().newTemplates(new StreamSource(new StringReader(xslt))).newTransformer();
27 38159 katerina.i
            xmlTransformer.setOutputProperty("encoding", "UTF-8");
28 18012 dimitra.ke
		}
29 15160 katerina.i
	}
30
31
	@Override
32 18012 dimitra.ke
	public synchronized String transform(String input) throws TransformerException {
33 28988 katerina.i
		//logger.debug("Transforming input: " + input);
34 47316 katerina.i
		//logger.debug("xsl >>>>" + xslt);
35
		xmlResultResource.getBuffer().setLength(0);
36
37 15397 katerina.i
		try {
38 32262 katerina.i
			xmlTransformer.transform(new StreamSource(new StringReader(input)), new StreamResult(xmlResultResource));
39 47316 katerina.i
40
		} catch (javax.xml.transform.TransformerException e) {
41
			logger.warn("Error transforming xml: " + input, e);
42
			throw new TransformerException("Error transforming xml: " + input, e);
43 15397 katerina.i
		}
44 47316 katerina.i
45
		return xmlResultResource.getBuffer().toString();
46 15160 katerina.i
	}
47
48
	public String getXslt() {
49
		return xslt;
50
	}
51
52
}