Project

General

Profile

1
package eu.dnetlib.msro.worker.nodes.repohi;
2

    
3
import java.io.IOException;
4
import java.io.StringWriter;
5

    
6
import javax.annotation.Resource;
7

    
8
import org.antlr.stringtemplate.StringTemplate;
9
import org.apache.commons.io.IOUtils;
10

    
11
import com.googlecode.sarasvati.Arc;
12
import com.googlecode.sarasvati.NodeToken;
13

    
14
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
15
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
16

    
17
import eu.dnetlib.msro.worker.nodes.SimpleJobNode;
18
import eu.dnetlib.msro.workflows.util.WorkflowConstants;
19
import eu.dnetlib.msro.workflows.util.WorkflowConstants.WorkflowStatus;
20

    
21
public class RegisterMetaWfJobNode extends SimpleJobNode {
22

    
23
	@Resource
24
	private DnetServiceLocator serviceLocator;
25

    
26
	private String wfName;
27

    
28
	@Override
29
	protected String execute(final NodeToken token) throws Exception {
30
		final String dsId = token.getFullEnv().getAttribute(WorkflowConstants.DATAPROVIDER_ID);
31
		final String dsName = token.getFullEnv().getAttribute(WorkflowConstants.DATAPROVIDER_NAME);
32
		final String ifaceId = token.getFullEnv().getAttribute(WorkflowConstants.DATAPROVIDER_INTERFACE);
33

    
34
		final String metaWfId = registerDatasourceWorkflow(dsId, dsName, ifaceId);
35

    
36
		token.getFullEnv().setAttribute("META_WORKFLOW_ID", metaWfId);
37
		token.getFullEnv().setAttribute("META_WORKFLOW_STATUS", WorkflowStatus.ASSIGNED.toString());
38

    
39
		return Arc.DEFAULT_ARC;
40
	}
41

    
42
	public String registerDatasourceWorkflow(final String dsId, final String dsName, final String ifaceId) throws ISRegistryException, IOException {
43
		final StringWriter sw = new StringWriter();
44
		IOUtils.copy(getClass().getResourceAsStream("/eu/dnetlib/msro/workflows/templates/meta-workflow.xml.st"), sw);
45

    
46
		final StringTemplate st = new StringTemplate(sw.toString());
47
		st.setAttribute("dsId", dsId);
48
		st.setAttribute("ifaceId", ifaceId);
49
		st.setAttribute("dsName", dsName);
50
		st.setAttribute("section", "dataproviders");
51
		st.setAttribute("wfName", getWfName());
52
		st.setAttribute("wfFamily", getWfName());
53
		st.setAttribute("status", WorkflowStatus.ASSIGNED.toString());
54

    
55
		return serviceLocator.getService(ISRegistryService.class).registerProfile(st.toString());
56
	}
57

    
58
	public String getWfName() {
59
		return wfName;
60
	}
61

    
62
	public void setWfName(final String wfName) {
63
		this.wfName = wfName;
64
	}
65

    
66
}
(3-3/7)