Project

General

Profile

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

    
3
import java.util.Map.Entry;
4

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

    
9
import com.googlecode.sarasvati.Arc;
10
import com.googlecode.sarasvati.NodeToken;
11

    
12
import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
13
import eu.dnetlib.enabling.datasources.common.Api;
14
import eu.dnetlib.enabling.datasources.common.ApiParam;
15
import eu.dnetlib.enabling.datasources.common.DsmException;
16
import eu.dnetlib.miscutils.datetime.DateUtils;
17
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
18

    
19
public class UpsertHostedByApisJobNode extends SimpleJobNode {
20

    
21
	private static final Log log = LogFactory.getLog(UpsertHostedByApisJobNode.class);
22

    
23
	private static final String HOSTED_BY_COMPLIANCE = "hostedBy";
24

    
25
	@Autowired
26
	private LocalOpenaireDatasourceManager dsManager;
27

    
28
	private String countersParam;
29
	private String mdId;
30
	public static final String extraFieldsForTotal = "last_aggregation_total";
31
	public static final String extraFieldForDate = "last_aggregation_date";
32
	public static final String extraFieldForMdId = "last_aggregation_mdId";
33

    
34
	@Override
35
	protected String execute(final NodeToken token) throws Exception {
36
		final HostedByCounters counters = (HostedByCounters) token.getEnv().getTransientAttribute(countersParam);
37
		final String date = DateUtils.now_ISO8601();
38
		final String namespacePrefix = token.getEnv().getAttribute("namespacePrefix");
39

    
40
		log.info(counters);
41

    
42
		for (final Entry<String, Integer> e : counters.getCounters().entrySet()) {
43
			updateHostedByApi(e.getKey(), namespacePrefix, date, e.getValue());
44
		}
45

    
46
		return Arc.DEFAULT_ARC;
47
	}
48

    
49
	private void updateHostedByApi(final String dsId,
50
			final String namepsacePrefix,
51
			final String date,
52
			final int size) {
53
		log.info("Verifying hostedBy api in ds: " + dsId);
54
		try {
55

    
56
			for (final Api<ApiParam> iface : dsManager.getApis(dsId)) {
57
				if (HOSTED_BY_COMPLIANCE.equals(iface.getCompatibility())) { return; }
58
			}
59

    
60
			final Api<ApiParam> api = new Api<>();
61
			api.setDatasource(dsId);
62
			api.setId("api_________::" + dsId + "::hostedBy");
63
			api.setTypology(dsManager.getDs(dsId).getTypology());
64
			api.setCompatibility(HOSTED_BY_COMPLIANCE);
65
			api.setProtocol("UNKNOWN");
66
			api.setContentdescription("metadata");
67
			api.setBaseurl("");
68
			api.setActive(false);
69
			api.setRemovable(true);
70
			dsManager.addApi(api);
71
		} catch (final DsmException e) {
72
			log.warn("Error setting hostedBy api of ds: " + dsId, e);
73
		}
74
	}
75

    
76
	public String getMdId() {
77
		return mdId;
78
	}
79

    
80
	public void setMdId(final String mdId) {
81
		this.mdId = mdId;
82
	}
83

    
84
	public String getCountersParam() {
85
		return countersParam;
86
	}
87

    
88
	public void setCountersParam(final String countersParam) {
89
		this.countersParam = countersParam;
90
	}
91

    
92
}
(7-7/7)