From b171d46ce07a9ed9a426779fcff92dd1f56b3dd1 Mon Sep 17 00:00:00 2001 From: Keuin Date: Mon, 15 Feb 2021 18:13:44 +0800 Subject: Minor bugfix: incremental backup without `backups` directory created will fail. --- .../autobackup/AutoBackupDispatcher.java | 50 ++++++++++++++++++++++ .../autobackup/AutoBackupScheduler.java | 50 ---------------------- 2 files changed, 50 insertions(+), 50 deletions(-) create mode 100644 src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupDispatcher.java delete mode 100644 src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupScheduler.java (limited to 'src/main/java/com/keuin/kbackupfabric/autobackup') diff --git a/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupDispatcher.java b/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupDispatcher.java new file mode 100644 index 0000000..32d626e --- /dev/null +++ b/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupDispatcher.java @@ -0,0 +1,50 @@ +package com.keuin.kbackupfabric.autobackup; + +import java.util.Optional; +import java.util.Timer; +import java.util.TimerTask; +import java.util.logging.Logger; + +public class AutoBackupDispatcher { + + private Timer timer = null; + private final Logger logger = Logger.getLogger(AutoBackupDispatcher.class.getName()); + private boolean skipIfNoPlayerLoggedIn; + private final PlayerActivityTracker playerActivityTracker; + + public AutoBackupDispatcher(int intervalSeconds, boolean skipIfNoPlayerLoggedIn, PlayerActivityTracker playerActivityTracker) { + this.skipIfNoPlayerLoggedIn = skipIfNoPlayerLoggedIn; + this.playerActivityTracker = playerActivityTracker; + if (intervalSeconds > 0) + setInterval(intervalSeconds); + } + + public synchronized void setInterval(int intervalSeconds) { + Optional.ofNullable(timer).ifPresent(Timer::cancel); + Timer newTimer = new Timer("AutoBackupTimer"); + newTimer.schedule(new TimerTask() { + @Override + public void run() { + toggleBackup(); + } + }, 0L, intervalSeconds * 1000L); + timer = newTimer; + } + + public void setSkipIfNoPlayerLoggedIn(boolean skipIfNoPlayerLoggedIn) { + this.skipIfNoPlayerLoggedIn = skipIfNoPlayerLoggedIn; + } + + public synchronized void stop() { + timer.cancel(); + timer = null; + } + + private void toggleBackup() { + if (playerActivityTracker.getCheckpoint() || !skipIfNoPlayerLoggedIn) { + logger.info("Interval backup event is triggered."); + // TODO: perform a backup + } + } + +} diff --git a/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupScheduler.java b/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupScheduler.java deleted file mode 100644 index c35a35d..0000000 --- a/src/main/java/com/keuin/kbackupfabric/autobackup/AutoBackupScheduler.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.keuin.kbackupfabric.autobackup; - -import java.util.Optional; -import java.util.Timer; -import java.util.TimerTask; -import java.util.logging.Logger; - -public class AutoBackupScheduler { - - private Timer timer = null; - private final Logger logger = Logger.getLogger(AutoBackupScheduler.class.getName()); - private boolean skipIfNoPlayerLoggedIn; - private final PlayerActivityTracker playerActivityTracker; - - public AutoBackupScheduler(int intervalSeconds, boolean skipIfNoPlayerLoggedIn, PlayerActivityTracker playerActivityTracker) { - this.skipIfNoPlayerLoggedIn = skipIfNoPlayerLoggedIn; - this.playerActivityTracker = playerActivityTracker; - if (intervalSeconds > 0) - setInterval(intervalSeconds); - } - - public synchronized void setInterval(int intervalSeconds) { - Optional.ofNullable(timer).ifPresent(Timer::cancel); - Timer newTimer = new Timer("AutoBackupTimer"); - newTimer.schedule(new TimerTask() { - @Override - public void run() { - toggleBackup(); - } - }, 0L, intervalSeconds * 1000L); - timer = newTimer; - } - - public void setSkipIfNoPlayerLoggedIn(boolean skipIfNoPlayerLoggedIn) { - this.skipIfNoPlayerLoggedIn = skipIfNoPlayerLoggedIn; - } - - public synchronized void stop() { - timer.cancel(); - timer = null; - } - - private void toggleBackup() { - if (playerActivityTracker.getCheckpoint() || !skipIfNoPlayerLoggedIn) { - logger.info("Interval backup event is triggered."); - // TODO: perform a backup - } - } - -} -- cgit v1.2.3