merged 1.1 branch into head
[mir.git] / source / mircoders / global / JobQueue.java
index 326f702..99ffed7 100755 (executable)
@@ -31,6 +31,7 @@
 package mircoders.global;
 
 
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -38,7 +39,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.ArrayList;
 
 import mir.log.LoggerWrapper;
 
@@ -75,15 +75,16 @@ public class JobQueue {
     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());
@@ -92,8 +93,10 @@ public class JobQueue {
     synchronized (jobHandlers) {
       JobHandler jobHandler = new JobHandler(aJob, Integer.toString(nrJobs), aDescription);
       nrJobs++;
+
       jobHandlers.add(jobHandler);
       identifierToJobHandler.put(jobHandler.getIdentifier(), jobHandler);
+
       jobHandler.setPending();
 
       jobHandlers.notify();
@@ -103,6 +106,10 @@ public class JobQueue {
   }
 
   public List getJobsInfo() {
+    if (System.currentTimeMillis() - lastCleanup > 60000) {
+      cleanupJobList();
+    }
+
     List result = new ArrayList();
 
     synchronized (jobHandlers) {
@@ -132,6 +139,7 @@ public class JobQueue {
         synchronized (jobHandler) {
           if (jobHandler.isFinished() && jobHandler.getLastChange().before(treshold)) {
             toRemove.add(jobHandler);
+            identifierToJobHandler.remove(jobHandler.getIdentifier());
           }
         }
       }
@@ -283,7 +291,7 @@ public class JobQueue {
         else
           setAborted();
       }
-    };
+    }
 
     private void cancelOrAbortJob() {
       synchronized (this) {
@@ -292,7 +300,7 @@ public class JobQueue {
         if (isProcessing())
           job.abort();
       }
-    };
+    }
 
     public int getStatus() {
       synchronized(this) {
@@ -394,16 +402,13 @@ public class JobQueue {
           }
           return true;
         }
-        else {
-          return false;
-        }
+                               return false;
       }
     }
   }
 
   private class JobQueueRunner implements Runnable {
-    private LoggerWrapper logger;
-
+    
     public JobQueueRunner(LoggerWrapper aLogger) {
       logger = aLogger;
     }