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