Project

General

Profile

1
package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
2

    
3
import java.io.StringReader;
4
import javax.xml.ws.wsaddressing.W3CEndpointReference;
5

    
6
import com.googlecode.sarasvati.Arc;
7
import com.googlecode.sarasvati.NodeToken;
8
import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
9
import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
10
import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
11
import eu.dnetlib.miscutils.functional.UnaryFunction;
12
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
13
import org.dom4j.Document;
14
import org.dom4j.Element;
15
import org.dom4j.io.SAXReader;
16

    
17
// TODO: Auto-generated Javadoc
18

    
19
/**
20
 * The Class FindHostedByJonbNode.
21
 */
22
public class FindHostedByJobNode extends SimpleJobNode {
23

    
24
	/**
25
	 * The input epr param.
26
	 */
27
	private String inputEprParam;
28

    
29
	/**
30
	 * The output epr param.
31
	 */
32
	private String outputEprParam;
33

    
34
	/**
35
	 * The counters param.
36
	 */
37
	private String countersParam;
38

    
39
	/**
40
	 * The result set client factory.
41
	 */
42
	private ResultSetClientFactory resultSetClientFactory;
43

    
44
	/**
45
	 * The mapped result set factory.
46
	 */
47
	private MappedResultSetFactory mappedResultSetFactory;
48

    
49
	private final String unknown_repo_id = "openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18";
50

    
51
	/*
52
	 * (non-Javadoc)
53
	 *
54
	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
55
	 */
56
	@Override
57
	protected String execute(final NodeToken token) throws Exception {
58
		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(inputEprParam));
59
		final HostedByCounters counters = new HostedByCounters();
60

    
61
		final SAXReader reader = new SAXReader();
62

    
63
		final UnaryFunction<String, String> hostedByMapFunction = new UnaryFunction<String, String>() {
64

    
65
			@Override
66
			public String evaluate(final String input) {
67
				try {
68
					final Document doc = reader.read(new StringReader(input));
69
					final Element node = (Element) doc.selectSingleNode("//*[local-name()='hostedBy']");
70
					if (node != null) {
71
						String hostedById = node.attributeValue("id");
72
						if (!hostedById.equals(unknown_repo_id)) {
73
							counters.increaseCounter(hostedById);
74
						}
75
					}
76
				} catch (Exception e) {
77

    
78
				}
79

    
80
				return input;
81
			}
82
		};
83

    
84
		final W3CEndpointReference epr = mappedResultSetFactory.createMappedResultSet(inputEpr, hostedByMapFunction);
85
		token.getEnv().setAttribute(outputEprParam, epr.toString());
86
		token.getEnv().setTransientAttribute(getCountersParam(), counters);
87

    
88
		return Arc.DEFAULT_ARC;
89
	}
90

    
91
	/**
92
	 * @return the inputEprParam
93
	 */
94
	public String getInputEprParam() {
95
		return inputEprParam;
96
	}
97

    
98
	/**
99
	 * @param inputEprParam the inputEprParam to set
100
	 */
101
	public void setInputEprParam(final String inputEprParam) {
102
		this.inputEprParam = inputEprParam;
103
	}
104

    
105
	/**
106
	 * @return the outputEprParam
107
	 */
108
	public String getOutputEprParam() {
109
		return outputEprParam;
110
	}
111

    
112
	/**
113
	 * @param outputEprParam the outputEprParam to set
114
	 */
115
	public void setOutputEprParam(final String outputEprParam) {
116
		this.outputEprParam = outputEprParam;
117
	}
118

    
119
	/**
120
	 * @return the resultSetClientFactory
121
	 */
122
	public ResultSetClientFactory getResultSetClientFactory() {
123
		return resultSetClientFactory;
124
	}
125

    
126
	/**
127
	 * @param resultSetClientFactory the resultSetClientFactory to set
128
	 */
129
	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
130
		this.resultSetClientFactory = resultSetClientFactory;
131
	}
132

    
133
	/**
134
	 * @return the mappedResultSetFactory
135
	 */
136
	public MappedResultSetFactory getMappedResultSetFactory() {
137
		return mappedResultSetFactory;
138
	}
139

    
140
	/**
141
	 * @param mappedResultSetFactory the mappedResultSetFactory to set
142
	 */
143
	public void setMappedResultSetFactory(final MappedResultSetFactory mappedResultSetFactory) {
144
		this.mappedResultSetFactory = mappedResultSetFactory;
145
	}
146

    
147
	/**
148
	 * @return the countersParam
149
	 */
150
	public String getCountersParam() {
151
		return countersParam;
152
	}
153

    
154
	/**
155
	 * @param countersParam the countersParam to set
156
	 */
157
	public void setCountersParam(final String countersParam) {
158
		this.countersParam = countersParam;
159
	}
160

    
161
}
(1-1/7)