From d0b6badf096a8989fe3d2679248496ca2b741fac Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Fri, 31 Jan 2020 18:12:06 +0100 Subject: [PATCH] Fix DebugClaimTest (#2667) * Fix DebugClaimTest * Remove code causing 3 database updates per plot + errors when using MySQL --- .../plot/commands/DebugClaimTest.java | 94 ++++++++----------- 1 file changed, 40 insertions(+), 54 deletions(-) diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java index 411a3290b..3c8b854e5 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/DebugClaimTest.java @@ -3,7 +3,6 @@ package com.github.intellectualsites.plotsquared.plot.commands; import com.github.intellectualsites.plotsquared.commands.CommandDeclaration; import com.github.intellectualsites.plotsquared.plot.PlotSquared; import com.github.intellectualsites.plotsquared.plot.config.Captions; -import com.github.intellectualsites.plotsquared.plot.database.DBFunc; import com.github.intellectualsites.plotsquared.plot.object.Location; import com.github.intellectualsites.plotsquared.plot.object.Plot; import com.github.intellectualsites.plotsquared.plot.object.PlotArea; @@ -21,6 +20,7 @@ import com.sk89q.worldedit.math.BlockVector2; import java.util.ArrayList; import java.util.Map; import java.util.UUID; +import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "debugclaimtest", description = "If you accidentally delete your database, this command will attempt to restore all plots based on the data from plot signs. " @@ -54,63 +54,49 @@ public class DebugClaimTest extends SubCommand { MainUtil.sendMessage(player, "&3Sign Block&8->&3Plot&8: Found an excess of 250,000 chunks. Limiting search radius... (~3.8 min)"); PlotManager manager = area.getPlotManager(); - ArrayList plots = new ArrayList<>(); - for (PlotId id : MainUtil.getPlotSelectionIds(min, max)) { - Plot plot = area.getPlotAbs(id); - if (plot.hasOwner()) { - MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId()); - continue; - } - Location location = manager.getSignLoc(plot); - BlockVector2 chunk = BlockVector2.at(location.getX() >> 4, location.getZ() >> 4); - ChunkManager.manager.loadChunk(area.worldname, chunk, false).thenRun(() -> { - String[] lines = WorldUtil.IMP.getSign(location); - if (lines != null) { - String line = lines[2]; - if (line != null && line.length() > 2) { - line = line.substring(2); - BiMap map = UUIDHandler.getUuidMap(); - UUID uuid = map.get(new StringWrapper(line)); - if (uuid == null) { - for (Map.Entry stringWrapperUUIDEntry : map - .entrySet()) { - if (stringWrapperUUIDEntry.getKey().value.toLowerCase() - .startsWith(line.toLowerCase())) { - uuid = stringWrapperUUIDEntry.getValue(); - break; + CompletableFuture.runAsync(() -> { + ArrayList ids = MainUtil.getPlotSelectionIds(min, max); + MainUtil.sendMessage(player, "&3Sign Block&8->&3Plot&8: " + ids.size() + " plot ids to check!"); + for (PlotId id : ids) { + Plot plot = area.getPlotAbs(id); + if (plot.hasOwner()) { + MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId()); + continue; + } + Location location = manager.getSignLoc(plot); + BlockVector2 chunk = BlockVector2.at(location.getX() >> 4, location.getZ() >> 4); + ChunkManager.manager.loadChunk(area.worldname, chunk, false).thenRun(() -> { + String[] lines = WorldUtil.IMP.getSign(location); + if (lines != null) { + String line = lines[2]; + if (line != null && line.length() > 2) { + line = line.substring(2); + BiMap map = UUIDHandler.getUuidMap(); + UUID uuid = map.get(new StringWrapper(line)); + if (uuid == null) { + for (Map.Entry stringWrapperUUIDEntry : map.entrySet()) { + if (stringWrapperUUIDEntry.getKey().value.toLowerCase() + .startsWith(line.toLowerCase())) { + uuid = stringWrapperUUIDEntry.getValue(); + break; + } } } - } - if (uuid == null) { - uuid = UUIDHandler.getUUID(line, null); - } - if (uuid != null) { - MainUtil.sendMessage(player, - " - &aFound plot: " + plot.getId() + " : " + line); - plot.setOwner(uuid); - plots.add(plot); - } else { - MainUtil.sendMessage(player, - " - &cInvalid PlayerName: " + plot.getId() + " : " + line); + if (uuid == null) { + uuid = UUIDHandler.getUUID(line, null); + } + if (uuid != null) { + MainUtil.sendMessage(player, " - &aFound plot: " + plot.getId() + " : " + line); + plot.setOwner(uuid); + MainUtil.sendMessage(player, " - &8Updated plot: " + plot.getId()); + } else { + MainUtil.sendMessage(player, " - &cInvalid PlayerName: " + plot.getId() + " : " + line); + } } } - } - }).thenRun(() -> { - if (!plots.isEmpty()) { - MainUtil.sendMessage(player, - "&3Sign Block&8->&3Plot&8: &7Updating '" + plots.size() + "' plots!"); - DBFunc.createPlotsAndData(plots, - () -> MainUtil.sendMessage(player, "&6Database update finished!")); - for (Plot plot1 : plots) { - plot.create(); - } - MainUtil.sendMessage(player, "&3Sign Block&8->&3Plot&8: &7Complete!"); - } else { - MainUtil.sendMessage(player, "No plots were found for the given search."); - } - }); - return true; - } + }).join(); + } + }).thenRun(() -> MainUtil.sendMessage(player, "&3Sign Block&8->&3Plot&8: Finished scan.")); return true; } }