Revision 62135
Added by Michele Artini over 2 years ago
ObtainOpenaireDataSourceParamsJobNode.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.msro.openaireplus.workflows.nodes; |
2 | 2 |
|
3 |
import javax.annotation.Resource;
|
|
3 |
import org.springframework.beans.factory.annotation.Autowired;
|
|
4 | 4 |
|
5 | 5 |
import com.googlecode.sarasvati.Arc; |
6 | 6 |
import com.googlecode.sarasvati.NodeToken; |
7 |
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; |
|
8 |
import eu.dnetlib.enabling.locators.UniqueServiceLocator; |
|
7 |
|
|
8 |
import eu.dnetlib.enabling.datasources.common.Api; |
|
9 |
import eu.dnetlib.enabling.datasources.common.Datasource; |
|
10 |
import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager; |
|
9 | 11 |
import eu.dnetlib.miscutils.datetime.DateUtils; |
10 | 12 |
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode; |
11 | 13 |
import eu.dnetlib.msro.workflows.util.WorkflowsConstants; |
... | ... | |
14 | 16 |
|
15 | 17 |
private String providerId; |
16 | 18 |
|
17 |
@Resource
|
|
18 |
private UniqueServiceLocator serviceLocator;
|
|
19 |
@Autowired
|
|
20 |
private LocalDatasourceManager<Datasource<?, ?, ?>, Api<?>> dsManager;
|
|
19 | 21 |
|
20 | 22 |
@Override |
21 | 23 |
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 |
final String nsPrefix = dsManager.getDs(providerId).getNamespaceprefix(); |
|
24 | 25 |
|
25 |
final String[] arr = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(query).split("@@@");
|
|
26 |
token.getEnv().setAttribute("parentDatasourceId", providerId);
|
|
26 | 27 |
|
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 | 28 |
token.getEnv().setAttribute("namespacePrefix", nsPrefix); |
33 | 29 |
token.getEnv().setAttribute("dateOfCollection", DateUtils.now_ISO8601()); |
34 | 30 |
|
35 |
//these are needed for validation and fill hostedby |
|
36 |
token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
|
|
31 |
// these are needed for validation and fill hostedby
|
|
32 |
token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, providerId);
|
|
37 | 33 |
token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix); |
38 | 34 |
|
39 |
token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
|
|
35 |
token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, providerId);
|
|
40 | 36 |
token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix); |
41 | 37 |
|
42 |
token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
|
|
38 |
token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, providerId);
|
|
43 | 39 |
token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix); |
44 | 40 |
|
45 | 41 |
return Arc.DEFAULT_ARC; |
Also available in: Unified diff
merge from eosc_services