Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.msro.openaireplus.workflows.nodes;
2
3
import javax.annotation.Resource;
4
5
import com.googlecode.sarasvati.Arc;
6
import com.googlecode.sarasvati.NodeToken;
7
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
8 32798 michele.ar
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
9 26600 sandro.lab
import eu.dnetlib.miscutils.datetime.DateUtils;
10
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
11 41156 alessia.ba
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
12 26600 sandro.lab
13
public class ObtainOpenaireDataSourceParamsJobNode extends SimpleJobNode {
14
15
	private String providerId;
16
17 32798 michele.ar
	@Resource
18
	private UniqueServiceLocator serviceLocator;
19 26600 sandro.lab
20
	@Override
21
	protected String execute(final NodeToken token) throws Exception {
22
		final String query = "let $x := /*[.//RESOURCE_IDENTIFIER/@value='" + providerId + "']//EXTRA_FIELDS\n"
23
				+ "return concat($x/FIELD[./key='OpenAireDataSourceId']/value, ' @@@ ', $x/FIELD[./key='NamespacePrefix']/value)";
24
25 32798 michele.ar
		final String[] arr = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(query).split("@@@");
26 26600 sandro.lab
27 41156 alessia.ba
		final String origId = arr[0].trim();
28
		final String nsPrefix = arr[1].trim();
29
		//this is needed by the mdbuilder
30
		//TODO: update mdbuilder to use the env attributes below, whose names are defined in WorkflowConstants
31
		token.getEnv().setAttribute("parentDatasourceId", origId);
32
		token.getEnv().setAttribute("namespacePrefix", nsPrefix);
33 26600 sandro.lab
		token.getEnv().setAttribute("dateOfCollection", DateUtils.now_ISO8601());
34
35 41156 alessia.ba
		//these are needed for validation and fill hostedby
36
		token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
37
		token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
38
39
		token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
40
		token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
41
42
		token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
43
		token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
44
45 26600 sandro.lab
		return Arc.DEFAULT_ARC;
46 41156 alessia.ba
47 26600 sandro.lab
	}
48
49
	public String getProviderId() {
50
		return providerId;
51
	}
52
53
	public void setProviderId(final String providerId) {
54
		this.providerId = providerId;
55
	}
56
57
}