Project

General

Profile

1
package eu.dnetlib.data.search.transform;
2

    
3
import org.apache.log4j.Logger;
4

    
5
import javax.xml.transform.TransformerConfigurationException;
6
import javax.xml.transform.TransformerFactory;
7
import javax.xml.transform.TransformerFactoryConfigurationError;
8
import javax.xml.transform.stream.StreamResult;
9
import javax.xml.transform.stream.StreamSource;
10
import java.io.StringReader;
11
import java.io.StringWriter;
12

    
13
public class XsltTransformer implements Transformer {
14
	
15
	private final String xslt;
16
	
17
	private final Logger logger = Logger.getLogger(XsltTransformer.class);
18
	private javax.xml.transform.Transformer xmlTransformer = null;
19
	private StringWriter xmlResultResource = new StringWriter();
20
	
21
	public XsltTransformer(String xslt) throws TransformerConfigurationException, TransformerFactoryConfigurationError {
22
		this.xslt = xslt;	
23
		
24
		//logger.debug(xslt);
25
		synchronized(this) {
26
			xmlTransformer = TransformerFactory.newInstance().newTemplates(new StreamSource(new StringReader(xslt))).newTransformer();
27
            xmlTransformer.setOutputProperty("encoding", "UTF-8");
28
		}
29
	}
30
	
31
	@Override
32
	public synchronized String transform(String input) throws TransformerException {
33
		//logger.debug("Transforming input: " + input);
34
		//logger.debug("xsl >>>>" + xslt);
35
		xmlResultResource.getBuffer().setLength(0);
36

    
37
		try {
38
			xmlTransformer.transform(new StreamSource(new StringReader(input)), new StreamResult(xmlResultResource));
39

    
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
		}
44

    
45
		return xmlResultResource.getBuffer().toString();
46
	}
47

    
48
	public String getXslt() {
49
		return xslt;
50
	}
51
	
52
}
(7-7/7)