View Javadoc

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   * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
10  * ***             http://cc.in2p3.fr/             ***
11  * ***************************************************
12  * File:   ListJobStatusPoller
13  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
14  * Date:   11 janv. 2008
15  * ***************************************************
16  * Description:                                      */
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  }