This is an automated email from the git hooks/post-receive script. New commit to branch feature/sync in repository jtimer. See https://gitlab.nuiton.org/chorem/jtimer.git commit d8f9541cc0b5af29ce312d48fc73b0c31d6d86df Author: servantie <servantie.c@gmail.com> Date: Wed Jun 29 11:58:27 2016 +0200 adding a lastSync at the exit of jtimer (syncs the tasks that have been added to the synchronizer for one last time) --- .../java/org/chorem/jtimer/data/TimerCore.java | 3 +- .../chorem/jtimer/io/GTimerIncrementalSaver.java | 4 +- .../chorem/jtimer/io/TimerTaskSynchronizer.java | 58 +++++++++++++++++----- .../jtimer/ui/report/TimerTaskUpdaterView.java | 1 - 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/chorem/jtimer/data/TimerCore.java b/src/main/java/org/chorem/jtimer/data/TimerCore.java index 52e8b97..6abe227 100644 --- a/src/main/java/org/chorem/jtimer/data/TimerCore.java +++ b/src/main/java/org/chorem/jtimer/data/TimerCore.java @@ -201,7 +201,8 @@ public class TimerCore { if (log.isInfoEnabled()) { log.info("Exiting application"); } - + //try one last sync + synchronizer.lastSync(); // unlock fs directory try { saver.unlock(); diff --git a/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java b/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java index ccf75c7..29cb502 100644 --- a/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java +++ b/src/main/java/org/chorem/jtimer/io/GTimerIncrementalSaver.java @@ -636,7 +636,7 @@ public class GTimerIncrementalSaver extends AbstractSaver implements Saver, } //else if there is lastSyncTime else if (urlArray.length == 3) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); LocalDateTime date = null; try { date = LocalDateTime.parse(urlArray[2], formatter); @@ -1185,7 +1185,7 @@ public class GTimerIncrementalSaver extends AbstractSaver implements Saver, //write lastsync (HH:MM:SS) if (sync.getLastSync() != null && sync.getLastSync().isAfter(LocalDateTime.MIN)) { //remove the milliseconds - String syncString = sync.getLastSync().toString().substring(0, sync.getLastSync().toString().length()-4); + String syncString = sync.getLastSync().toString(); out.write(syncString + "\n"); } else { diff --git a/src/main/java/org/chorem/jtimer/io/TimerTaskSynchronizer.java b/src/main/java/org/chorem/jtimer/io/TimerTaskSynchronizer.java index 45eb6bb..836cb91 100644 --- a/src/main/java/org/chorem/jtimer/io/TimerTaskSynchronizer.java +++ b/src/main/java/org/chorem/jtimer/io/TimerTaskSynchronizer.java @@ -25,7 +25,8 @@ public class TimerTaskSynchronizer implements DataEventListener { private static Log log = LogFactory.getLog(TimerTaskSynchronizer.class); /** auto sync delay */ - protected long autoSyncDelay = 1000 * 10L; //every 2 hours, check for modifications to sync + //every hour, check for modifications to sync + protected long autoSyncDelay = 1000 * 20L; /** timer to schedule syncs */ protected Timer timer; @@ -68,6 +69,16 @@ public class TimerTaskSynchronizer implements DataEventListener { } /** + * Synchronizes tasks that have been modified + */ + public void lastSync() { + log.info("Synchronizing at exit"); + for (TimerTask task : tasksToSync) { + synchronizeSingleTask(task); + } + } + + /** * Inner Task class to make the automatic sync */ protected class UpdateTask extends java.util.TimerTask { @@ -127,15 +138,10 @@ public class TimerTaskSynchronizer implements DataEventListener { if (successfulSync) { if (log.isDebugEnabled()) { log.debug("Sync successful on " + syncURL); + log.debug(LocalDateTime.now()); } task.setLastSync(LocalDateTime.now(), syncURL); } - //-> do not change last sync time - else { - if (log.isDebugEnabled()) { - log.debug("Sync failed on " + syncURL); - } - } } } @@ -167,23 +173,23 @@ public class TimerTaskSynchronizer implements DataEventListener { upDateValue = connection.getResponseCode(); } catch (MalformedURLException e) { if (log.isErrorEnabled()) { - log.error("URL malformed : " + syncURL); + log.error("URL malformed : " + syncURL + " Code : " + upDateValue); } } catch (ProtocolException e) { if (log.isErrorEnabled()) { - log.error("Protocol error."); + log.error("Protocol error."+ " Code : " + upDateValue); } } catch (UnsupportedEncodingException e) { if (log.isErrorEnabled()) { - log.error("Problem with encoding " + syncURL); + log.error("Problem with encoding " + syncURL + " Code : " + upDateValue); } } catch (IOException e) { if (log.isErrorEnabled()) { - log.error("Problem with the connection " + syncURL); + log.error("Problem with the connection " + syncURL + " Code : " + upDateValue); } }catch (IllegalArgumentException e) { if (log.isErrorEnabled()) { - log.error("Port value not valid " + syncURL); + log.error("Port value not valid " + syncURL + " Code : " + upDateValue); } } return upDateValue; @@ -238,8 +244,20 @@ public class TimerTaskSynchronizer implements DataEventListener { } + /** + * When the time is modified, the task is added to the sync list + * @param task task where time is changed + * @param date date + * @param time task time + */ @Override public void setTaskTime(TimerTask task, Date date, Long time) { + if (!tasksToSync.contains(task)) { + //add it only if the URL is not empty + if ((task.getSynchronizingURLList() != null) && !(task.getSynchronizingURLList().isEmpty())) { + tasksToSync.add(task); + } + } } @Override @@ -267,8 +285,19 @@ public class TimerTaskSynchronizer implements DataEventListener { } + /** + * Tasks are added to synchronization list when started + * @param task started task + */ + @Override public void startTask(TimerTask task) { + if (!tasksToSync.contains(task)) { + //add it only if the URL is not empty + if ((task.getSynchronizingURLList() != null) && !(task.getSynchronizingURLList().isEmpty())) { + tasksToSync.add(task); + } + } } /** * Tasks are added to synchronization list when stopped @@ -289,6 +318,11 @@ public class TimerTaskSynchronizer implements DataEventListener { } + /** + * When the syncInfo is changed, add the task to sync list + * @param task the task to sync + * @param syncURL the url to sync on (a String) + */ @Override public void changeSyncInfo(TimerTask task, String syncURL) { if (!tasksToSync.contains(task)) { diff --git a/src/main/java/org/chorem/jtimer/ui/report/TimerTaskUpdaterView.java b/src/main/java/org/chorem/jtimer/ui/report/TimerTaskUpdaterView.java index 99612fd..01a945f 100644 --- a/src/main/java/org/chorem/jtimer/ui/report/TimerTaskUpdaterView.java +++ b/src/main/java/org/chorem/jtimer/ui/report/TimerTaskUpdaterView.java @@ -441,7 +441,6 @@ public class TimerTaskUpdaterView extends FrameView implements DocumentListener, /** * Active sync checkbox checked, activates sync - * todo: solve problem of not showing up as ticked */ @Action public boolean isActiveSync() { -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.