From d55f66f868858bd1f87da0092788d159c405e54e Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 8 Aug 2021 11:09:36 -0700 Subject: [PATCH] No save on disable (#231) * Release 2.6.4 * Remove saving to database on disable. https://github.com/BentoBoxWorld/Level/issues/229 First, the top ten tables are never actually used or loaded. They are created in memory by loading the island levels. So there is no reason to keep saving them. Second, the island level data is saved every time it is changed, so there is no need to save all of the cache on exit. * Fixes tests --- src/main/java/world/bentobox/level/Level.java | 5 ---- .../world/bentobox/level/LevelsManager.java | 28 ++----------------- .../bentobox/level/LevelsManagerTest.java | 12 ++------ 3 files changed, 4 insertions(+), 41 deletions(-) diff --git a/src/main/java/world/bentobox/level/Level.java b/src/main/java/world/bentobox/level/Level.java index cd790bc..6e2b287 100644 --- a/src/main/java/world/bentobox/level/Level.java +++ b/src/main/java/world/bentobox/level/Level.java @@ -275,11 +275,6 @@ public class Level extends Addon implements Listener { public void onDisable() { // Stop the pipeline this.getPipeliner().stop(); - // Save player data and the top tens - if (manager != null) { - manager.save(); - } - } private void loadBlockSettings() { diff --git a/src/main/java/world/bentobox/level/LevelsManager.java b/src/main/java/world/bentobox/level/LevelsManager.java index e5e1edb..cfa2247 100644 --- a/src/main/java/world/bentobox/level/LevelsManager.java +++ b/src/main/java/world/bentobox/level/LevelsManager.java @@ -62,8 +62,6 @@ public class LevelsManager { private final Database handler; // A cache of island levels. private final Map levelsCache; - - private final Database topTenHandler; // Top ten lists private final Map topTenLists; // Background @@ -77,8 +75,6 @@ public class LevelsManager { // Set up the database handler to store and retrieve data // Note that these are saved by the BentoBox database handler = new Database<>(addon, IslandLevels.class); - // Top Ten handler - topTenHandler = new Database<>(addon, TopTenData.class); // Initialize the cache levelsCache = new HashMap<>(); // Initialize top ten lists @@ -179,8 +175,6 @@ public class LevelsManager { } // Save result setIslandResults(island.getWorld(), island.getOwner(), r); - // Save top ten - addon.getManager().saveTopTen(island.getWorld()); // Save the island scan details result.complete(r); }); @@ -462,15 +456,14 @@ public class LevelsManager { void loadTopTens() { topTenLists.clear(); Bukkit.getScheduler().runTaskAsynchronously(addon.getPlugin(), () -> { - addon.log("Generating Top Ten Tables"); + addon.log("Generating rankings"); handler.loadObjects().forEach(il -> { if (il.getLevel() > 0) { addon.getIslands().getIslandById(il.getUniqueId()).ifPresent(i -> this.addToTopTen(i, il.getLevel())); } }); topTenLists.keySet().forEach(w -> { - addon.log("Loaded top ten for " + w.getName()); - this.saveTopTen(w); + addon.log("Generated rankings for " + w.getName()); }); }); @@ -484,27 +477,10 @@ public class LevelsManager { public void removeEntry(World world, UUID uuid) { if (topTenLists.containsKey(world)) { topTenLists.get(world).getTopTen().remove(uuid); - topTenHandler.saveObjectAsync(topTenLists.get(world)); } } - /** - * Saves all player data and the top ten - */ - public void save() { - levelsCache.values().forEach(handler::saveObjectAsync); - topTenLists.values().forEach(topTenHandler::saveObjectAsync); - } - - /** - * Save the top ten for world - * @param world - world - */ - public void saveTopTen(World world) { - topTenHandler.saveObjectAsync(topTenLists.get(world)); - } - /** * Set an initial island level * @param island - the island to set. Must have a non-null world diff --git a/src/test/java/world/bentobox/level/LevelsManagerTest.java b/src/test/java/world/bentobox/level/LevelsManagerTest.java index 3d9b26b..a8541e1 100644 --- a/src/test/java/world/bentobox/level/LevelsManagerTest.java +++ b/src/test/java/world/bentobox/level/LevelsManagerTest.java @@ -383,8 +383,8 @@ public class LevelsManagerTest { Bukkit.getScheduler(); verify(scheduler).runTaskAsynchronously(eq(plugin), task.capture()); task.getValue().run(); - verify(addon).log(eq("Generating Top Ten Tables")); - verify(addon).log(eq("Loaded top ten for bskyblock-world")); + verify(addon).log(eq("Generating rankings")); + verify(addon).log(eq("Generated rankings for bskyblock-world")); } @@ -401,14 +401,6 @@ public class LevelsManagerTest { assertFalse(tt.containsKey(uuid)); } - /** - * Test method for {@link world.bentobox.level.LevelsManager#save()}. - */ - @Test - public void testSave() { - lm.save(); - } - /** * Test method for {@link world.bentobox.level.LevelsManager#setInitialIslandLevel(world.bentobox.bentobox.database.objects.Island, long)}. */