Project

General

Profile

1
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
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
9
import eu.dnetlib.miscutils.datetime.DateUtils;
10
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
11
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
12

    
13
public class ObtainOpenaireDataSourceParamsJobNode extends SimpleJobNode {
14

    
15
	private String providerId;
16

    
17
	@Resource
18
	private UniqueServiceLocator serviceLocator;
19

    
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
		final String[] arr = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(query).split("@@@");
26

    
27
		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
		token.getEnv().setAttribute("dateOfCollection", DateUtils.now_ISO8601());
34

    
35
		//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
		return Arc.DEFAULT_ARC;
46

    
47
	}
48

    
49
	public String getProviderId() {
50
		return providerId;
51
	}
52

    
53
	public void setProviderId(final String providerId) {
54
		this.providerId = providerId;
55
	}
56

    
57
}
(10-10/24)