Fixed deletion of old traces

This commit is contained in:
D4rkr34lm
2024-08-16 17:18:02 +02:00
parent 963f798e7c
commit 642e9ffd50
4 changed files with 17 additions and 10 deletions
@@ -93,8 +93,8 @@ public class Trace {
this.date = new Date(); this.date = new Date();
recordsCount = recordList.size(); recordsCount = recordList.size();
records = new SoftReference<>(recordList); records = new SoftReference<>(recordList);
recordsSaveFile = new File(TraceManager.tracesFolder, uuid + ".records"); recordsSaveFile = new File(TraceRepository.tracesFolder, uuid + ".records");
metadataSaveFile = new File(TraceManager.tracesFolder, uuid + ".meta"); metadataSaveFile = new File(TraceRepository.tracesFolder, uuid + ".meta");
} }
/** /**
@@ -36,6 +36,8 @@ import java.io.File;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static de.steamwar.bausystem.features.tracer.TraceRepository.tracesFolder;
@Linked @Linked
public class TraceManager implements Listener { public class TraceManager implements Listener {
@@ -45,10 +47,11 @@ public class TraceManager implements Listener {
instance = this; instance = this;
} }
public static File tracesFolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "traces");
@EventHandler @EventHandler
public void init(PluginEnableEvent event) { public void init(PluginEnableEvent event) {
if(!event.getPlugin().getName().equalsIgnoreCase("BauSystem")) {return;}
if (!tracesFolder.exists()) if (!tracesFolder.exists())
tracesFolder.mkdir(); tracesFolder.mkdir();
@@ -61,12 +64,14 @@ public class TraceManager implements Listener {
continue; continue;
if (TraceRepository.getVersion(traceFile) == TraceRepository.SERIALISATION_VERSION) { if (TraceRepository.getVersion(traceFile) == TraceRepository.SERIALISATION_VERSION) {
add(TraceRepository.readTrace(traceFile)); Trace t = TraceRepository.readTrace(traceFile);
add(t);
System.out.println(t);
} else { } else {
String uuid = traceFile.getName().replace(".records", ""); String uuid = traceFile.getName().replace(".meta", "");
new File(tracesFolder, uuid + ".records").delete(); new File(tracesFolder, uuid + ".records").deleteOnExit();
new File(tracesFolder, uuid + ".meta").delete(); new File(tracesFolder, uuid + ".meta").deleteOnExit();
} }
} }
@@ -170,8 +175,8 @@ public class TraceManager implements Listener {
tracesByRegion.getOrDefault(region, new HashMap<>()) tracesByRegion.getOrDefault(region, new HashMap<>())
.forEach((i, trace) -> { .forEach((i, trace) -> {
if (trace.getRegion() != region) return; if (trace.getRegion() != region) return;
trace.getMetadataSaveFile().delete(); trace.getMetadataSaveFile().deleteOnExit();
trace.getRecordsSaveFile().delete(); trace.getRecordsSaveFile().deleteOnExit();
}); });
tracesByRegion.getOrDefault(region, new HashMap<>()).clear(); tracesByRegion.getOrDefault(region, new HashMap<>()).clear();
} }
@@ -73,6 +73,7 @@ public class TraceRecorder implements Listener {
@EventHandler @EventHandler
public void init(PluginEnableEvent event) { public void init(PluginEnableEvent event) {
if(!event.getPlugin().getName().equalsIgnoreCase("BauSystem")) {return;}
BauSystem.runTaskTimer(BauSystem.getInstance(), () -> { BauSystem.runTaskTimer(BauSystem.getInstance(), () -> {
record(); record();
checkForAutoTraceFinish(); checkForAutoTraceFinish();
@@ -16,6 +16,7 @@ public class TraceRepository {
* Increment this when changing serialisation format * Increment this when changing serialisation format
*/ */
public static final int SERIALISATION_VERSION = 1; public static final int SERIALISATION_VERSION = 1;
public static File tracesFolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "traces");
@SneakyThrows @SneakyThrows
protected static int getVersion(File metadataFile) { protected static int getVersion(File metadataFile) {
@@ -39,7 +40,7 @@ public class TraceRepository {
UUID uuid = UUID.fromString(reader.readUTF()); UUID uuid = UUID.fromString(reader.readUTF());
Region region = Region.getREGION_MAP().get(reader.readUTF()); Region region = Region.getREGION_MAP().get(reader.readUTF());
Date date = (Date) reader.readObject(); Date date = (Date) reader.readObject();
File recordsFile = new File(uuid + ".records"); File recordsFile = new File(tracesFolder,uuid + ".records");
int recordsCount = reader.readInt(); int recordsCount = reader.readInt();
return new Trace(uuid, region, date, metadataFile, recordsFile, recordsCount); return new Trace(uuid, region, date, metadataFile, recordsFile, recordsCount);