From 7a08343304d8ffd3b26cd052d2ee96735f9efedb Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Sat, 7 Dec 2013 13:18:14 +0100 Subject: [PATCH] Actually keep all weeks, not just from the past year Week numbers are obviously the same every year, we need to check the year as well as the week number to determine if we should keep the backup file or not. --- Changelog.txt | 1 + .../runnables/backups/CleanBackupsTask.java | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 5e10d8721..86828a393 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -23,6 +23,7 @@ Version 1.4.08-dev = Fixed bug which prevented players from gaining Acrobatics XP when the setting 'Prevent_XP_After_Teleport' was set to false = Fixed bug where cooldown donor perks were reducing more than expected = Fixed bug where disabling hardcore mode for specific skills didn't work + = Fixed bug which caused the backup cleanup to delete old backups while it should've kept those ! Updated localization files ! Changed AxesCritical to CriticalHit in config file ! Changed several secondary ability permissions(deprecated versions still exist) diff --git a/src/main/java/com/gmail/nossr50/runnables/backups/CleanBackupsTask.java b/src/main/java/com/gmail/nossr50/runnables/backups/CleanBackupsTask.java index 5ba7215ee..c27db6783 100644 --- a/src/main/java/com/gmail/nossr50/runnables/backups/CleanBackupsTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/backups/CleanBackupsTask.java @@ -6,13 +6,14 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.concurrent.TimeUnit; import org.bukkit.scheduler.BukkitRunnable; -import com.gmail.nossr50.config.Config; import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.config.Config; public class CleanBackupsTask extends BukkitRunnable { private static final String BACKUP_DIRECTORY = mcMMO.getMainDirectory() + "backup" + File.separator; @@ -21,7 +22,7 @@ public class CleanBackupsTask extends BukkitRunnable { @Override public void run() { List savedDays = new ArrayList(); - List savedWeeks = new ArrayList(); + HashMap> savedYearsWeeks = new HashMap>(); List toDelete = new ArrayList(); int amountTotal = 0; int amountDeleted = 0; @@ -51,20 +52,29 @@ public class CleanBackupsTask extends BukkitRunnable { cal.setTime(date); int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR); + int year = cal.get(Calendar.YEAR); if (isPast24Hours(date) && Config.getInstance().getKeepLast24Hours()) { // Keep all files from the last 24 hours continue; } - else if (isLastWeek(date) && !savedDays.contains(dayOfWeek) && Config.getInstance().getKeepDailyLastWeek()) { + else if (isLastWeek(date) && !savedDays.contains(dayOfWeek) && Config.getInstance().getKeepDailyLastWeek()) { // Keep daily backups of the past week savedDays.add(dayOfWeek); continue; } - else if (!savedWeeks.contains(weekOfYear) && Config.getInstance().getKeepWeeklyPastMonth()) { - // Keep one backup of each week - savedWeeks.add(weekOfYear); - continue; + else { + List savedWeeks = savedYearsWeeks.get(year); + if (savedWeeks == null) { + savedWeeks = new ArrayList(); + savedYearsWeeks.put(year, savedWeeks); + } + + if (!savedWeeks.contains(weekOfYear) && Config.getInstance().getKeepWeeklyPastMonth()) { + // Keep one backup of each week + savedWeeks.add(weekOfYear); + continue; + } } amountDeleted++;