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.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  * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
12  * ***             http://cc.in2p3.fr/             ***
13  * ***************************************************
14  * File:   FilteredJobStatusPoller
15  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
16  * Date:   11 janv. 2008
17  * ***************************************************
18  * Description:                                      */
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;           //todo: set filter value
34          filters[QueryFilteredJob.COLLECTION_NAME] = null;   //todo: set filter value
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  }