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.QueryListJob;
5 import fr.in2p3.jsaga.engine.job.monitor.JobMonitorCallback;
6 import org.apache.log4j.Logger;
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class ListJobStatusPoller extends AbstractJobStatusPoller {
21 private static Logger s_logger = Logger.getLogger(ListJobStatusPoller.class);
22 private QueryListJob m_adaptor;
23
24 public ListJobStatusPoller(QueryListJob adaptor) {
25 super();
26 m_adaptor = adaptor;
27 }
28
29 public void run() {
30 String[] jobsToQuery;
31 synchronized(m_subscribedJobs) {
32 jobsToQuery = m_subscribedJobs.keySet().toArray(new String[m_subscribedJobs.size()]);
33 }
34 try {
35 JobStatus[] statusArray = m_adaptor.getStatusList(jobsToQuery);
36 for (JobStatus status : statusArray) {
37 String nativeJobId = status.getNativeJobId();
38 JobMonitorCallback callback;
39 synchronized(m_subscribedJobs) {
40 callback = m_subscribedJobs.get(nativeJobId);
41 }
42 if (callback != null) {
43 callback.setState(status.getSagaState(), status.getStateDetail(), status.getSubState(), status.getCause());
44 }
45 }
46 } catch (Exception e) {
47 s_logger.warn("Failed to get status for list of jobs", e);
48 }
49 }
50 }