r2842 - in branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer: . data entities io ui ui/alert ui/report ui/tasks ui/treetable ui/widget
Author: echatellier Date: 2012-03-27 11:35:07 +0200 (Tue, 27 Mar 2012) New Revision: 2842 Url: http://chorem.org/repositories/revision/jtimer/2842 Log: Move internal task storage from seconds to milli-seconds for new time tracking algorithm Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/JTimer.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/data/TimerDataManager.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerAlert.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerTask.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/StatusBar.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/TimerTaskEditor.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/alert/AlertTableModel.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/report/ReportUtils.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksModel.java branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/widget/DurationEditor.java Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/JTimer.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/JTimer.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/JTimer.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -937,7 +937,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void increment5Task() { - incrementTaskTime(5 * 60); + incrementTaskTime(5 * 60000); } /** @@ -945,7 +945,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void increment30Task() { - incrementTaskTime(30 * 60); + incrementTaskTime(30 * 60000); } /** @@ -953,7 +953,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void decrement1Task() { - incrementTaskTime(-60); + incrementTaskTime(-60000); } /** @@ -961,7 +961,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void decrement5Task() { - incrementTaskTime(-5 * 60); + incrementTaskTime(-5 * 60000); } /** @@ -969,7 +969,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void decrement30Task() { - incrementTaskTime(-30 * 60); + incrementTaskTime(-30 * 60000); } /** @@ -977,7 +977,7 @@ */ @Action(enabledProperty = "selectedSingleTask") public void increment1Task() { - incrementTaskTime(60); + incrementTaskTime(60000); } /** @@ -985,37 +985,29 @@ * * To decrement, set negative increment:) * - * @param increment increment in seconds + * @param increment increment in ms */ protected void incrementTaskTime(long increment) { TimerTask selectedTask = projectsAndTasksTable.getSelectedTasks() .get(0); - // check if task is running - RunTaskJob job = getJobForRunningTask(selectedTask); - if (job != null) { - // task is running - // increment is in seconds !!! - job.incrementTaskTime(increment * 1000); - } else { - // task is not running - Date now = new Date(); - long todayTime = selectedTask.getTime(now); + // task is not running + Date now = new Date(); + long todayTime = selectedTask.getTime(now); - long newTodayTime = todayTime + increment; + long newTodayTime = todayTime + increment; - try { - // check if + negative increment still positive - if (newTodayTime > 0) { - core.getData().changeTaskTime(selectedTask, now, - newTodayTime); - } else { - // force to 0 - core.getData().changeTaskTime(selectedTask, now, 0L); - } - } catch (DataViolationException e) { - displayErrorMessage(e.getExceptionKey()); + try { + // check if + negative increment still positive + if (newTodayTime > 0) { + core.getData().changeTaskTime(selectedTask, now, + newTodayTime); + } else { + // force to 0 + core.getData().changeTaskTime(selectedTask, now, 0L); } + } catch (DataViolationException e) { + displayErrorMessage(e.getExceptionKey()); } } Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/data/TimerDataManager.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/data/TimerDataManager.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/data/TimerDataManager.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -189,7 +189,7 @@ * * @param task the task to change time * @param date date to change time - * @param value new time in seconds + * @param value new time in ms */ public synchronized void changeTaskTime(TimerTask task, Date date, long value) { @@ -429,18 +429,18 @@ while (itDataEventListener.hasNext()) { itDataEventListener.next().preMergeTasks(destinationTask, otherTasks); } - + for (TimerTask otherTask : otherTasks) { mergeTwoTasks(destinationTask, otherTask); } - + // send post notification itDataEventListener = dataEventListeners.iterator(); while (itDataEventListener.hasNext()) { itDataEventListener.next().postMergeTasks(destinationTask, otherTasks); } } - + /** * Merge two task together. * @@ -454,7 +454,7 @@ } // task is modified during merge, deep clone it - + // make sub task list copy (concurrency) Collection<TimerTask> otherTaskSubTasks = new ArrayList<TimerTask>(otherTask.getSubTasks()); for (TimerTask otherTaskSubTask : otherTaskSubTasks) { @@ -467,7 +467,7 @@ sameTaskNameTask = destSubTask; } } - + // no similar task found if (sameTaskNameTask == null) { if (log.isDebugEnabled()) { @@ -488,14 +488,14 @@ // TODO possible bug here, task times may not be saved } } - + // copy otherTask times to current task for (Entry<Date, Long> times : otherTask.getAllDaysAndTimes().entrySet()) { Long currentDuration = destinationTask.getTime(times.getKey()); currentDuration += times.getValue(); destinationTask.setTime(times.getKey(), currentDuration); } - + // copy annotations for (Entry<Date, String> note : otherTask.getAllDaysAnnotations().entrySet()) { Date noteKey = note.getKey(); @@ -513,17 +513,17 @@ } destinationTask.addAnnotation(noteKey, note.getValue()); } - + // copy alerts for (TimerAlert alert : otherTask.getAlerts()) { destinationTask.addAlert(alert); } - + // finally otherTask still exist // empty, but still exist deleteTask(otherTask); } - + /** * Add annotation on task for specified calendar, and send event. * Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerAlert.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerAlert.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerAlert.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -52,7 +52,7 @@ /** Alert type. */ protected Type type; - /** Alert duration. (in seconds) */ + /** Alert duration. (in ms) */ protected long duration; /** Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerTask.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerTask.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/entities/TimerTask.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -72,7 +72,7 @@ protected TimerTask parent; /** - * Map calendar of day -> time. (ordered on keys) + * Map calendar of day -> time (ms). (ordered on keys) */ protected SortedMap<Date, Long> allDaysTimes; @@ -240,20 +240,18 @@ /** * Add time. * - * Calendar will be forced to 0h00:00.000 - * * @param date date - * @param seconds seconds + * @param time time in ms */ - public void setTime(Date date, Long seconds) { - allDaysTimes.put(date, seconds); + public void setTime(Date date, Long time) { + allDaysTimes.put(date, time); } /** * Get time at date. * * @param date date - * @return time at specified date + * @return time at specified date in ms */ public long getTime(Date date) { long result = 0; Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -512,7 +512,7 @@ try { Date keyDate = GTimerTimeUtil.yyyyMMdd2Date(sKey); String timeString = (String) prop.get(sKey); - t.setTime(keyDate, Long.valueOf(timeString)); + t.setTime(keyDate, Long.valueOf(timeString) * 1000); } catch (NumberFormatException e) { if (log.isErrorEnabled()) { log.error("Can't convert " + prop.get(sKey) @@ -642,12 +642,12 @@ try { if ("reachtotaltime".equals(alertType)) { - Long duration = Long.parseLong(alertDuration); + Long duration = Long.parseLong(alertDuration) * 1000; TimerAlert alert = new TimerAlert( TimerAlert.Type.REACH_TOTAL_TIME, duration); task.addAlert(alert); } else if ("reachdailytime".equals(alertType)) { - Long duration = Long.parseLong(alertDuration); + Long duration = Long.parseLong(alertDuration) * 1000; TimerAlert alert = new TimerAlert( TimerAlert.Type.REACH_DAILY_TIME, duration); task.addAlert(alert); @@ -1004,9 +1004,9 @@ for (Entry<Date, Long> entry : task.getAllDaysAndTimes().entrySet()) { Date date = entry.getKey(); + long value = entry.getValue() / 1000; String gtimerDate = GTimerTimeUtil.date2yyyyMMdd(date); - - out.write(gtimerDate + " " + entry.getValue() + "\n"); + out.write(gtimerDate + " " + value + "\n"); } out.close(); @@ -1104,7 +1104,7 @@ for (TimerAlert alert : task.getAlerts()) { Type type = alert.getType(); - long duration = alert.getDuration(); + long duration = alert.getDuration() / 1000; switch (type) { case REACH_DAILY_TIME: Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/StatusBar.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/StatusBar.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/StatusBar.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -118,7 +118,7 @@ } lblTime.setText(resourceMap .getString("todayTotalMessage", DurationFormatUtils - .formatDuration(duration * 1000, "HH:mm:ss"))); + .formatDuration(duration, "HH:mm:ss"))); } /* Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/TimerTaskEditor.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/TimerTaskEditor.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/TimerTaskEditor.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -574,7 +574,7 @@ long time = cloneTask.getTime(date); Calendar cal = Calendar.getInstance(); // FIXME me, not use a calendar here ! - cal.setTimeInMillis(time * 1000 - cal.get(Calendar.ZONE_OFFSET)); + cal.setTimeInMillis(time - cal.get(Calendar.ZONE_OFFSET)); spinnerH.setValue(cal.get(Calendar.HOUR_OF_DAY)); spinnerM.setValue(cal.get(Calendar.MINUTE)); @@ -629,7 +629,7 @@ long seconds = ((Integer) spinnerH.getValue() * 60 * 60) + ((Integer) spinnerM.getValue() * 60) + ((Integer) spinnerS.getValue()); - cloneTask.setTime(getSelectedDay().getTime(), seconds); + cloneTask.setTime(getSelectedDay().getTime(), seconds * 1000); // annotation if (isAnnotationChanged) { Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/alert/AlertTableModel.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/alert/AlertTableModel.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/alert/AlertTableModel.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -105,7 +105,7 @@ break; case 1: - result = alert.getDuration(); + result = alert.getDuration() / 1000; break; default: @@ -130,7 +130,7 @@ case 1: long duration = ((Long)value).longValue(); - alert.setDuration(duration); + alert.setDuration(duration * 1000); break; default: Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/report/ReportUtils.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/report/ReportUtils.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/report/ReportUtils.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -402,8 +402,7 @@ * @return formated duration */ public String formatDuration(long duration) { - String result = DurationFormatUtils.formatDuration(duration * 1000, - "HH:mm:ss"); + String result = DurationFormatUtils.formatDuration(duration, "HH:mm:ss"); return result; } Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/tasks/RunTaskJob.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -338,8 +338,7 @@ currentDuration = 0; } - dataManager.changeTaskTime(managedTask, new Date(), - currentDuration / 1000); + dataManager.changeTaskTime(managedTask, new Date(), currentDuration); checkTaskAlerts(managedTask); } Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksModel.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksModel.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/treetable/ProjectsAndTasksModel.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -155,11 +155,11 @@ break; case 1: value = DurationFormatUtils.formatDuration(TimerTaskHelper - .getTotalTime(task, new Date()) * 1000, "HH:mm:ss"); + .getTotalTime(task, new Date()), "HH:mm:ss"); break; case 2: value = DurationFormatUtils.formatDuration(TimerTaskHelper - .getAllTotalTime(task) * 1000, "HH:mm:ss"); + .getAllTotalTime(task), "HH:mm:ss"); break; } } else { Modified: branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/widget/DurationEditor.java =================================================================== --- branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/widget/DurationEditor.java 2012-03-26 13:00:47 UTC (rev 2841) +++ branches/1.4.0-ttalgo/src/main/java/org/chorem/jtimer/ui/widget/DurationEditor.java 2012-03-27 09:35:07 UTC (rev 2842) @@ -68,7 +68,7 @@ /** Second spinner model. */ protected SpinnerNumberModel secondSpinnerModel; - /** Duration. */ + /** Duration (in ms). */ protected long duration; /**
participants (1)
-
echatellier@users.chorem.org