Project

General

Profile

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

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

    
7
import com.googlecode.sarasvati.Arc;
8
import com.googlecode.sarasvati.NodeToken;
9
import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
10
import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
11
import eu.dnetlib.miscutils.functional.UnaryFunction;
12
import eu.dnetlib.msro.openaireplus.workflows.nodes.SetHdfsFileJobNode;
13
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
14
import org.apache.commons.logging.Log;
15
import org.apache.commons.logging.LogFactory;
16
import org.dom4j.Document;
17
import org.dom4j.Element;
18
import org.dom4j.Namespace;
19
import org.dom4j.QName;
20
import org.dom4j.io.SAXReader;
21

    
22
/**
23
 * TODO: this class can be deleted when we are using the new claim database
24
 */
25
@Deprecated
26
public class DecapsuleClaimsJobNode extends SimpleJobNode {
27

    
28
	/**
29
	 * logger.
30
	 */
31
	private static final Log log = LogFactory.getLog(SetHdfsFileJobNode.class);
32

    
33
	private static final Namespace OAF_NS = new Namespace("oaf", "http://namespace.openaire.eu/oaf");
34
	private static final double DEFAULT_TRUST = 0.9;
35

    
36
	private String inputEprParam;
37
	private String outputEprParam;
38

    
39
	@Resource
40
	private MappedResultSetFactory mappedResultSetFactory;
41

    
42
	@Override
43
	protected String execute(final NodeToken token) throws Exception {
44
		final UnaryFunction<String, String> mapper = new UnaryFunction<String, String>() {
45

    
46
			final SAXReader reader = new SAXReader();
47

    
48
			@Override
49
			public String evaluate(final String row) {
50
				try {
51
					final Document docRow = reader.read(new StringReader(row));
52

    
53
					final String xml = docRow.valueOf("//ROW/FIELD[@name = 'xml']");
54
					final String provenance = docRow.valueOf("//ROW/FIELD[@name = 'provenance']");
55

    
56
					final Document doc = reader.read(new StringReader(xml));
57
					final Element record = (Element) doc.selectSingleNode("//*[local-name() = 'record']");
58
					final Element about = record.addElement(new QName("about"));
59
					final Element dataInfo = about.addElement(new QName("datainfo", OAF_NS));
60

    
61
					dataInfo.addElement(new QName("inferred", OAF_NS)).setText("false");
62
					dataInfo.addElement(new QName("deletedbyinference", OAF_NS)).setText("false");
63
					dataInfo.addElement(new QName("trust", OAF_NS)).setText(Double.toString(DEFAULT_TRUST));
64
					dataInfo.addElement(new QName("inferenceprovenance", OAF_NS)).setText("");
65

    
66
					final Element action = dataInfo.addElement(new QName("provenanceaction", OAF_NS));
67
					action.addAttribute("schemename", "dnet:provenanceActions");
68
					action.addAttribute("schemeid", "dnet:provenanceActions");
69
					action.addAttribute("classname", provenance);
70
					action.addAttribute("classid", provenance);
71

    
72
					return doc.asXML();
73
				} catch (Throwable e) {
74
					log.error("Error parsing row: " + row, e);
75
					throw new IllegalArgumentException("Error parsing row: " + row, e);
76
				}
77
			}
78
		};
79

    
80
		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(getInputEprParam()));
81
		final W3CEndpointReference epr = mappedResultSetFactory.createMappedResultSet(inputEpr, mapper);
82

    
83
		token.getEnv().setAttribute(getOutputEprParam(), epr.toString());
84

    
85
		return Arc.DEFAULT_ARC;
86
	}
87

    
88
	public String getInputEprParam() {
89
		return inputEprParam;
90
	}
91

    
92
	public void setInputEprParam(final String inputEprParam) {
93
		this.inputEprParam = inputEprParam;
94
	}
95

    
96
	public String getOutputEprParam() {
97
		return outputEprParam;
98
	}
99

    
100
	public void setOutputEprParam(final String outputEprParam) {
101
		this.outputEprParam = outputEprParam;
102
	}
103

    
104
}
(6-6/6)