Project

General

Profile

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

    
3
import java.text.SimpleDateFormat;
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.Map;
7

    
8
import javax.annotation.Resource;
9

    
10
import org.apache.commons.logging.Log;
11
import org.apache.commons.logging.LogFactory;
12

    
13
import eu.dnetlib.msro.logging.DnetLogger;
14
import eu.dnetlib.msro.workflows.graph.Arc;
15
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
16
import eu.dnetlib.msro.workflows.procs.Env;
17
import eu.dnetlib.msro.workflows.procs.ProcessAware;
18
import eu.dnetlib.msro.workflows.procs.WorkflowProcess;
19

    
20
public class FindDateRangeForIncrementalHarvestingJobNode extends SimpleJobNode implements ProcessAware {
21

    
22
	private static final Log log = LogFactory.getLog(FindDateRangeForIncrementalHarvestingJobNode.class);
23
	private String fromDateParam;
24
	private String untilDateParam;
25
	private static final long ONE_DAY = 1000 * 60 * 60 * 24;
26

    
27
	private WorkflowProcess process;
28

    
29
	@Resource(name = "msroWorkflowLogger")
30
	private DnetLogger dnetLogger;
31

    
32
	@Override
33
	protected String execute(final Env env) throws Exception {
34
		final String fromDate = calculateFromDate();
35
		final String untilDate = null;
36

    
37
		log.info("Incremental Harv Details - from: " + fromDate + " - until: " + untilDate);
38

    
39
		if (fromDate != null) {
40
			env.setAttribute(getFromDateParam(), fromDate);
41
		}
42

    
43
		// if (untilDate != null) {
44
		// env.setAttribute(getUntilDateParam(), untilDate);
45
		// }
46

    
47
		return Arc.DEFAULT_ARC;
48
	}
49

    
50
	private String calculateFromDate() {
51
		final long d = findLastSuccessStartDate();
52
		return (d > 0) ? (new SimpleDateFormat("yyyy-MM-dd")).format(new Date(d - ONE_DAY)) : null;
53
	}
54

    
55
	private long findLastSuccessStartDate() {
56
		final long res = -1;
57

    
58
		// TODO find the right condition to obtain the list of the previous executions
59

    
60
		final Map<String, Object> query = new HashMap<String, Object>();
61
		query.put("", "");
62

    
63
		/*
64
		 * final Iterator<Map<String, String>> iter = this.dnetLogger.find(query); while (iter.hasNext()) { final Map<String, String> map =
65
		 * iter.next(); if ("true".equalsIgnoreCase(map.get(WorkflowsConstants.SYSTEM_COMPLETED_SUCCESSFULLY))) { final long curr =
66
		 * NumberUtils.toLong(map.get(WorkflowsConstants.SYSTEM_START_DATE), -1); if (curr > res) { res = curr; } } }
67
		 */
68
		return res;
69
	}
70

    
71
	public String getFromDateParam() {
72
		return this.fromDateParam;
73
	}
74

    
75
	public void setFromDateParam(final String fromDateParam) {
76
		this.fromDateParam = fromDateParam;
77
	}
78

    
79
	public String getUntilDateParam() {
80
		return this.untilDateParam;
81
	}
82

    
83
	public void setUntilDateParam(final String untilDateParam) {
84
		this.untilDateParam = untilDateParam;
85
	}
86

    
87
	public WorkflowProcess getProcess() {
88
		return this.process;
89
	}
90

    
91
	@Override
92
	public void setProcess(final WorkflowProcess process) {
93
		this.process = process;
94
	}
95

    
96
}
(3-3/3)