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.QueryFilteredJob;
5 import fr.in2p3.jsaga.engine.job.monitor.JobMonitorCallback;
6 import org.apache.log4j.Logger;
7
8 import java.util.Calendar;
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class FilteredJobStatusPoller extends AbstractJobStatusPoller {
23 private static Logger s_logger = Logger.getLogger(FilteredJobStatusPoller.class);
24 private QueryFilteredJob m_adaptor;
25
26 public FilteredJobStatusPoller(QueryFilteredJob adaptor) {
27 super();
28 m_adaptor = adaptor;
29 }
30
31 public void run() {
32 Object[] filters = new Object[3];
33 filters[QueryFilteredJob.USER_ID] = null;
34 filters[QueryFilteredJob.COLLECTION_NAME] = null;
35 Calendar cal = Calendar.getInstance();
36 cal.add(Calendar.DAY_OF_YEAR, -1);
37 filters[QueryFilteredJob.START_DATE] = cal.getTime();
38 try {
39 JobStatus[] statusArray = m_adaptor.getFilteredStatus(filters);
40 for (JobStatus status : statusArray) {
41 String nativeJobId = status.getNativeJobId();
42 JobMonitorCallback callback;
43 synchronized(m_subscribedJobs) {
44 callback = m_subscribedJobs.get(nativeJobId);
45 }
46 if (callback != null) {
47 callback.setState(status.getSagaState(), status.getStateDetail(), status.getSubState(), status.getCause());
48 }
49 }
50 } catch (Exception e) {
51 s_logger.warn("Failed to get status for filtered jobs", e);
52 }
53 }
54 }