Project

General

Profile

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

    
3
import java.util.function.Function;
4

    
5
import eu.dnetlib.enabling.resultset.factory.ResultSetFactory;
6
import eu.dnetlib.msro.workflows.graph.Arc;
7
import eu.dnetlib.msro.workflows.procs.Env;
8
import eu.dnetlib.dli.resolver.model.DLIResolvedObject;
9
import eu.dnetlib.pid.resolver.parser.AbstractResolverParser;
10
import eu.dnetlib.resolver.parser.DMFResolverParser;
11
import eu.dnetlib.resolver.parser.PMFResolverParser;
12
import eu.dnetlib.resolver.parser.ScholixResolverParser;
13
import eu.dnetlib.rmi.common.ResultSet;
14
import eu.dnetlib.rmi.manager.MSROException;
15
import org.springframework.beans.factory.annotation.Autowired;
16

    
17
/**
18
 * Created by sandro on 10/10/16.
19
 */
20
public class FilterDLIRecordJobNode extends SimpleJobNode {
21

    
22
	private final DMFResolverParser dmfResolverParser = new DMFResolverParser();
23
	private final PMFResolverParser pmfResolverParser = new PMFResolverParser();
24
	private final ScholixResolverParser scholixResolverParser = new ScholixResolverParser();
25
	private String type;
26
	private String inputEprParam;
27
	private String outputEprParam;
28
	@Autowired
29
	private ResultSetFactory resultSetFactory;
30

    
31
	@Override
32
	protected String execute(final Env env) throws Exception {
33

    
34
		final ResultSet<?> rsIn = env.getAttribute(this.inputEprParam, ResultSet.class);
35

    
36
		if ((rsIn == null)) { throw new MSROException("InputEprParam (" + this.inputEprParam + ") not found in ENV"); }
37

    
38
		ResultSet<String> outputResultSet;
39

    
40
		switch (type) {
41
		case "publication":
42
			outputResultSet = this.resultSetFactory.map(rsIn, String.class, createMappingFuncion(pmfResolverParser));
43
			break;
44
		case "dataset":
45
			outputResultSet = this.resultSetFactory.map(rsIn, String.class, createMappingFuncion(dmfResolverParser));
46
			break;
47
		case "unknown":
48
			outputResultSet = this.resultSetFactory.map(rsIn, String.class, createMappingFuncion(scholixResolverParser));
49
			break;
50
		default:
51
			throw new MSROException("unexpectd value of type");
52
		}
53

    
54
		env.setAttribute(this.outputEprParam, outputResultSet);
55

    
56
		return Arc.DEFAULT_ARC;
57
	}
58

    
59
	private Function<String, String> createMappingFuncion(AbstractResolverParser parser) {
60
		return it -> {
61
			final DLIResolvedObject resolvedObject = (DLIResolvedObject) parser.parseObject(it);
62
			if (resolvedObject != null) return it;
63
			else return "<JUNK/>";
64
		};
65
	}
66

    
67
	public String getType() {
68
		return type;
69
	}
70

    
71
	public void setType(final String type) {
72
		this.type = type;
73
	}
74

    
75
	public String getInputEprParam() {
76
		return inputEprParam;
77
	}
78

    
79
	public void setInputEprParam(final String inputEprParam) {
80
		this.inputEprParam = inputEprParam;
81
	}
82

    
83
	public String getOutputEprParam() {
84
		return outputEprParam;
85
	}
86

    
87
	public void setOutputEprParam(final String outputEprParam) {
88
		this.outputEprParam = outputEprParam;
89
	}
90
}
(3-3/5)