From 7f53fb4c80accc8c3e31d3d0718b2f926354ca46 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Mon, 24 Sep 2018 19:53:03 +0300 Subject: [PATCH] [Debt] Moved LogsFolderCleanTask out of PlanFiles This had to be done in order for a call to settings to be made without a dependency cycle, since PlanConfig depends on PlanFiles. --- .../plan/system/file/PlanFiles.java | 11 +------ .../plan/system/tasks/BukkitTaskSystem.java | 10 +++---- .../plan/system/tasks/BungeeTaskSystem.java | 11 +++++-- .../system/tasks/LogsFolderCleanTask.java | 17 +++++++++-- .../plan/system/tasks/ServerTaskSystem.java | 29 ++++++++----------- .../plan/system/tasks/SpongeTaskSystem.java | 6 ++-- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/system/file/PlanFiles.java b/Plan/src/main/java/com/djrapitops/plan/system/file/PlanFiles.java index 583f8c9a1..748f6fc56 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/file/PlanFiles.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/file/PlanFiles.java @@ -7,9 +7,7 @@ package com.djrapitops.plan.system.file; import com.djrapitops.plan.PlanPlugin; import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.system.SubSystem; -import com.djrapitops.plan.system.tasks.LogsFolderCleanTask; import com.djrapitops.plan.utilities.file.FileUtil; -import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.utilities.Verify; import javax.inject.Inject; @@ -17,7 +15,6 @@ import javax.inject.Singleton; import java.io.File; import java.io.IOException; import java.util.List; -import java.util.concurrent.TimeUnit; /** * Abstracts File methods of Plugin classes so that they can be tested without Mocks. @@ -43,7 +40,7 @@ public class PlanFiles implements SubSystem { return dataFolder; } - private File getLogsFolder() { + public File getLogsFolder() { File folder = getFileFromPluginFolder("logs"); folder.mkdirs(); return folder; @@ -68,12 +65,6 @@ public class PlanFiles implements SubSystem { try { Verify.isTrue((configFile.exists() && configFile.isFile()) || configFile.createNewFile(), () -> new EnableException("Could not create config file at " + configFile.getAbsolutePath())); - - // TODO Log Keep Day threshold from Settings - // TODO Move This task creation outside of PlanFiles class - plugin.getRunnableFactory().create("Logs folder Clean Task", - new LogsFolderCleanTask(getLogsFolder(), 5, plugin.getPluginLogger()) - ).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); } catch (IOException e) { throw new EnableException("Failed to create config.yml", e); } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java index 3cb3036d1..1f7858cb6 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java @@ -33,17 +33,17 @@ public class BukkitTaskSystem extends ServerTaskSystem { NetworkPageRefreshTask networkPageRefreshTask, BootAnalysisTask bootAnalysisTask, PeriodicAnalysisTask periodicAnalysisTask, - PingCountTimer pingCountTimer + PingCountTimer pingCountTimer, + LogsFolderCleanTask logsFolderCleanTask ) { super( runnableFactory, - Check.isPaperAvailable() - ? paperTPSCountTimer - : bukkitTPSCountTimer, + Check.isPaperAvailable() ? paperTPSCountTimer : bukkitTPSCountTimer, config, networkPageRefreshTask, bootAnalysisTask, - periodicAnalysisTask + periodicAnalysisTask, + logsFolderCleanTask ); this.plugin = plugin; this.pingCountTimer = pingCountTimer; diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java index 746cd39ab..65eab8d80 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java @@ -11,6 +11,7 @@ import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.task.RunnableFactory; import javax.inject.Inject; +import java.util.concurrent.TimeUnit; /** * TaskSystem responsible for registering tasks for Bungee. @@ -21,18 +22,21 @@ public class BungeeTaskSystem extends TaskSystem { private final EnableConnectionTask enableConnectionTask; private final NetworkPageRefreshTask networkPageRefreshTask; + private final LogsFolderCleanTask logsFolderCleanTask; @Inject public BungeeTaskSystem( RunnableFactory runnableFactory, BungeeTPSCountTimer bungeeTPSCountTimer, EnableConnectionTask enableConnectionTask, - NetworkPageRefreshTask networkPageRefreshTask + NetworkPageRefreshTask networkPageRefreshTask, + LogsFolderCleanTask logsFolderCleanTask ) { super(runnableFactory, bungeeTPSCountTimer); this.enableConnectionTask = enableConnectionTask; this.networkPageRefreshTask = networkPageRefreshTask; + this.logsFolderCleanTask = logsFolderCleanTask; } @Override @@ -42,7 +46,8 @@ public class BungeeTaskSystem extends TaskSystem { private void registerTasks() { registerTask(enableConnectionTask).runTaskAsynchronously(); - registerTask(tpsCountTimer).runTaskTimerAsynchronously(1000, TimeAmount.SECOND.ticks()); - registerTask(networkPageRefreshTask).runTaskTimerAsynchronously(1500, TimeAmount.MINUTE.ticks()); + registerTask(tpsCountTimer).runTaskTimerAsynchronously(1000, TimeAmount.toTicks(1L, TimeUnit.SECONDS)); + registerTask(networkPageRefreshTask).runTaskTimerAsynchronously(1500, TimeAmount.toTicks(5L, TimeUnit.MINUTES)); + registerTask(logsFolderCleanTask).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/LogsFolderCleanTask.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/LogsFolderCleanTask.java index 4b0fb9907..1566b894d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/LogsFolderCleanTask.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/LogsFolderCleanTask.java @@ -1,8 +1,13 @@ package com.djrapitops.plan.system.tasks; +import com.djrapitops.plan.system.file.PlanFiles; +import com.djrapitops.plan.system.settings.Settings; +import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plugin.logging.console.PluginLogger; import com.djrapitops.plugin.task.AbsRunnable; +import javax.inject.Inject; +import javax.inject.Singleton; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -14,6 +19,7 @@ import java.util.concurrent.TimeUnit; * * @author Rsl1122 */ +@Singleton public class LogsFolderCleanTask extends AbsRunnable { private final int keepLogDayThreshold; @@ -21,9 +27,14 @@ public class LogsFolderCleanTask extends AbsRunnable { private final File folder; private final PluginLogger logger; - public LogsFolderCleanTask(File folder, int keepLogDayThreshold, PluginLogger logger) { - this.folder = folder; - this.keepLogDayThreshold = keepLogDayThreshold; + @Inject + public LogsFolderCleanTask( + PlanFiles files, + PlanConfig config, + PluginLogger logger + ) { + this.folder = files.getLogsFolder(); + this.keepLogDayThreshold = config.getNumber(Settings.KEEP_LOGS_DAYS); this.logger = logger; } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java index 0aefb6aea..bc481c968 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java @@ -8,6 +8,8 @@ import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask; import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.task.RunnableFactory; +import java.util.concurrent.TimeUnit; + /** * Abstracted TaskSystem implementation for both Bukkit and Sponge. * @@ -17,8 +19,9 @@ public abstract class ServerTaskSystem extends TaskSystem { private final PlanConfig config; private final NetworkPageRefreshTask networkPageRefreshTask; + private final BootAnalysisTask bootAnalysisTask; private final PeriodicAnalysisTask periodicAnalysisTask; - protected BootAnalysisTask bootAnalysisTask; + private final LogsFolderCleanTask logsFolderCleanTask; public ServerTaskSystem( RunnableFactory runnableFactory, @@ -26,13 +29,14 @@ public abstract class ServerTaskSystem extends TaskSystem { PlanConfig config, NetworkPageRefreshTask networkPageRefreshTask, BootAnalysisTask bootAnalysisTask, - PeriodicAnalysisTask periodicAnalysisTask - ) { + PeriodicAnalysisTask periodicAnalysisTask, + LogsFolderCleanTask logsFolderCleanTask) { super(runnableFactory, tpsCountTimer); this.config = config; this.networkPageRefreshTask = networkPageRefreshTask; this.bootAnalysisTask = bootAnalysisTask; this.periodicAnalysisTask = periodicAnalysisTask; + this.logsFolderCleanTask = logsFolderCleanTask; } @Override @@ -44,25 +48,16 @@ public abstract class ServerTaskSystem extends TaskSystem { // Analysis refresh settings int analysisRefreshMinutes = config.getNumber(Settings.ANALYSIS_AUTO_REFRESH); boolean analysisRefreshTaskIsEnabled = analysisRefreshMinutes > 0; - long analysisPeriod = analysisRefreshMinutes * TimeAmount.MINUTE.ticks(); + long analysisPeriod = TimeAmount.toTicks(analysisRefreshMinutes, TimeUnit.MINUTES); - registerTask(tpsCountTimer).runTaskTimer(1000, TimeAmount.SECOND.ticks()); - registerTask(networkPageRefreshTask).runTaskTimerAsynchronously(20L, 5L * TimeAmount.MINUTE.ticks()); - registerTask(bootAnalysisTask).runTaskLaterAsynchronously(30L * TimeAmount.SECOND.ticks()); + registerTask(tpsCountTimer).runTaskTimer(1000, TimeAmount.toTicks(1L, TimeUnit.SECONDS)); + registerTask(networkPageRefreshTask).runTaskTimerAsynchronously(20L, TimeAmount.toTicks(5L, TimeUnit.MINUTES)); + registerTask(bootAnalysisTask).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); if (analysisRefreshTaskIsEnabled) { registerTask(periodicAnalysisTask).runTaskTimerAsynchronously(analysisPeriod, analysisPeriod); } - } - public void cancelBootAnalysis() { - try { - if (bootAnalysisTask != null) { - bootAnalysisTask.cancel(); - bootAnalysisTask = null; - } - } catch (Exception ignored) { - /* Ignored */ - } + registerTask(logsFolderCleanTask).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java index 09329dc1e..1f223a828 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java @@ -24,7 +24,8 @@ public class SpongeTaskSystem extends ServerTaskSystem { SpongeTPSCountTimer spongeTPSCountTimer, NetworkPageRefreshTask networkPageRefreshTask, BootAnalysisTask bootAnalysisTask, - PeriodicAnalysisTask periodicAnalysisTask + PeriodicAnalysisTask periodicAnalysisTask, + LogsFolderCleanTask logsFolderCleanTask ) { super( runnableFactory, @@ -32,7 +33,8 @@ public class SpongeTaskSystem extends ServerTaskSystem { config, networkPageRefreshTask, bootAnalysisTask, - periodicAnalysisTask + periodicAnalysisTask, + logsFolderCleanTask ); this.plugin = plugin; }