Project

General

Profile

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

    
3
import java.util.List;
4

    
5
import javax.annotation.Resource;
6

    
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.springframework.beans.factory.annotation.Value;
10

    
11
import com.googlecode.sarasvati.NodeToken;
12

    
13
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
14
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
15
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
16
import eu.dnetlib.msro.rmi.MSROException;
17
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
18

    
19
public class FindStatsServiceJobNode extends SimpleJobNode {
20

    
21
	/**
22
	 * logger.
23
	 */
24
	private static final Log log = LogFactory.getLog(FindStatsServiceJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
25

    
26
	@Resource
27
	private UniqueServiceLocator serviceLocator;
28

    
29
	@Value(value = "${dnet.openaire.service.stats.lookup.xquery}")
30
	private String xquery;
31

    
32
	private String xqueryForServiceIdParam;
33

    
34
	/**
35
	 * {@inheritDoc}
36
	 * 
37
	 * @throws ISLookUpException
38
	 * @throws MSROException
39
	 * 
40
	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
41
	 */
42
	@Override
43
	public String execute(final NodeToken token) throws ISLookUpException, MSROException {
44

    
45
		log.info("lookup for stats service: " + getXquery());
46

    
47
		List<String> statsServiceIds = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
48

    
49
		if (statsServiceIds.size() > 1) { throw new MSROException("too many stats services: " + statsServiceIds); }
50

    
51
		if (statsServiceIds.isEmpty()) {
52
			return "notFound";
53
		} else {
54
			token.getEnv().setAttribute(getXqueryForServiceIdParam(), getXquery());
55
			return "found";
56
		}
57
	}
58

    
59
	public String getXquery() {
60
		return xquery;
61
	}
62

    
63
	public void setXquery(final String xquery) {
64
		this.xquery = xquery;
65
	}
66

    
67
	public String getXqueryForServiceIdParam() {
68
		return xqueryForServiceIdParam;
69
	}
70

    
71
	public void setXqueryForServiceIdParam(final String xqueryForServiceIdParam) {
72
		this.xqueryForServiceIdParam = xqueryForServiceIdParam;
73
	}
74

    
75
}
(3-3/10)