Project

General

Profile

1
package eu.dnetlib.msro.workflows.procs;
2

    
3
import java.util.HashMap;
4
import java.util.List;
5
import java.util.Map;
6
import java.util.concurrent.CopyOnWriteArrayList;
7

    
8
import org.apache.commons.lang3.math.NumberUtils;
9

    
10
import com.fasterxml.jackson.annotation.JsonIgnore;
11

    
12
import eu.dnetlib.msro.workflows.Graph;
13
import eu.dnetlib.msro.workflows.ProcessStatus;
14
import eu.dnetlib.msro.workflows.WorkflowProcessInfo;
15
import eu.dnetlib.msro.workflows.logs.WfLogEntry;
16
import eu.dnetlib.services.async.AsyncServerCallback;
17

    
18
/**
19
 * Created by michele on 19/11/15.
20
 */
21
public class WorkflowProcess extends WorkflowProcessInfo implements Comparable<WorkflowProcess> {
22

    
23
	@JsonIgnore
24
	private Graph graph;
25
	@JsonIgnore
26
	private AsyncServerCallback callback;
27

    
28
	@JsonIgnore
29
	private List<Token> tokens = new CopyOnWriteArrayList<>();
30
	@JsonIgnore
31
	private Map<String, List<Token>> pausedJoinNodeTokens = new HashMap<String, List<Token>>();
32

    
33
	public void kill() {
34
		setStatus(ProcessStatus.KILLED);
35
	}
36

    
37
	public boolean isTerminated() {
38
		switch (getStatus()) {
39
		case SUCCESS:
40
		case FAILURE:
41
		case KILLED:
42
			return true;
43
		default:
44
			return false;
45
		}
46
	}
47

    
48
	@Override
49
	public int compareTo(final WorkflowProcess wp) {
50
		return NumberUtils.compare(getPriority(), wp.getPriority());
51
	}
52

    
53
	public Graph getGraph() {
54
		return graph;
55
	}
56

    
57
	public void setGraph(final Graph graph) {
58
		this.graph = graph;
59
	}
60

    
61
	public AsyncServerCallback getCallback() {
62
		return callback;
63
	}
64

    
65
	public void setCallback(final AsyncServerCallback callback) {
66
		this.callback = callback;
67
	}
68

    
69
	public List<Token> getTokens() {
70
		return tokens;
71
	}
72

    
73
	public void setTokens(final List<Token> tokens) {
74
		this.tokens = tokens;
75
	}
76

    
77
	public Map<String, List<Token>> getPausedJoinNodeTokens() {
78
		return pausedJoinNodeTokens;
79
	}
80

    
81
	public void setPausedJoinNodeTokens(final Map<String, List<Token>> pausedJoinNodeTokens) {
82
		this.pausedJoinNodeTokens = pausedJoinNodeTokens;
83
	}
84

    
85
	public WfLogEntry prepareWfLog() {
86
		final WfLogEntry wfLog = new WfLogEntry();
87
		wfLog.setProcId(getId());
88
		wfLog.setName(getName());
89
		wfLog.setFamily(getFamily());
90
		wfLog.setPriority(getPriority());
91
		wfLog.setTemplate(isTemplate());
92
		wfLog.setProfileId(getProfileId());
93
		wfLog.setParent(getParentProfileId());
94
		wfLog.setDatasourceId(getDsId());
95
		wfLog.setDatasourceApi(getDsInterface());
96
		wfLog.setDatasourceName(getDsName());
97
		wfLog.setStartDate(getStartDate());
98
		wfLog.setEndDate(getEndDate());
99
		wfLog.setSuccess(getStatus() == ProcessStatus.SUCCESS);
100
		wfLog.setWorkerUrl(getWorkerUrl());
101

    
102
		if (getStatus() == ProcessStatus.FAILURE) {
103
			wfLog.setError(getError());
104
			wfLog.setStacktrace(getErrorStacktrace());
105
		}
106

    
107
		wfLog.setOutputParams(getOutputParams());
108

    
109
		return wfLog;
110
	}
111

    
112
}
(8-8/8)