1 package fr.in2p3.jsaga.engine.job.monitor.poll;
2
3 import fr.in2p3.jsaga.adaptor.job.monitor.JobStatus;
4 import fr.in2p3.jsaga.adaptor.job.monitor.QueryIndividualJob;
5 import fr.in2p3.jsaga.engine.job.monitor.JobMonitorCallback;
6 import org.apache.log4j.Logger;
7
8 import java.util.Set;
9 import java.util.Map.Entry;
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class IndividualJobStatusPoller extends AbstractJobStatusPoller {
24 private static Logger s_logger = Logger.getLogger(IndividualJobStatusPoller.class);
25 private QueryIndividualJob m_adaptor;
26
27 public IndividualJobStatusPoller(QueryIndividualJob adaptor) {
28 super();
29 m_adaptor = adaptor;
30 }
31
32 public void run() {
33
34 Set<Entry<String, JobMonitorCallback>> entries;
35 synchronized(m_subscribedJobs) {
36 entries = m_subscribedJobs.entrySet();
37 }
38 for (Entry<String, JobMonitorCallback> entry : entries) {
39 String nativeJobId = (String) entry.getKey();
40 JobMonitorCallback callback = (JobMonitorCallback) entry.getValue();
41 try {
42 JobStatus status = m_adaptor.getStatus(nativeJobId);
43 callback.setState(status.getSagaState(), status.getStateDetail(), status.getSubState(), status.getCause());
44 } catch (Exception e) {
45 s_logger.warn("Failed to get status for job: "+ nativeJobId, e);
46 }
47 }
48 }
49 }