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("xmlTransformer " + xmlTransformer);
35
		
36
		xmlResultResource.getBuffer().setLength(0);		
37
		try {
38
			xmlTransformer.transform(new StreamSource(new StringReader(input)), new StreamResult(xmlResultResource));
39
            
40
		} catch (Exception e) {
41
			logger.warn("Error transforming xml.", e);
42
			throw new TransformerException();
43
		}
44
		return xmlResultResource.getBuffer().toString();		
45
	}
46

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