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++;