Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/projectapollo/demo/Jobs/JobList/JobListBroker.java


1   package org.projectapollo.demo.Jobs.JobList;
2   
3   import apollo.*;
4   import apollo.Template.*;
5   import apollo.Storable.*;
6   import apollo.Job.*;
7   
8   import org.projectapollo.demo.*;
9   import org.projectapollo.demo.Storable.*;
10  import java.util.*;
11  
12  import org.projectapollo.demo.Jobs.JobList.Error.*;
13  import org.projectapollo.demo.Jobs.JobList.Result.*;
14  
15  import java.lang.Thread;
16  
17  import apollo.Session.*;
18  
19  public class JobListBroker extends PageBroker {
20    public JobListBroker(ManagerTracker MT,String fquid,PageBroker PB) throws TemplatePageException {
21      super(MT,fquid,PB);
22      this.registerPageHandler("Result", new ResultBroker (MT, fquid+".Result", this));
23      this.registerPageHandler("Error", new ErrorBroker(MT, fquid+".Error", this));
24  
25      MT.getPM().registerTemplatePage(FQUID, new TemplatePage(MT,this));
26      MT.getPM().registerTemplatePage(FQUID+".Job", new TemplatePage(MT,this, "job.html", false));
27    }
28    
29    public HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession thisSession) throws ApolloException {
30  
31      long t = System.currentTimeMillis();
32      User u = (User) thisSession.getValue("User");
33      WhereStatement wq;
34      if (u.getUserID().equals("admin")) {
35        wq = new RawWhereQuery("");
36      } else {
37        WhereQuery wqs = new WhereQuery();
38        wqs.insertWhereClause(WhereQuery.AND, "userID", JobMembership.class, u.getUserID());
39        wqs.insertWhereClause(WhereQuery.AND, "jobID", JobMembership.class, "jobID", JobRecord.class);
40        wq = wqs;
41      }
42      Vector jobs = Storable.loadVectorInstance(TT, JobRecord.class, wq, new String[] {"jobID", "jobName", "statusID", "resultTypeID", "error", "startDate"});
43      Hashtable RT = new Hashtable();
44      StringBuffer sb = new StringBuffer();
45      for (Enumeration e = jobs.elements(); e.hasMoreElements();) {
46        JobRecord jr = (JobRecord) e.nextElement();
47        Hashtable miniRT = new Hashtable();
48        miniRT.put("JobID", new Integer(jr.getJobID()));
49        if (jr.getStatusID()==JobManager.JOB_UNINITIALIZED) {
50          miniRT.put("Status", "Uninitialized");
51        } else if (jr.getStatusID()==JobManager.JOB_RUNNING) {
52          miniRT.put("Status", "Running");
53          miniRT.put("ViewStatus", new Boolean(true));
54        } else if (jr.getStatusID()==JobManager.JOB_FAILED) {
55          miniRT.put("Status", "Failed");
56          miniRT.put("Errors", new Boolean(true));
57        } else if (jr.getStatusID()==JobManager.JOB_FINISHED) {
58          miniRT.put("Status", "Finished");
59          miniRT.put("Results", new Boolean(true));
60        } else {
61          miniRT.put("Status", "Unknown");
62        }
63        if (jr.getStartDate()==null) {
64          miniRT.put("StartDate", " -- ");
65        } else {
66          miniRT.put("StartDate", jr.getStartDate());
67        }
68        miniRT.put("JobName", jr.getJobName());
69  
70        if (u.getUserID().equals("admin")) {
71          //If it's the admin user, we need to figure out who acctually submitted this job
72  
73          WhereQuery wqj = new WhereQuery();
74          wqj.insertWhereClause(WhereQuery.AND, "jobID", JobMembership.class, new Integer(jr.getJobID()));
75          Vector vecJM = JobMembership.loadVectorInstance(TT, wqj);
76          
77          JobMembership jm = (JobMembership) vecJM.firstElement();
78          miniRT.put("UserID", jm.getUserID());
79        } else {
80          // Since we only looked up jobs by this user, this user is obviously the creator of the job
81          miniRT.put("UserID", u.getUserID());
82        }
83        sb.append(MT.getPM().getPage(FQUID+".Job").toString(miniRT, thisSession));
84      }
85      RT.put("Jobs", sb.toString());
86      return MT.getPM().getPage(FQUID).render(RT,thisSession);
87    }
88  }