Project

General

Profile

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

    
3
import com.googlecode.sarasvati.NodeToken;
4
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
5
import eu.dnetlib.msro.rmi.MSROException;
6
import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
7
import org.apache.commons.lang.StringUtils;
8
import org.apache.commons.logging.Log;
9
import org.apache.commons.logging.LogFactory;
10

    
11
/**
12
 * SwitchSearchServiceJobNode switches the index used by a SearchService whose profile id is in 'search_service_ID' env param.
13
 *
14
 * @author claudio, alessia
15
 */
16
public class SwitchSearchServiceJobNode extends BlackboardJobNode {
17

    
18
	private static final Log log = LogFactory.getLog(SwitchSearchServiceJobNode.class);
19
	private static final String BB_ACTION_SWITCH_INDEX = "UpdateIndex";
20

    
21
	private String inputIndexIdParam;
22

    
23
	private String outputIndexIdParam;
24

    
25
	@Override
26
	protected String obtainServiceId(final NodeToken token) {
27
		final String id = token.getEnv().getAttribute("search_service_ID");
28
		if (StringUtils.isBlank(id)) throw new RuntimeException("No id found in env attribute 'search_service_ID'");
29
		else return id;
30
	}
31

    
32
	@Override
33
	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
34
		job.setAction(BB_ACTION_SWITCH_INDEX);
35
		String indexId = token.getEnv().getAttribute(getInputIndexIdParam());
36

    
37
		checkParam(getInputIndexIdParam(), "output indexId param is missing");
38
		checkParam(indexId, "indexId is required to perform switch");
39
		log.info("Switching " + obtainServiceId(token) + " to index " + indexId);
40
		job.getParameters().put(getOutputIndexIdParam(), indexId);
41
	}
42

    
43
	private void checkParam(final String param, final String msg) throws MSROException {
44
		if (StringUtils.isBlank(param)) throw new MSROException(msg);
45
	}
46

    
47
	public String getInputIndexIdParam() {
48
		return inputIndexIdParam;
49
	}
50

    
51
	public void setInputIndexIdParam(final String inputIndexIdParam) {
52
		this.inputIndexIdParam = inputIndexIdParam;
53
	}
54

    
55
	public String getOutputIndexIdParam() {
56
		return outputIndexIdParam;
57
	}
58

    
59
	public void setOutputIndexIdParam(final String outputIndexIdParam) {
60
		this.outputIndexIdParam = outputIndexIdParam;
61
	}
62

    
63
}
(10-10/10)