Source code: org/projectapollo/demo/Jobs/JobList/Result/ResultBroker.java
1 package org.projectapollo.demo.Jobs.JobList.Result;
2
3 import apollo.*;
4 import apollo.Template.*;
5 import apollo.Storable.*;
6 import apollo.Job.*;
7
8 import org.projectapollo.demo.Storable.*;
9
10 import java.util.*;
11 import java.text.*;
12
13 import apollo.Session.*;
14
15 public class ResultBroker extends PageBroker {
16 Vector AS;
17 AcceptClause normalEntry;
18
19 public ResultBroker(ManagerTracker MT,String fquid,PageBroker PB) throws TemplatePageException {
20 super(MT,fquid,PB);
21 MT.getPM().registerTemplatePage(FQUID, new TemplatePage(MT,this));
22
23 AS = new Vector();
24 normalEntry= new AcceptClause("NormalEntry");
25 normalEntry.addAcceptClause(AcceptClause.INT, "JobID", AcceptClause.REQUIRED);
26 AS.addElement(normalEntry);
27 }
28
29 public HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession thisSession) throws ApolloException {
30 EntryAssertionManager EAM = new EntryAssertionManager(MT, AS);
31 EAM.evaluate(req);
32 Hashtable RT = new Hashtable();
33 Job j = MT.getJM().getJob(EAM.getInt("JobID"));
34 if (j==null) {
35 RT.put("Result", "No such job");
36 return MT.getPM().getPage(FQUID).render(RT,thisSession);
37 }
38 JobResult jr = j.getJobResult();
39 if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_HTML) {
40 RT.put("Result", jr.getResult());
41 RT.put("JobName", j.getJobName());
42 RT.put("JobID", new Integer(j.getJobID()));
43 return MT.getPM().getPage(FQUID).render(RT,thisSession);
44 } else if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_TEXT) {
45 HTTPResponse res = new HTTPResponse(MT, jr.getResult());
46 res.setUseManualHeaders(true);
47 res.setManualHeaders("Content-type", "text/plain");
48 return res;
49 } else if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_MS_WORD) {
50 HTTPResponse res = new HTTPResponse(MT, jr.getResult());
51 res.setUseManualHeaders(true);
52 res.setManualHeaders("Content-type", "application.vnd/msword");
53 if (jr.getFilename()!=null) { // set filename!
54 res.setManualHeaders("content-disposition", "filename=\""+jr.getFilename()+"\";attachment");
55 }
56 res.setGZIPEncoding(false);
57 return res;
58 } else if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_MS_EXCEL) {
59 HTTPResponse res = new HTTPResponse(MT, jr.getResult());
60 res.setUseManualHeaders(true);
61 res.setManualHeaders("Content-type", "application.vnd/msexcel");
62 if (jr.getFilename()!=null) { // set filename!
63 res.setManualHeaders("content-disposition", "filename=\""+jr.getFilename()+"\";attachment");
64 }
65 res.setGZIPEncoding(false);
66 return res;
67 } else if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_FQUID) {
68 String s = jr.getResult();
69 if (s==null) {
70 s="";
71 }
72 RT.put("Result", "Result was an FQUID return to: "+s);
73 RT.put("JobName", j.getJobName());
74 RT.put("JobID", new Integer(j.getJobID()));
75 return MT.getPM().getPage(FQUID).render(RT,thisSession);
76 } else if (jr.getResultTypeID()==JobMembership.RETURN_TYPE_NONE) {
77 RT.put("Result", "There was no return value");
78 RT.put("JobName", j.getJobName());
79 RT.put("JobID", new Integer(j.getJobID()));
80 return MT.getPM().getPage(FQUID).render(RT,thisSession);
81 } else {
82 RT.put("Result", "Unknown job type!"+Integer.toString(jr.getResultTypeID()));
83 return MT.getPM().getPage(FQUID).render(RT,thisSession);
84 }
85 }
86 }