Update of /var/cvs/src/org/mmbase/module/builders
In directory james.mmbase.org:/tmp/cvs-serv22280

Modified Files:
        DayMarkers.java 
Log Message:
  MMB-1676


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/module/builders
See also: http://www.mmbase.org/jira/browse/MMB-1676


Index: DayMarkers.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/builders/DayMarkers.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- DayMarkers.java     9 Jul 2008 13:50:44 -0000       1.47
+++ DayMarkers.java     9 Jul 2008 17:21:44 -0000       1.48
@@ -10,6 +10,7 @@
 package org.mmbase.module.builders;
 
 import java.util.*;
+import java.util.concurrent.*;
 import java.text.DateFormat;
 import org.mmbase.module.core.*;
 import org.mmbase.storage.search.implementation.*;
@@ -26,7 +27,7 @@
  *
  * @author Daniel Ockeloen,Rico Jansen
  * @author Michiel Meeuwissen
- * @version $Id: DayMarkers.java,v 1.47 2008/07/09 13:50:44 michiel Exp $
+ * @version $Id: DayMarkers.java,v 1.48 2008/07/09 17:21:44 michiel Exp $
  */
 public class DayMarkers extends MMObjectBuilder {
 
@@ -52,11 +53,12 @@
         }
     }
 
+    private ScheduledFuture future;
+
     /**
      * set the current day. This is the number of days from 1970.
      */
     public DayMarkers() {
-        day = currentDay();
     }
 
     /**
@@ -88,7 +90,18 @@
             log.error("SQL Exception " + e + ". Could not find smallestMarker, 
smallestDay");
             result = false;
         }
+        day = currentDay();
         createMarker();
+        Calendar now = Calendar.getInstance(mmb.getTimeZone(), 
mmb.getLocale());
+        future =  ThreadPools.scheduler.scheduleAtFixedRate(new Runnable() {
+                public void run() {
+                    day = currentDay();
+                    createMarker();
+                }
+            },
+            100 +  // shortly after
+            3600 * 24 - ((now.get(Calendar.HOUR_OF_DAY) * 60 + 
now.get(Calendar.MINUTE)) * 60 + now.get(Calendar.SECOND)),  // some effort to 
run shortly after midnight
+            3600 * 24, TimeUnit.SECONDS);
         return result;
     }
 
@@ -96,9 +109,13 @@
      * The current time in days since 1-1-1970
      */
     private int currentDay() {
-        return (int)(System.currentTimeMillis()/MILLISECONDS_IN_A_DAY);
+        Calendar now = Calendar.getInstance(mmb.getTimeZone(), 
mmb.getLocale());
+        return (int)((now.getTimeInMillis() + now.get(Calendar.ZONE_OFFSET)) / 
MILLISECONDS_IN_A_DAY);
     }
 
+    public void shutdown() {
+        future.cancel(true);
+    }
 
     /**
      * Creates a mark in the database, if necessary.
@@ -138,18 +155,6 @@
 
     }
 
-    /**
-     * This gets called every hour to see if the day has past.
-     */
-    public void probe() {
-        int newday;
-        newday=currentDay();
-        //debug("Days "+newday+" current "+day);
-        if (newday>day) {
-            day = newday;
-            createMarker();
-        }
-    }
 
 
     /**
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to