Project

General

Profile

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

    
3
import java.net.URI;
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.Map;
7

    
8
import org.apache.commons.logging.Log;
9
import org.apache.commons.logging.LogFactory;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.web.client.RestTemplate;
12
import org.springframework.web.util.UriComponentsBuilder;
13

    
14
import com.googlecode.sarasvati.Arc;
15
import com.googlecode.sarasvati.NodeToken;
16

    
17
import eu.dnetlib.data.mdstore.manager.common.model.MDStoreWithInfo;
18
import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
19
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
20

    
21
public class MDStoreToApiExtraFieldHadoopJobNode extends SimpleJobNode {
22

    
23
    private String mdId;
24
    private String datasourceId;
25
    private String datasourceInterface;
26
    private String extraFieldForTotal;
27
    private String extraFieldForDate;
28
    private String extraFieldForMdId;
29

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

    
33
    @Autowired
34
    private LocalDatasourceManager<?, ?> dsManager;
35

    
36
    private static final Log log = LogFactory.getLog(MDStoreToApiExtraFieldHadoopJobNode.class);
37

    
38
    @Override
39
    protected String execute(final NodeToken token) throws Exception {
40

    
41
        final String url = getMdStoreManagerUrl() + "/mdstore/{mdId}";
42

    
43
        final Map<String, Object> params = new HashMap<>();
44
        params.put("mdId", getMdId());
45

    
46
        final URI uri = UriComponentsBuilder.fromUriString(url)
47
                .buildAndExpand(params)
48
                .toUri();
49

    
50
        final RestTemplate restTemplate = new RestTemplate();
51
        final MDStoreWithInfo mdstore = restTemplate.getForObject(uri, MDStoreWithInfo.class);
52

    
53
        final int size = Math.toIntExact(mdstore.getSize());
54
        final Date date = mdstore.getLastUpdate();
55

    
56
        if (extraFieldForTotal.equals("last_collection_total")) {
57
            dsManager.setLastCollectionInfo(datasourceId, datasourceInterface, mdId, size, date);
58
        } else if (extraFieldForTotal.equals("last_aggregation_total")) {
59
            dsManager.setLastAggregationInfo(datasourceId, datasourceInterface, mdId, size, date);
60
        } else {
61
            log.warn("Invalid field for total: " + extraFieldForTotal);
62
        }
63

    
64
        return Arc.DEFAULT_ARC;
65
    }
66

    
67
    public String getMdId() {
68
        return mdId;
69
    }
70

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

    
75
    public String getDatasourceId() {
76
        return datasourceId;
77
    }
78

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

    
83
    public String getDatasourceInterface() {
84
        return datasourceInterface;
85
    }
86

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

    
91
    public String getExtraFieldForTotal() {
92
        return extraFieldForTotal;
93
    }
94

    
95
    public void setExtraFieldForTotal(final String extraFieldForTotal) {
96
        this.extraFieldForTotal = extraFieldForTotal;
97
    }
98

    
99
    public String getExtraFieldForDate() {
100
        return extraFieldForDate;
101
    }
102

    
103
    public void setExtraFieldForDate(final String extraFieldForDate) {
104
        this.extraFieldForDate = extraFieldForDate;
105
    }
106

    
107
    public String getExtraFieldForMdId() {
108
        return extraFieldForMdId;
109
    }
110

    
111
    public void setExtraFieldForMdId(final String extraFieldForMdId) {
112
        this.extraFieldForMdId = extraFieldForMdId;
113
    }
114

    
115
    public String getMdStoreManagerUrl() {
116
        return mdStoreManagerUrl;
117
    }
118

    
119
    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
120
        this.mdStoreManagerUrl = mdStoreManagerUrl;
121
    }
122

    
123
}
(6-6/11)