Update of /var/cvs/applications/crontab/src/org/mmbase/applications/crontab
In directory james.mmbase.org:/tmp/cvs-serv7427

Modified Files:
        CronEntry.java Interruptable.java 
Log Message:
  MMB-1677


See also: 
http://cvs.mmbase.org/viewcvs/applications/crontab/src/org/mmbase/applications/crontab
See also: http://www.mmbase.org/jira/browse/MMB-1677


Index: CronEntry.java
===================================================================
RCS file: 
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/CronEntry.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- CronEntry.java      23 Feb 2007 10:52:10 -0000      1.10
+++ CronEntry.java      14 Jul 2008 13:51:36 -0000      1.11
@@ -18,7 +18,7 @@
  *
  * @author Kees Jongenburger
  * @author Michiel Meeuwissen
- * @version $Id: CronEntry.java,v 1.10 2007/02/23 10:52:10 michiel Exp $
+ * @version $Id: CronEntry.java,v 1.11 2008/07/14 13:51:36 michiel Exp $
  */
 
 public class CronEntry {
@@ -65,10 +65,12 @@
     private final String id;
     private final String name;
     private final String className;
-    private final String cronTime;
+    protected final String cronTime;
     private String configuration = null;
 
-    private int count = 0;
+    protected Date  lastRun = new Date(0);
+    protected int count = 0;
+    protected int lastCost = -1;
 
     private final CronEntryField second      = new CronEntryField(); // 0-59
     private final CronEntryField minute      = new CronEntryField(); // 0-59
@@ -162,12 +164,19 @@
     }
 
     public boolean kick() {
+        final Date start = new Date();
+        Runnable ready = new Runnable() {
+                public void run() {
+                    CronEntry.this.incCount();
+                    CronEntry.this.setLastCost((int) (new Date().getTime() - 
start.getTime()));
+                }
+            };
         switch (type) {
             case SHORT_JOB_TYPE :
                 {
-                    count++;
                     try {
-                        Interruptable thread = new Interruptable(cronJob, 
threads);
+                        setLastRun(new Date());
+                        Interruptable thread = new Interruptable(cronJob, 
threads, ready);
                         thread.run();
                     } catch (Throwable t) {
                         log.error("Error during cron-job " + this +" : " + 
t.getClass().getName() + " " + t.getMessage() + "\n" + Logging.stackTrace(t));
@@ -181,8 +190,8 @@
                 // fall through
             case CANBEMORE_JOB_TYPE :
             default :
-                count++;
-                Interruptable thread = new Interruptable(cronJob, threads);
+                setLastRun(start);
+                Interruptable thread = new Interruptable(cronJob, threads, 
ready);
                 org.mmbase.util.ThreadPools.jobsExecutor.execute(thread);
                 return true;
         }
@@ -228,6 +237,26 @@
     public String getClassName() {
         return className;
     }
+    public Date getLastRun() {
+        return lastRun;
+    }
+
+    protected void setLastRun(Date d) {
+        lastRun = d;
+        setLastCost(-1);
+    }
+    public int getCount() {
+        return count;
+    }
+    protected void incCount() {
+        count++;
+    }
+    public int getLastCost() {
+        return lastCost;
+    }
+    protected void setLastCost(int s) {
+        lastCost = s;
+    }
 
     boolean mustRun(Date date) {
         String machineName = MMBase.getMMBase().getMachineName();


Index: Interruptable.java
===================================================================
RCS file: 
/var/cvs/applications/crontab/src/org/mmbase/applications/crontab/Interruptable.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- Interruptable.java  11 Jun 2007 12:30:53 -0000      1.4
+++ Interruptable.java  14 Jul 2008 13:51:36 -0000      1.5
@@ -15,7 +15,7 @@
  * if the job does sleeps (InterruptedException) or check 
Thread.isInterrupted().
  * @author Michiel Meeuwissen
  * @since MMBase-1.8
- * @version $Id: Interruptable.java,v 1.4 2007/06/11 12:30:53 michiel Exp $
+ * @version $Id: Interruptable.java,v 1.5 2008/07/14 13:51:36 michiel Exp $
  */
 
 public class Interruptable implements Runnable {
@@ -24,15 +24,21 @@
     private Date   startTime;
     private final Runnable runnable;
     private final Collection<Interruptable> collection;
+    private final Runnable ready;
 
+
+    public Interruptable(Runnable run, Collection<Interruptable>  col) {
+        this(run, col, null);
+    }
     /**
      * @param run The runnable wrapped by this Interrupted, which is to be 
executed in [EMAIL PROTECTED] #run}.
      * @param col A modifiable collection or <code>null</code> If not null, 
this interruptable is
      *            added to it just before running, and removed from it just 
after running.  
      */
-    public Interruptable(Runnable run, Collection<Interruptable> col) {
+    public Interruptable(Runnable run, Collection<Interruptable> col, Runnable 
r) {
         runnable = run;
         collection = col;
+        ready = r;
     }
 
     public void run() {
@@ -42,6 +48,7 @@
         startTime = new Date();
         try {
             runnable.run();
+            if (ready != null) ready.run();
         } catch (Throwable t) {
             log.error(t.getMessage(), t);
         }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to