package
org.projectapollo.demo.Jobs.JobList;
import apollo.*;
import apollo.Template.*;
import apollo.Storable.*;
import apollo.Job.*;
import
org.projectapollo.demo.*;
import
org.projectapollo.demo.Storable.*;
import java.util.*;
import
org.projectapollo.demo.Jobs.JobList.Error.*;
import
org.projectapollo.demo.Jobs.JobList.Result.*;
import java.lang.Thread;
import apollo.Session.*;
public class
JobListBroker extends
PageBroker {
public
JobListBroker(ManagerTracker MT,String fquid,PageBroker PB) throws
TemplatePageException {
super(MT,fquid,PB);
this.registerPageHandler("Result",
new
ResultBroker (MT, fquid+".Result",
this));
this.registerPageHandler("Error",
new
ErrorBroker(MT, fquid+".Error",
this));
MT.getPM().registerTemplatePage(FQUID,
new
TemplatePage(MT,this));
MT.getPM().registerTemplatePage(FQUID+".Job",
new
TemplatePage(MT,this,
"job.html",
false));
}
public
HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession
thisSession) throws
ApolloException {
User u = (User) thisSession.getValue("User");
WhereStatement wq;
if
(u.getUserID().equals("admin"))
{
wq = new
RawWhereQuery("");
} else
{
WhereQuery wqs = new
WhereQuery();
wqs.insertWhereClause(WhereQuery.AND, "userID",
JobMembership.class,
u.getUserID());
wqs.insertWhereClause(WhereQuery.AND, "jobID",
JobMembership.class,
"jobID",
JobRecord.class);
wq = wqs;
}
Vector jobs = JobRecord.loadVectorInstance(TT, wq);
Hashtable RT = new
Hashtable();
StringBuffer sb = new
StringBuffer();
for
(Enumeration e = jobs.elements(); e.hasMoreElements();) {
JobRecord jr = (JobRecord) e.nextElement();
Hashtable miniRT = new
Hashtable();
miniRT.put("JobID",
new
Integer(jr.getJobID()));
if
(jr.getStatusID()==JobManager.JOB_UNINITIALIZED) {
miniRT.put("Status",
"Uninitialized");
} else
if
(jr.getStatusID()==JobManager.JOB_RUNNING) {
miniRT.put("Status",
"Running");
miniRT.put("ViewStatus",
new
Boolean(true));
} else
if
(jr.getStatusID()==JobManager.JOB_FAILED) {
miniRT.put("Status",
"Failed");
miniRT.put("Errors",
new
Boolean(true));
} else
if
(jr.getStatusID()==JobManager.JOB_FINISHED) {
miniRT.put("Status",
"Finished");
miniRT.put("Results",
new
Boolean(true));
} else
{
miniRT.put("Status",
"Unknown");
}
if
(jr.getStartDate()==null)
{
miniRT.put("StartDate",
" -- ");
} else
{
miniRT.put("StartDate",
jr.getStartDate());
}
miniRT.put("JobName",
jr.getJobName());
WhereQuery wqj = new
WhereQuery();
wqj.insertWhereClause(WhereQuery.AND, "jobID",
JobMembership.class,
new
Integer(jr.getJobID()));
Vector vecJM = JobMembership.loadVectorInstance(TT, wqj);
JobMembership jm = (JobMembership) vecJM.firstElement();
miniRT.put("UserID",
jm.getUserID());
sb.append(MT.getPM().getPage(FQUID+".Job").toString(miniRT,
thisSession));
}
RT.put("Jobs",
sb.toString());
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
}
}