Project

General

Profile

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

    
3
import java.util.List;
4
import java.util.Map;
5
import javax.annotation.Resource;
6

    
7
import com.google.common.collect.Maps;
8
import com.googlecode.sarasvati.Arc;
9
import com.googlecode.sarasvati.NodeToken;
10
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
11
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
12
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
13

    
14
public class FindExistingRepositoriesJobNode extends SimpleJobNode {
15

    
16
	@Resource
17
	private UniqueServiceLocator serviceLocator;
18

    
19
	private String existingReposParam = "existingRepos";
20

    
21
	@Override
22
	protected String execute(final NodeToken token) throws Exception {
23
		String xquery =
24
				"for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') " +
25
						"return concat (" +
26
						"$x//RESOURCE_IDENTIFIER/@value, " +
27
						"'@@@', " +
28
						"$x//EXTRA_FIELDS/FIELD[./key='OpenAireDataSourceId']/value)";
29
		final List<String> list = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
30

    
31
		final Map<String, String> map = Maps.newHashMap();
32
		for (String s : list) {
33
			String[] arr = s.split("@@@");
34
			if (arr.length == 2) {
35
				map.put(arr[1], arr[0]);
36
			}
37
		}
38
		token.getEnv().setTransientAttribute(getExistingReposParam(), map);
39

    
40
		return Arc.DEFAULT_ARC;
41
	}
42

    
43
	public String getExistingReposParam() {
44
		return existingReposParam;
45
	}
46

    
47
	public void setExistingReposParam(final String existingReposParam) {
48
		this.existingReposParam = existingReposParam;
49
	}
50

    
51
}
(3-3/22)