Author: echatellier Date: 2012-03-25 21:28:19 +0200 (Sun, 25 Mar 2012) New Revision: 2839 Url: http://chorem.org/repositories/revision/jtimer/2839 Log: Simplify time tracking algorithm. Init offset with task initial time. Modified: trunk/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java Modified: trunk/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java =================================================================== --- trunk/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-25 13:18:14 UTC (rev 2838) +++ trunk/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-25 19:28:19 UTC (rev 2839) @@ -79,9 +79,6 @@ /** Already thrown alert. */ protected Collection<TimerAlert> alreadyTrownAlerts; - /** The today total task time at start time. */ - protected long taskTimingBeforeStartInMs; - /** Calendar instance when timing start. */ protected Calendar taskStartCalendar; @@ -187,11 +184,10 @@ long localIncrement = increment; // do go over 0 - if (taskTimingBeforeStartInMs + nowTimestamp - - taskStartCalendar.getTimeInMillis() + offsetTimeInMs - + increment < 0) { - localIncrement = -(taskTimingBeforeStartInMs + nowTimestamp - - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); + if (nowTimestamp - taskStartCalendar.getTimeInMillis() + + offsetTimeInMs + increment < 0) { + localIncrement = -(nowTimestamp - taskStartCalendar.getTimeInMillis() + + offsetTimeInMs); } offsetTimeInMs += localIncrement; @@ -207,8 +203,7 @@ taskStartCalendar = Calendar.getInstance(); lastPublishTimestamp = taskStartCalendar.getTimeInMillis(); // need to be this for hibernate in same day - taskTimingBeforeStartInMs = managedTask.getTime(new Date()) * 1000; - offsetTimeInMs = 0; + offsetTimeInMs = managedTask.getTime(new Date()) * 1000; } /** @@ -287,7 +282,7 @@ // update time without idle time // math.min > for idle detected at 0:00 offsetTimeInMs -= idleTimeOffset; - publish(taskTimingBeforeStartInMs + currentTime - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); + publish(currentTime - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); // send idle detect event JTimer parentApplication = (JTimer)getApplication(); @@ -315,8 +310,7 @@ // refresh time // remove idle time previously added offsetTimeInMs += idleTimeOffset; - publish(taskTimingBeforeStartInMs + afterIdleTime - - taskStartCalendar.getTimeInMillis() + publish(afterIdleTime - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); break; @@ -325,16 +319,15 @@ // resume = increment idle time offsetTimeInMs -= afterIdleTime - currentTime; // update time - publish(taskTimingBeforeStartInMs + afterIdleTime - - taskStartCalendar.getTimeInMillis() + publish(afterIdleTime - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); break; } } else { // pas de idle, met a jour le temps - publish(taskTimingBeforeStartInMs + currentTime - - taskStartCalendar.getTimeInMillis() + offsetTimeInMs); + publish(currentTime - taskStartCalendar.getTimeInMillis() + + offsetTimeInMs); } Thread.sleep(1000); // 1s
participants (1)
-
echatellier@users.chorem.org