Project

General

Profile

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

    
3
import java.util.List;
4
import java.util.Map;
5

    
6
import javax.annotation.Resource;
7

    
8
import com.google.common.collect.Maps;
9
import com.googlecode.sarasvati.Arc;
10
import com.googlecode.sarasvati.NodeToken;
11

    
12
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
13
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
14
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
15

    
16
public class FindExistingRepositoriesJobNode extends SimpleJobNode {
17

    
18
	@Resource
19
	private UniqueServiceLocator serviceLocator;
20

    
21
	private String existingReposParam = "existingRepos";
22

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

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

    
42
		return Arc.DEFAULT_ARC;
43
	}
44

    
45
	public String getExistingReposParam() {
46
		return existingReposParam;
47
	}
48

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

    
53
}
(3-3/21)