crude producer queue listing added
authorzapata <zapata>
Sun, 9 Jun 2002 00:06:45 +0000 (00:06 +0000)
committerzapata <zapata>
Sun, 9 Jun 2002 00:06:45 +0000 (00:06 +0000)
source/mir/entity/adapter/EntityAdapterDefinition.java
source/mircoders/global/JobQueue.java
source/mircoders/global/ProducerEngine.java
source/mircoders/servlet/ServletModuleProducer.java

index 01c8b1b..87fd448 100755 (executable)
@@ -75,11 +75,8 @@ public class EntityAdapterDefinition {
           result=null;
         }
       }
-
       return result;
-
     }
-
   }
 
   private class DBDateField implements CalculatedField {
@@ -123,9 +120,7 @@ public class EntityAdapterDefinition {
       }
 
       return result;
-
     }
-
   }
 
   static protected Object getRelation(StorageObject aStorageObject, String aWhereClause, String anOrderByClause, EntityAdapterDefinition aDefinition) {
index 041094d..f60116f 100755 (executable)
@@ -5,7 +5,7 @@ import java.util.*;
 // important: objects passed as data must not be altered once put into a job
 
 public class JobQueue {
-  private List jobs;
+  private Vector jobs;
   private Map dataToJob;
 
   public static final int STATUS_PENDING = 0;
@@ -65,14 +65,23 @@ public class JobQueue {
     }
   }
 
-  public class Job {
+  public List makeJobListSnapshot() {
+    synchronized (jobs) {
+      return (List) jobs.clone();
+    }
+  }
+
+  public class Job implements Cloneable {
     private Object data;
     private int status;
-    private int identifier;
 
-    public Job(Object aData) {
+    public Job(Object aData, int aStatus) {
       data = aData;
-      status = STATUS_PENDING;
+      status = aStatus;
+    }
+
+    public Job(Object aData) {
+      this(aData, STATUS_PENDING);
     }
 
     public Object getData() {
@@ -85,11 +94,11 @@ public class JobQueue {
       }
     }
 
-    public boolean setProcessing() {
+    protected boolean setProcessing() {
       return setStatus(STATUS_PENDING, STATUS_PROCESSING);
     }
 
-    public void setProcessed() {
+    protected void setProcessed() {
       setStatus(STATUS_PROCESSING, STATUS_PROCESSED);
     }
 
@@ -97,6 +106,10 @@ public class JobQueue {
       return getStatus() == STATUS_PROCESSED;
     }
 
+    public boolean isProcessing() {
+      return getStatus() == STATUS_PROCESSING;
+    }
+
     public boolean isPending() {
       return getStatus() == STATUS_PENDING;
     }
@@ -113,6 +126,11 @@ public class JobQueue {
       }
     }
 
+    protected Object clone() {
+      synchronized(this) {
+        return new Job(data, status);
+      }
+    }
   }
 }
 
index b9c7fc6..52e9a2f 100755 (executable)
@@ -37,7 +37,26 @@ public class ProducerEngine {
   }
 
   public void printQueueStatus(PrintWriter aWriter) {
-
+    Iterator iterator = producerJobQueue.makeJobListSnapshot().iterator();
+    producerJobQueue.cleanupJobs();
+    JobQueue.Job job;
+
+    while (iterator.hasNext()) {
+      job = (JobQueue.Job) iterator.next();
+      ProducerJob producerJob = (ProducerJob) job.getData();
+
+      aWriter.print(producerJob.factoryName + "." + producerJob.verb);
+      if (job.hasBeenProcessed())
+        aWriter.print(" processed");
+      else if (job.isProcessing())
+        aWriter.print(" processing");
+      else if (job.isPending())
+        aWriter.print(" pending");
+      else
+        aWriter.print(" unknown status");
+
+      aWriter.println("<br/>");
+    }
   }
 
   private void produceNow(String aProducerFactory, String aVerb, PrintWriter aLogger) {
index 7c38a9d..cf03a62 100755 (executable)
@@ -48,6 +48,7 @@ public class ServletModuleProducer extends ServletModule
                        String verbParam = req.getParameter("verb");
 
                        MirGlobal.producerEngine().addJob(producerParam, verbParam);
+                       MirGlobal.producerEngine().printQueueStatus(out);
 
 //        ProducerFactory factory = (ProducerFactory) MirGlobal.localizer().producers().factories().get(producerParam);
 //        mir.producer.Producer producer = factory.makeProducer(verbParam);