Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.msro.workflows.util;
2
3
import java.text.SimpleDateFormat;
4
import java.util.Date;
5
6
import org.apache.commons.logging.Log;
7
import org.apache.commons.logging.LogFactory;
8
9
import com.googlecode.sarasvati.GraphProcess;
10
import com.googlecode.sarasvati.NodeToken;
11
12
public class ProcessUtils {
13
14
	private static String oldGeneratedId = "";
15
16
	private static final Log log = LogFactory.getLog(ProcessUtils.class);
17
18
	public static String calculateName(final GraphProcess process) {
19 27052 michele.ar
		return process.getGraph().getName();
20 26600 sandro.lab
	}
21
22
	public static String calculateFamily(final GraphProcess process) {
23 27052 michele.ar
		return process.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_FAMILY);
24 26600 sandro.lab
	}
25
26 26617 michele.ar
	public static String calculateWfId(final GraphProcess process) {
27
		return  process.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
28
	}
29
30 26600 sandro.lab
	public static String calculateStatus(final GraphProcess process) {
31
		if (!process.isComplete()) {
32
			return process.getState().toString().toUpperCase();
33
		} else if ("true".equals(process.getEnv().getAttribute(WorkflowsConstants.SYSTEM_COMPLETED_SUCCESSFULLY))) {
34
			return "SUCCESS";
35
		} else {
36
			return "FAILURE";
37
		}
38
	}
39
40
	public static Date calculateLastActivityDate(final GraphProcess process) {
41
		Date date = null;
42
		for (final NodeToken token : process.getNodeTokens()) {
43
			Date activity = token.getCompleteDate();
44
			if (activity == null)
45
				activity = token.getCreateDate();
46
47
			if (date == null)
48
				date = activity;
49
50
			if (activity != null && date != null && activity.compareTo(date) > 0)
51
				date = activity;
52
		}
53
		return date;
54
	}
55 27052 michele.ar
56
	public static String calculateRepo(final GraphProcess process) {
57
		if (process.getEnv().hasAttribute(WorkflowsConstants.DATAPROVIDER_NAME)) {
58
			return process.getEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_NAME);
59
		}
60
		return "";
61
	}
62
63 26600 sandro.lab
64
	public static synchronized String generateProcessId() {
65
		String id = "";
66
		do {
67
			id = "wf_" + (new SimpleDateFormat("yyyyMMdd_HHmmss_S")).format(new Date());
68
			log.info("Generated processID " + id);
69
		} while (id.equals(oldGeneratedId));
70
71
		oldGeneratedId = id;
72
73
		return id;
74
	}
75
76
}