Project

General

Profile

1
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
			xsltParams.put(name.replaceAll(":", "_"), token.getFullEnv().getAttribute(name));
36
		}
37
		for (String name : token.getEnv().getAttributeNames()) {
38
			xsltParams.put(name.replaceAll(":", "_"), token.getEnv().getAttribute(name));
39
		}
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
}
(1-1/6)