Source code: org/projectapollo/demo/Jobs/RandomNumbersJob.java
1 /*
2 * RandomNumbersJob.java
3 *
4 */
5
6 package org.projectapollo.demo.Jobs;
7
8 import apollo.Job.*;
9 import apollo.Template.*;
10 import apollo.*;
11
12 import java.util.*;
13
14 import org.projectapollo.demo.Storable.*;
15
16 /**
17 *
18 * @author kislo
19 * @version
20 */
21 public class RandomNumbersJob implements Job {
22
23
24 /** Creates new DemoJob */
25 private double percentage;
26 private int jobID;
27 private String jobName;
28 private String error;
29 private JobResult jobResult;
30 private int status;
31 private ManagerTracker MT;
32 private Date startDate;
33 private User user;
34 private int returnFormat;
35 private int pauseTime;
36 private String extendedStatus;
37 private boolean foregroundOperation;
38 private boolean crash;
39
40 public RandomNumbersJob(ManagerTracker MT, String jobName, User user, int returnFormat, int pauseTime, boolean crash) {
41 this.MT=MT;
42 this.jobName=jobName;
43 this.user=user;
44 this.percentage=0.0;
45 this.returnFormat=returnFormat;
46 this.pauseTime=pauseTime;
47 this.crash=crash;
48 status=JobManager.JOB_UNINITIALIZED;
49 }
50
51 private void crash() throws UserException{
52 Vector a = null;
53 try {
54 a.addElement("Uh-oh, Nullpointer exception!");
55 } catch (Exception e) {
56 throw new UserException("Oh my goodness, we crashed!",e);
57 }
58 }
59
60 public JobResult execute() throws Exception {
61
62 //Attach this job to a UserID for tracking
63 JobMembership jm = new JobMembership(user.getUserID(), new Integer(jobID));
64 jm.insert(MT);
65
66 status=JobManager.JOB_RUNNING;
67 extendedStatus="Initalizing";
68
69 Vector randomNumbers = new Vector();
70 for (int i=0;i<25;i++) {
71 extendedStatus="Calculating Random Number "+Integer.toString(i);
72 if (i>10 && crash) {
73 crash();
74 }
75 percentage=percentage+.04;
76 randomNumbers.addElement(new Integer((int)(Math.random()*1000)));
77 Thread.sleep(pauseTime);
78 }
79
80 jobResult = new JobResult();
81
82 TemplatePage mainPage;
83 TemplatePage row;
84
85 if (returnFormat==JobMembership.RETURN_TYPE_MS_WORD) {
86 mainPage = MT.getPM().getPage("Jobs.RandomNumbers.doc");
87 row = MT.getPM().getPage("Jobs.RandomNumbers_Row.doc");
88 jobResult.setFilename("randomnumbers.doc");
89 jobResult.setResultTypeID(JobMembership.RETURN_TYPE_MS_WORD);
90 } else if (returnFormat==JobMembership.RETURN_TYPE_MS_EXCEL) {
91 row= MT.getPM().getPage("Jobs.RandomNumbers_Row.xls");
92 mainPage= MT.getPM().getPage("Jobs.RandomNumbers.xls");
93 jobResult.setFilename("randomnumbers.xls");
94 jobResult.setResultTypeID(JobMembership.RETURN_TYPE_MS_EXCEL);
95 } else if (returnFormat==JobMembership.RETURN_TYPE_HTML) {
96 row=MT.getPM().getPage("Jobs.RandomNumbers_Row.html");
97 mainPage= MT.getPM().getPage("Jobs.RandomNumbers.html");
98 jobResult.setResultTypeID(JobMembership.RETURN_TYPE_HTML);
99 } else {
100 row=MT.getPM().getPage("Jobs.RandomNumbers_Row.txt");
101 mainPage=MT.getPM().getPage("Jobs.RandomNumbers.txt");
102 jobResult.setResultTypeID(JobMembership.RETURN_TYPE_TEXT);
103 }
104
105
106 StringBuffer sb = new StringBuffer();
107 Hashtable RT = new Hashtable();
108 int i=0;
109 for (Enumeration e = randomNumbers.elements();e.hasMoreElements();) {
110 i++;
111 RT.put("RandomNumber", e.nextElement());
112 RT.put("Count", new Integer(i));
113 sb.append(row.toString(RT, null));
114 }
115 RT=new Hashtable();
116 RT.put("RandomRows", sb);
117 jobResult.setResult(mainPage.toString(RT, null));
118
119 status=JobManager.JOB_FINISHED;
120 return jobResult;
121 }
122
123 public double getPercentage() {
124 return percentage;
125 }
126
127 public int getStatusID() {
128 return status;
129 }
130
131 public void setStatusID(int statusID) {
132 this.status=statusID;
133 }
134 public JobResult getJobResult() {
135 return jobResult;
136 }
137
138 public void setJobID(int jobID) {
139 this.jobID=jobID;
140 }
141
142 public int getJobID() {
143 return jobID;
144 }
145
146 public String getJobName() {
147 return jobName;
148 }
149
150 public String getError() {
151 return error;
152 }
153 public void setError(String error) {
154 this.error=error;
155 }
156 public Date getStartDate() {
157 return startDate;
158 }
159
160 public String getExtendedStatus() {
161 return extendedStatus;
162 }
163
164 public void setStartDate(Date startDate) {
165 this.startDate=startDate;
166 }
167 }