Project

General

Profile

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

    
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import javax.annotation.Resource;
6

    
7
import com.googlecode.sarasvati.Arc;
8
import com.googlecode.sarasvati.NodeToken;
9
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
10
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
11
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
12
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
13
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
14
import eu.dnetlib.msro.workflows.util.WorkflowsConstants.WorkflowStatus;
15
import org.antlr.stringtemplate.StringTemplate;
16
import org.apache.commons.io.IOUtils;
17
import org.apache.commons.lang.StringEscapeUtils;
18

    
19
public class RegisterMetaWfJobNode extends SimpleJobNode {
20

    
21
	@Resource
22
	private UniqueServiceLocator serviceLocator;
23
	private String adminEmail;
24

    
25
	private String wfName;
26

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

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

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

    
38
		return Arc.DEFAULT_ARC;
39
	}
40

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

    
45
		final StringTemplate st = new StringTemplate(sw.toString());
46
		st.setAttribute("dsId", dsId);
47
		st.setAttribute("ifaceId", ifaceId);
48
		st.setAttribute("dsName", StringEscapeUtils.escapeXml(dsName));
49
		st.setAttribute("section", "dataproviders");
50
		st.setAttribute("wfName", StringEscapeUtils.escapeXml(getWfName()));
51
		st.setAttribute("wfFamily", StringEscapeUtils.escapeXml(getWfName()));
52
		st.setAttribute("adminEmail", adminEmail);
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
	public String getAdminEmail() {
67
		return adminEmail;
68
	}
69

    
70
	public void setAdminEmail(final String adminEmail) {
71
		this.adminEmail = adminEmail;
72
	}
73
}
(3-3/7)