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 }