Project

General

Profile

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

    
3
import java.util.Map;
4

    
5
import org.apache.commons.logging.Log;
6
import org.apache.commons.logging.LogFactory;
7
import org.springframework.beans.factory.annotation.Required;
8

    
9
import com.googlecode.sarasvati.Engine;
10
import com.googlecode.sarasvati.NodeToken;
11
import com.googlecode.sarasvati.env.Env;
12

    
13
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
14
import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
15
import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
16

    
17
public class CreateIndexJobNode extends BlackboardJobNode {
18

    
19
	private static final Log log = LogFactory.getLog(CreateIndexJobNode.class);
20

    
21
	private String outputPrefix = "index_";
22
	private String defaultIndexId;
23

    
24
	@Override
25
	protected String getXqueryForServiceId(final NodeToken token) {
26
		return "collection('/db/DRIVER/ServiceResources/IndexServiceResourceType')//RESOURCE_IDENTIFIER/@value/string()";
27
	}
28

    
29
	@Override
30
	protected void prepareJob(final BlackboardJob job, final NodeToken token) {
31
		final String format = token.getFullEnv().getAttribute("format");
32
		final String layout = token.getFullEnv().getAttribute("layout");
33
		final String interp = token.getFullEnv().getAttribute("interpretation");
34

    
35
		log.info("preparing CREATE blackboard job: " + format + "-" + layout + "-" + interp);
36

    
37
		job.setAction("CREATE");
38
		job.getParameters().put("format", format);
39
		job.getParameters().put("layout", layout);
40
		job.getParameters().put("interpretation", interp);
41
		job.getParameters().put("backend_Id", defaultIndexId);
42
	}
43

    
44
	public String getOutputPrefix() {
45
		return outputPrefix;
46
	}
47

    
48
	public void setOutputPrefix(final String outputPrefix) {
49
		this.outputPrefix = outputPrefix;
50
	}
51

    
52
	@Override
53
	protected BlackboardWorkflowJobListener generateBlackboardListener(final Engine engine, final NodeToken token) {
54
		return new BlackboardWorkflowJobListener(engine, token) {
55

    
56
			@Override
57
			protected void populateEnv(final Env env, final Map<String, String> responseParams) {
58
				env.setAttribute(getOutputPrefix() + "format", token.getFullEnv().getAttribute("format"));
59
				env.setAttribute(getOutputPrefix() + "layout", token.getFullEnv().getAttribute("layout"));
60
				env.setAttribute(getOutputPrefix() + "interpretation", token.getFullEnv().getAttribute("interpretation"));
61
				env.setAttribute(getOutputPrefix() + "id", responseParams.get("id"));
62
			}
63
		};
64
	}
65

    
66
	/**
67
	 * @return the defaultIndexId
68
	 */
69
	public String getDefaultIndexId() {
70
		return defaultIndexId;
71
	}
72

    
73
	/**
74
	 * @param defaultIndexId
75
	 *            the defaultIndexId to set
76
	 */
77
	@Required
78
	public void setDefaultIndexId(final String defaultIndexId) {
79
		this.defaultIndexId = defaultIndexId;
80
	}
81

    
82
}
(1-1/3)