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