package
org.projectapollo.demo.Jobs.JobList.Result;
import apollo.*;
import apollo.Template.*;
import apollo.Storable.*;
import apollo.Job.*;
import
org.projectapollo.demo.Storable.*;
import java.util.*;
import java.text.*;
import apollo.Session.*;
public class
ResultBroker extends
PageBroker {
Vector AS;
AcceptClause normalEntry;
public
ResultBroker(ManagerTracker MT,String fquid,PageBroker PB) throws
TemplatePageException {
super(MT,fquid,PB);
MT.getPM().registerTemplatePage(FQUID, new
TemplatePage(MT,this));
AS = new
Vector();
normalEntry= new
AcceptClause("NormalEntry");
normalEntry.addAcceptClause(AcceptClause.INT, "JobID",
AcceptClause.REQUIRED);
AS.addElement(normalEntry);
}
public
HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession
thisSession) throws
ApolloException {
EntryAssertionManager EAM = new
EntryAssertionManager(MT, AS);
EAM.evaluate(req);
Hashtable RT = new
Hashtable();
Job j = MT.getJM().getJob(EAM.getInt("JobID"));
if
(j==null)
{
RT.put("Result",
"No such job");
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
}
JobResult jr = j.getJobResult();
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_HTML) {
RT.put("Result",
jr.getResult());
RT.put("JobName",
j.getJobName());
RT.put("JobID",
new
Integer(j.getJobID()));
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
} else
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_TEXT) {
HTTPResponse res = new
HTTPResponse(MT, jr.getResult());
res.setUseManualHeaders(true);
res.setManualHeaders("Content-type",
"text/plain");
return
res;
} else
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_MS_WORD) {
HTTPResponse res = new
HTTPResponse(MT, jr.getResult());
res.setUseManualHeaders(true);
res.setManualHeaders("Content-type",
"application.vnd/msword");
res.setGZIPEncoding(false);
return
res;
} else
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_MS_EXCEL) {
HTTPResponse res = new
HTTPResponse(MT, jr.getResult());
res.setUseManualHeaders(true);
res.setManualHeaders("Content-type",
"application.vnd/msexcel");
res.setGZIPEncoding(false);
return
res;
} else
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_FQUID) {
String s = jr.getResult();
if
(s==null)
{
s="";
}
RT.put("Result",
"Result was an FQUID
return to: "+s);
RT.put("JobName",
j.getJobName());
RT.put("JobID",
new
Integer(j.getJobID()));
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
} else
if
(jr.getResultTypeID()==JobMembership.RETURN_TYPE_NONE) {
RT.put("Result",
"There was no return
value");
RT.put("JobName",
j.getJobName());
RT.put("JobID",
new
Integer(j.getJobID()));
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
} else
{
RT.put("Result",
"Unknown job type!"+Integer.toString(jr.getResultTypeID()));
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
}
}
}