From 642e9ffd50cc59d4f6a23ab7ad21b7c183f8627d Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Fri, 16 Aug 2024 17:18:02 +0200 Subject: [PATCH] Fixed deletion of old traces --- .../bausystem/features/tracer/Trace.java | 4 ++-- .../features/tracer/TraceManager.java | 19 ++++++++++++------- .../features/tracer/TraceRecorder.java | 1 + .../features/tracer/TraceRepository.java | 3 ++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java index a637a181..29bf38cf 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java @@ -93,8 +93,8 @@ public class Trace { this.date = new Date(); recordsCount = recordList.size(); records = new SoftReference<>(recordList); - recordsSaveFile = new File(TraceManager.tracesFolder, uuid + ".records"); - metadataSaveFile = new File(TraceManager.tracesFolder, uuid + ".meta"); + recordsSaveFile = new File(TraceRepository.tracesFolder, uuid + ".records"); + metadataSaveFile = new File(TraceRepository.tracesFolder, uuid + ".meta"); } /** diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java index e801708d..ffd46848 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java @@ -36,6 +36,8 @@ import java.io.File; import java.util.*; import java.util.stream.Collectors; +import static de.steamwar.bausystem.features.tracer.TraceRepository.tracesFolder; + @Linked public class TraceManager implements Listener { @@ -45,10 +47,11 @@ public class TraceManager implements Listener { instance = this; } - public static File tracesFolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "traces"); + @EventHandler public void init(PluginEnableEvent event) { + if(!event.getPlugin().getName().equalsIgnoreCase("BauSystem")) {return;} if (!tracesFolder.exists()) tracesFolder.mkdir(); @@ -61,12 +64,14 @@ public class TraceManager implements Listener { continue; if (TraceRepository.getVersion(traceFile) == TraceRepository.SERIALISATION_VERSION) { - add(TraceRepository.readTrace(traceFile)); + Trace t = TraceRepository.readTrace(traceFile); + add(t); + System.out.println(t); } else { - String uuid = traceFile.getName().replace(".records", ""); + String uuid = traceFile.getName().replace(".meta", ""); - new File(tracesFolder, uuid + ".records").delete(); - new File(tracesFolder, uuid + ".meta").delete(); + new File(tracesFolder, uuid + ".records").deleteOnExit(); + new File(tracesFolder, uuid + ".meta").deleteOnExit(); } } @@ -170,8 +175,8 @@ public class TraceManager implements Listener { tracesByRegion.getOrDefault(region, new HashMap<>()) .forEach((i, trace) -> { if (trace.getRegion() != region) return; - trace.getMetadataSaveFile().delete(); - trace.getRecordsSaveFile().delete(); + trace.getMetadataSaveFile().deleteOnExit(); + trace.getRecordsSaveFile().deleteOnExit(); }); tracesByRegion.getOrDefault(region, new HashMap<>()).clear(); } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java index 89b10c7f..17218902 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -73,6 +73,7 @@ public class TraceRecorder implements Listener { @EventHandler public void init(PluginEnableEvent event) { + if(!event.getPlugin().getName().equalsIgnoreCase("BauSystem")) {return;} BauSystem.runTaskTimer(BauSystem.getInstance(), () -> { record(); checkForAutoTraceFinish(); diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRepository.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRepository.java index 1cc27188..43a144b5 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRepository.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRepository.java @@ -16,6 +16,7 @@ public class TraceRepository { * Increment this when changing serialisation format */ public static final int SERIALISATION_VERSION = 1; + public static File tracesFolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "traces"); @SneakyThrows protected static int getVersion(File metadataFile) { @@ -39,7 +40,7 @@ public class TraceRepository { UUID uuid = UUID.fromString(reader.readUTF()); Region region = Region.getREGION_MAP().get(reader.readUTF()); Date date = (Date) reader.readObject(); - File recordsFile = new File(uuid + ".records"); + File recordsFile = new File(tracesFolder,uuid + ".records"); int recordsCount = reader.readInt(); return new Trace(uuid, region, date, metadataFile, recordsFile, recordsCount);