Project

General

Profile

1
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
		return process.getGraph().getName();
20
	}
21

    
22
	public static String calculateFamily(final GraphProcess process) {
23
		return process.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_FAMILY);
24
	}
25
	
26
	public static String calculateWfId(final GraphProcess process) {
27
		return  process.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
28
	}
29
	
30
	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

    
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
	
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
}
(1-1/7)