Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.msro.workflows.nodes.transform;
2
3
import java.util.HashMap;
4
import java.util.Map;
5
6
import javax.xml.ws.wsaddressing.W3CEndpointReference;
7
8
import org.springframework.beans.factory.annotation.Required;
9
import org.springframework.core.io.ClassPathResource;
10
11
import com.googlecode.sarasvati.Arc;
12
import com.googlecode.sarasvati.NodeToken;
13
14
import eu.dnetlib.enabling.resultset.XSLTMappedResultSetFactory;
15
import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
16
import eu.dnetlib.msro.rmi.MSROException;
17
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
18
19
public class ApplyXsltJobNode extends SimpleJobNode {
20
21
	private String inputEprParam;
22
	private String outputEprParam;
23
	private String xsltClasspath;
24
25
	private XSLTMappedResultSetFactory xsltMappedResultSetFactory;
26
27
	@Override
28
	protected String execute(final NodeToken token) throws Exception {
29
		final String inputEpr = token.getEnv().getAttribute(inputEprParam);
30
		if ((inputEpr == null) || inputEpr.isEmpty()) throw new MSROException("InputEprParam (" + inputEprParam + ") not found in ENV");
31
32
		final Map<String, String> xsltParams = new HashMap<String, String>();
33
34
		for (String name : token.getFullEnv().getAttributeNames()) {
35 31531 sandro.lab
			xsltParams.put(name.replaceAll(":", "_"), token.getFullEnv().getAttribute(name));
36 26600 sandro.lab
		}
37
		for (String name : token.getEnv().getAttributeNames()) {
38 31531 sandro.lab
			xsltParams.put(name.replaceAll(":", "_"), token.getEnv().getAttribute(name));
39 26600 sandro.lab
		}
40
41
		xsltParams.putAll(parseJsonParameters(token));
42
43
		final W3CEndpointReference epr = xsltMappedResultSetFactory.createMappedResultSet(new EPRUtils().getEpr(inputEpr),
44
				(new ClassPathResource(xsltClasspath)), xsltParams);
45
46
		token.getEnv().setAttribute(outputEprParam, epr.toString());
47
48
		return Arc.DEFAULT_ARC;
49
	}
50
51
	public String getInputEprParam() {
52
		return inputEprParam;
53
	}
54
55
	public void setInputEprParam(final String inputEprParam) {
56
		this.inputEprParam = inputEprParam;
57
	}
58
59
	public String getOutputEprParam() {
60
		return outputEprParam;
61
	}
62
63
	public void setOutputEprParam(final String outputEprParam) {
64
		this.outputEprParam = outputEprParam;
65
	}
66
67
	public String getXsltClasspath() {
68
		return xsltClasspath;
69
	}
70
71
	public void setXsltClasspath(final String xsltClasspath) {
72
		this.xsltClasspath = xsltClasspath;
73
	}
74
75
	public XSLTMappedResultSetFactory getXsltMappedResultSetFactory() {
76
		return xsltMappedResultSetFactory;
77
	}
78
79
	@Required
80
	public void setXsltMappedResultSetFactory(final XSLTMappedResultSetFactory xsltMappedResultSetFactory) {
81
		this.xsltMappedResultSetFactory = xsltMappedResultSetFactory;
82
	}
83
84
}