package mircoders.global;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.ArrayList;
import mir.log.LoggerWrapper;
lastCleanup = 0;
jobCleanupTreshold = 900; // seconds
queueRunner = new JobQueueRunner(logger);
- thread = new Thread(queueRunner);
+ thread = new Thread(queueRunner, "JobQueue");
thread.setDaemon(true);
thread.start();
}
public String appendJob(Job aJob, String aDescription) {
try {
- if (System.currentTimeMillis() - lastCleanup > 60000)
+ if (System.currentTimeMillis() - lastCleanup > 60000) {
cleanupJobList();
+ }
}
catch (Throwable t) {
logger.error("error while cleaning up joblist: " + t.toString());
synchronized (jobHandlers) {
JobHandler jobHandler = new JobHandler(aJob, Integer.toString(nrJobs), aDescription);
nrJobs++;
+
jobHandlers.add(jobHandler);
identifierToJobHandler.put(jobHandler.getIdentifier(), jobHandler);
+
jobHandler.setPending();
jobHandlers.notify();
}
public List getJobsInfo() {
+ if (System.currentTimeMillis() - lastCleanup > 60000) {
+ cleanupJobList();
+ }
+
List result = new ArrayList();
synchronized (jobHandlers) {
synchronized (jobHandler) {
if (jobHandler.isFinished() && jobHandler.getLastChange().before(treshold)) {
toRemove.add(jobHandler);
+ identifierToJobHandler.remove(jobHandler.getIdentifier());
}
}
}
else
setAborted();
}
- };
+ }
private void cancelOrAbortJob() {
synchronized (this) {
if (isProcessing())
job.abort();
}
- };
+ }
public int getStatus() {
synchronized(this) {
}
return true;
}
- else {
- return false;
- }
+ return false;
}
}
}
private class JobQueueRunner implements Runnable {
- private LoggerWrapper logger;
-
+
public JobQueueRunner(LoggerWrapper aLogger) {
logger = aLogger;
}