/*
* RandomNumbersJob.java
*
*/
package
org.projectapollo.demo.Jobs;
import apollo.Job.*;
import apollo.Template.*;
import apollo.*;
import java.util.*;
import
org.projectapollo.demo.Storable.*;
/**
*
* @author kislo
* @version
*/
public class
RandomNumbersJob implements
Job {
/** Creates new DemoJob
*/
private
double
percentage;
private
int
jobID;
private
String jobName;
private
String error;
private
JobResult jobResult;
private
int
status;
private
ManagerTracker MT;
private
Date startDate;
private
User user;
private
int
returnFormat;
private
int
pauseTime;
private
String extendedStatus;
private
boolean
foregroundOperation;
private
boolean
crash;
public
RandomNumbersJob(ManagerTracker MT, String jobName, User user, int
returnFormat, int
pauseTime, boolean
crash) {
this.MT=MT;
this.jobName=jobName;
this.user=user;
this.percentage=0.0;
this.returnFormat=returnFormat;
this.pauseTime=pauseTime;
this.crash=crash;
status=JobManager.JOB_UNINITIALIZED;
}
private
void
crash() throws
UserException{
Vector a = null;
try
{
a.addElement("Uh-oh,
Nullpointer exception!");
} catch
(Exception e) {
throw
new
UserException("Oh my
goodness, we crashed!",e);
}
}
public
JobResult execute() throws
Exception {
//Attach this job to a
UserID for tracking
JobMembership jm = new
JobMembership(user.getUserID(), new
Integer(jobID));
jm.insert(MT);
status=JobManager.JOB_RUNNING;
extendedStatus="Initalizing";
Vector randomNumbers = new
Vector();
for
(int
i=0;i<25;i++)
{
extendedStatus="Calculating
Random Number "+Integer.toString(i);
if
(i>10
&& crash) {
crash();
}
percentage=percentage+.04;
randomNumbers.addElement(new
Integer((int)(Math.random()*1000)));
Thread.sleep(pauseTime);
}
jobResult = new
JobResult();
TemplatePage mainPage;
TemplatePage row;
if
(returnFormat==JobMembership.RETURN_TYPE_MS_WORD) {
mainPage = MT.getPM().getPage("Jobs.RandomNumbers.doc");
row = MT.getPM().getPage("Jobs.RandomNumbers_Row.doc");
jobResult.setResultTypeID(JobMembership.RETURN_TYPE_MS_WORD);
} else
if
(returnFormat==JobMembership.RETURN_TYPE_MS_EXCEL) {
row= MT.getPM().getPage("Jobs.RandomNumbers_Row.xls");
mainPage= MT.getPM().getPage("Jobs.RandomNumbers.xls");
jobResult.setResultTypeID(JobMembership.RETURN_TYPE_MS_EXCEL);
} else
if
(returnFormat==JobMembership.RETURN_TYPE_HTML) {
row=MT.getPM().getPage("Jobs.RandomNumbers_Row.html");
mainPage= MT.getPM().getPage("Jobs.RandomNumbers.html");
jobResult.setResultTypeID(JobMembership.RETURN_TYPE_HTML);
} else
{
row=MT.getPM().getPage("Jobs.RandomNumbers_Row.txt");
mainPage=MT.getPM().getPage("Jobs.RandomNumbers.txt");
jobResult.setResultTypeID(JobMembership.RETURN_TYPE_TEXT);
}
StringBuffer sb = new
StringBuffer();
Hashtable RT = new
Hashtable();
int
i=0;
for
(Enumeration e = randomNumbers.elements();e.hasMoreElements();) {
i++;
RT.put("RandomNumber",
e.nextElement());
RT.put("Count",
new
Integer(i));
sb.append(row.toString(RT, null));
}
RT=new
Hashtable();
RT.put("RandomRows",
sb);
jobResult.setResult(mainPage.toString(RT, null));
status=JobManager.JOB_FINISHED;
return
jobResult;
}
public
double
getPercentage() {
return
percentage;
}
public
int
getStatusID() {
return
status;
}
public
void
setStatusID(int
statusID) {
this.status=statusID;
}
public
JobResult getJobResult() {
return
jobResult;
}
public
void
setJobID(int
jobID) {
this.jobID=jobID;
}
public
int
getJobID() {
return
jobID;
}
public
String getJobName() {
return
jobName;
}
public
String getError() {
return
error;
}
public
void
setError(String error) {
this.error=error;
}
public
Date getStartDate() {
return
startDate;
}
public
String getExtendedStatus() {
return
extendedStatus;
}
public
void
setStartDate(Date startDate) {
this.startDate=startDate;
}
}