Project

General

Profile

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

    
3
import javax.annotation.Resource;
4

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

    
10
import com.google.gson.Gson;
11
import com.googlecode.sarasvati.Arc;
12
import com.googlecode.sarasvati.NodeToken;
13

    
14
import eu.dnetlib.data.mdstore.manager.common.model.MDStoreWithInfo;
15
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
16
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
17
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
18

    
19
public class CreateMDStoreHadoopJobNode extends SimpleJobNode {
20

    
21
	private static final Log log = LogFactory.getLog(CreateMDStoreHadoopJobNode.class);
22
	public static final String MDSTORE_CREATE_URL_AND_PARAMS = "/new/{format}/{layout}/{interpretation}?dsName={dsName}&dsId={dsid}&apiId={apiId}";
23

    
24
	/* Workflow params */
25
	private String format;
26
	private String layout;
27
	private String interpretation;
28
	private String outputPrefix = "mdstore";
29

    
30
	/* Spring managed params */
31
	private String mdStoreManagerUrl;
32

    
33
	@Resource
34
	private UniqueServiceLocator serviceLocator;
35

    
36
	@Override
37
	protected String execute(final NodeToken token) throws Exception {
38

    
39
		final String openAireDataSourceId = token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_ID);
40

    
41
		final String urlTemplate = getMdStoreManagerUrl() + MDSTORE_CREATE_URL_AND_PARAMS;
42

    
43
		final RestTemplate restTemplate = new RestTemplate();
44
		final MDStoreWithInfo result =
45
			restTemplate.getForObject(urlTemplate, MDStoreWithInfo.class, getFormat(), getLayout(), getInterpretation(), token.getFullEnv()
46
				.getAttribute(WorkflowsConstants.DATAPROVIDER_NAME), openAireDataSourceId, token.getFullEnv()
47
					.getAttribute(WorkflowsConstants.DATAPROVIDER_INTERFACE));
48

    
49
		log.info("created mdstore: " + new Gson().toJson(result));
50

    
51
		token.getEnv().setAttribute(getOutputPrefix() + "format", format);
52
		token.getEnv().setAttribute(getOutputPrefix() + "layout", layout);
53
		token.getEnv().setAttribute(getOutputPrefix() + "interpretation", interpretation);
54
		token.getEnv().setAttribute(getOutputPrefix() + "id", result.getId());
55

    
56
		return Arc.DEFAULT_ARC;
57
	}
58

    
59
	public String getFormat() {
60
		return format;
61
	}
62

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

    
67
	public String getLayout() {
68
		return layout;
69
	}
70

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

    
75
	public String getInterpretation() {
76
		return interpretation;
77
	}
78

    
79
	public void setInterpretation(final String interpretation) {
80
		this.interpretation = interpretation;
81
	}
82

    
83
	public String getOutputPrefix() {
84
		return outputPrefix;
85
	}
86

    
87
	public void setOutputPrefix(final String outputPrefix) {
88
		this.outputPrefix = outputPrefix;
89
	}
90

    
91
	public String getMdStoreManagerUrl() {
92
		return mdStoreManagerUrl;
93
	}
94

    
95
	@Required
96
	public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
97
		this.mdStoreManagerUrl = mdStoreManagerUrl;
98
	}
99

    
100
}
(3-3/11)