Project

General

Profile

1
package eu.dnetlib.msro.workers.aggregation.collect;
2

    
3
import java.io.StringReader;
4
import java.util.stream.Stream;
5

    
6
import eu.dnetlib.clients.is.InformationServiceClient;
7
import eu.dnetlib.msro.annotations.Direction;
8
import eu.dnetlib.msro.annotations.EnvParam;
9
import eu.dnetlib.msro.annotations.ProcessNode;
10
import eu.dnetlib.msro.workers.aggregation.objects.InterfaceDescriptor;
11
import eu.dnetlib.msro.workflows.graph.Arc;
12
import eu.dnetlib.msro.workflows.nodes.AbstractProcessNode;
13
import org.dom4j.Document;
14
import org.dom4j.Node;
15
import org.dom4j.io.SAXReader;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.context.annotation.Scope;
18
import org.springframework.stereotype.Component;
19

    
20
@Component
21
@Scope("prototype")
22
@ProcessNode("Collect")
23
public class CollectJobNode extends AbstractProcessNode {
24

    
25
	@Autowired
26
	private InformationServiceClient isLookup;
27

    
28
	@Autowired
29
	private MetadataCollector collector;
30

    
31
	private String datasourceId;
32
	private String datasourceInterface;
33

    
34
	@EnvParam(value = "eprParam", direction = Direction.OUT, reference = true)
35
	private Stream<String> outputStream;
36

    
37
	@Override
38
	protected String execute() throws Exception {
39
		final String profile = isLookup.getProfile(datasourceId);
40
		final Document doc = new SAXReader().read(new StringReader(profile));
41
		final Node ifcNode = doc.selectSingleNode("//INTERFACE[@id='" + datasourceInterface + "']");
42

    
43
		final InterfaceDescriptor interfaceDescriptor = InterfaceDescriptor.newInstance(ifcNode);
44

    
45
		outputStream = collector.collect(interfaceDescriptor);
46

    
47
		return Arc.DEFAULT_ARC;
48
	}
49

    
50
	public String getDatasourceId() {
51
		return datasourceId;
52
	}
53

    
54
	public void setDatasourceId(final String datasourceId) {
55
		this.datasourceId = datasourceId;
56
	}
57

    
58
	public String getDatasourceInterface() {
59
		return datasourceInterface;
60
	}
61

    
62
	public void setDatasourceInterface(final String datasourceInterface) {
63
		this.datasourceInterface = datasourceInterface;
64
	}
65

    
66
	public Stream<String> getOutputStream() {
67
		return outputStream;
68
	}
69

    
70
	public void setOutputStream(final Stream<String> outputStream) {
71
		this.outputStream = outputStream;
72
	}
73

    
74
}
(2-2/4)