From b3a340deabb35bfdd044080b85c2926e534fd20c Mon Sep 17 00:00:00 2001 From: Szum123321 Date: Tue, 30 Aug 2022 01:31:43 +0200 Subject: [PATCH] Separated BackupHelper into the factory and the cleanup (MakeBackupRunnableFactory & Cleanup) --- .../textile_backup/TextileBackup.java | 4 +- .../commands/create/CleanupCommand.java | 4 +- .../commands/create/StartBackupCommand.java | 4 +- .../BackupHelper.java => Cleanup.java} | 79 +++++-------------- .../core/create/BackupScheduler.java | 4 +- .../core/create/MakeBackupRunnable.java | 3 +- .../create/MakeBackupRunnableFactory.java | 72 +++++++++++++++++ .../core/restore/RestoreBackupRunnable.java | 4 +- 8 files changed, 103 insertions(+), 71 deletions(-) rename src/main/java/net/szum123321/textile_backup/core/{create/BackupHelper.java => Cleanup.java} (68%) create mode 100644 src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnableFactory.java diff --git a/src/main/java/net/szum123321/textile_backup/TextileBackup.java b/src/main/java/net/szum123321/textile_backup/TextileBackup.java index d2c40e2..81d514a 100644 --- a/src/main/java/net/szum123321/textile_backup/TextileBackup.java +++ b/src/main/java/net/szum123321/textile_backup/TextileBackup.java @@ -39,8 +39,8 @@ import net.szum123321.textile_backup.config.ConfigHelper; import net.szum123321.textile_backup.config.ConfigPOJO; import net.szum123321.textile_backup.core.ActionInitiator; import net.szum123321.textile_backup.core.create.BackupContext; -import net.szum123321.textile_backup.core.create.BackupHelper; import net.szum123321.textile_backup.core.create.BackupScheduler; +import net.szum123321.textile_backup.core.create.MakeBackupRunnableFactory; public class TextileBackup implements ModInitializer { public static final String MOD_NAME = "Textile Backup"; @@ -67,7 +67,7 @@ public class TextileBackup implements ModInitializer { Globals.INSTANCE.shutdownQueueExecutor(60000); if (config.get().shutdownBackup && Globals.INSTANCE.globalShutdownBackupFlag.get()) { - BackupHelper.create( + MakeBackupRunnableFactory.create( BackupContext.Builder .newBackupContextBuilder() .setServer(server) diff --git a/src/main/java/net/szum123321/textile_backup/commands/create/CleanupCommand.java b/src/main/java/net/szum123321/textile_backup/commands/create/CleanupCommand.java index 4ca516f..05dafce 100644 --- a/src/main/java/net/szum123321/textile_backup/commands/create/CleanupCommand.java +++ b/src/main/java/net/szum123321/textile_backup/commands/create/CleanupCommand.java @@ -23,7 +23,7 @@ import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.szum123321.textile_backup.TextileBackup; import net.szum123321.textile_backup.TextileLogger; -import net.szum123321.textile_backup.core.create.BackupHelper; +import net.szum123321.textile_backup.core.Cleanup; import net.szum123321.textile_backup.core.Utilities; public class CleanupCommand { @@ -38,7 +38,7 @@ public class CleanupCommand { log.sendInfo( source, "Deleted: {} files.", - BackupHelper.executeFileLimit(source, Utilities.getLevelName(source.getServer())) + Cleanup.executeFileLimit(source, Utilities.getLevelName(source.getServer())) ); return 1; diff --git a/src/main/java/net/szum123321/textile_backup/commands/create/StartBackupCommand.java b/src/main/java/net/szum123321/textile_backup/commands/create/StartBackupCommand.java index cf5f58e..830a88a 100644 --- a/src/main/java/net/szum123321/textile_backup/commands/create/StartBackupCommand.java +++ b/src/main/java/net/szum123321/textile_backup/commands/create/StartBackupCommand.java @@ -26,7 +26,7 @@ import net.szum123321.textile_backup.Globals; import net.szum123321.textile_backup.TextileBackup; import net.szum123321.textile_backup.TextileLogger; import net.szum123321.textile_backup.core.create.BackupContext; -import net.szum123321.textile_backup.core.create.BackupHelper; +import net.szum123321.textile_backup.core.create.MakeBackupRunnableFactory; import javax.annotation.Nullable; @@ -43,7 +43,7 @@ public class StartBackupCommand { private static int execute(ServerCommandSource source, @Nullable String comment) { try { Globals.INSTANCE.getQueueExecutor().submit( - BackupHelper.create( + MakeBackupRunnableFactory.create( BackupContext.Builder .newBackupContextBuilder() .setCommandSource(source) diff --git a/src/main/java/net/szum123321/textile_backup/core/create/BackupHelper.java b/src/main/java/net/szum123321/textile_backup/core/Cleanup.java similarity index 68% rename from src/main/java/net/szum123321/textile_backup/core/create/BackupHelper.java rename to src/main/java/net/szum123321/textile_backup/core/Cleanup.java index a61fdd2..e3114fa 100644 --- a/src/main/java/net/szum123321/textile_backup/core/create/BackupHelper.java +++ b/src/main/java/net/szum123321/textile_backup/core/Cleanup.java @@ -1,29 +1,29 @@ /* - A simple backup mod for Fabric - Copyright (C) 2020 Szum123321 + * A simple backup mod for Fabric + * Copyright (C) 2022 Szum123321 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -package net.szum123321.textile_backup.core.create; +package net.szum123321.textile_backup.core; import net.minecraft.server.command.ServerCommandSource; import net.szum123321.textile_backup.Globals; import net.szum123321.textile_backup.TextileBackup; import net.szum123321.textile_backup.TextileLogger; import net.szum123321.textile_backup.config.ConfigHelper; -import net.szum123321.textile_backup.core.Utilities; import java.io.IOException; import java.nio.file.Files; @@ -35,55 +35,14 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Stream; -public class BackupHelper { +public class Cleanup { private final static TextileLogger log = new TextileLogger(TextileBackup.MOD_NAME); private final static ConfigHelper config = ConfigHelper.INSTANCE; - public static Runnable create(BackupContext ctx) { - if(config.get().broadcastBackupStart) { - Utilities.notifyPlayers(ctx.server(), - "Warning! Server backup will begin shortly. You may experience some lag." - ); - } else { - log.sendInfoAL(ctx, "Warning! Server backup will begin shortly. You may experience some lag."); - } - - StringBuilder builder = new StringBuilder(); - - builder.append("Backup started "); - - builder.append(ctx.initiator().getPrefix()); - - if(ctx.startedByPlayer()) - builder.append(ctx.commandSource().getDisplayName().getString()); - else - builder.append(ctx.initiator().getName()); - - builder.append(" on: "); - builder.append(Utilities.getDateTimeFormatter().format(LocalDateTime.now())); - - log.info(builder.toString()); - - if (ctx.shouldSave()) { - log.sendInfoAL(ctx, "Saving server..."); - - ctx.server().getPlayerManager().saveAllPlayerData(); - - try { - ctx.server().save(false, true, true); - } catch (Exception e) { - log.sendErrorAL(ctx,"An exception occurred when trying to save the world!"); - } - } - - return new MakeBackupRunnable(ctx); - } - public static int executeFileLimit(ServerCommandSource ctx, String worldName) { Path root = Utilities.getBackupRootPath(worldName); int deletedFiles = 0; - if (Files.isDirectory(root) && Files.exists(root) && !isEmpty(root)) { if (config.get().maxAge > 0) { // delete files older that configured final long now = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC); diff --git a/src/main/java/net/szum123321/textile_backup/core/create/BackupScheduler.java b/src/main/java/net/szum123321/textile_backup/core/create/BackupScheduler.java index 10d1be3..6ce816a 100644 --- a/src/main/java/net/szum123321/textile_backup/core/create/BackupScheduler.java +++ b/src/main/java/net/szum123321/textile_backup/core/create/BackupScheduler.java @@ -44,7 +44,7 @@ public class BackupScheduler { if(scheduled) { if(nextBackup <= now) { Globals.INSTANCE.getQueueExecutor().submit( - BackupHelper.create( + MakeBackupRunnableFactory.create( BackupContext.Builder .newBackupContextBuilder() .setServer(server) @@ -63,7 +63,7 @@ public class BackupScheduler { } else if(!config.get().doBackupsOnEmptyServer && server.getPlayerManager().getCurrentPlayerCount() == 0) { if(scheduled && nextBackup <= now) { Globals.INSTANCE.getQueueExecutor().submit( - BackupHelper.create( + MakeBackupRunnableFactory.create( BackupContext.Builder .newBackupContextBuilder() .setServer(server) diff --git a/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnable.java b/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnable.java index beba9b8..05e8c3a 100644 --- a/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnable.java +++ b/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnable.java @@ -23,6 +23,7 @@ import net.szum123321.textile_backup.TextileBackup; import net.szum123321.textile_backup.TextileLogger; import net.szum123321.textile_backup.config.ConfigHelper; import net.szum123321.textile_backup.core.ActionInitiator; +import net.szum123321.textile_backup.core.Cleanup; import net.szum123321.textile_backup.core.create.compressors.*; import net.szum123321.textile_backup.core.Utilities; import net.szum123321.textile_backup.core.create.compressors.tar.AbstractTarArchiver; @@ -108,7 +109,7 @@ public class MakeBackupRunnable implements Runnable { case TAR -> new AbstractTarArchiver().createArchive(world, outFile, context, coreCount); } - BackupHelper.executeFileLimit(context.commandSource(), Utilities.getLevelName(context.server())); + Cleanup.executeFileLimit(context.commandSource(), Utilities.getLevelName(context.server())); if(config.get().broadcastBackupDone) { Utilities.notifyPlayers( diff --git a/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnableFactory.java b/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnableFactory.java new file mode 100644 index 0000000..36d8eb6 --- /dev/null +++ b/src/main/java/net/szum123321/textile_backup/core/create/MakeBackupRunnableFactory.java @@ -0,0 +1,72 @@ +/* + * A simple backup mod for Fabric + * Copyright (C) 2022 Szum123321 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package net.szum123321.textile_backup.core.create; + +import net.szum123321.textile_backup.TextileBackup; +import net.szum123321.textile_backup.TextileLogger; +import net.szum123321.textile_backup.config.ConfigHelper; +import net.szum123321.textile_backup.core.Utilities; + +import java.time.LocalDateTime; + +public class MakeBackupRunnableFactory { + private final static TextileLogger log = new TextileLogger(TextileBackup.MOD_NAME); + private final static ConfigHelper config = ConfigHelper.INSTANCE; + + public static Runnable create(BackupContext ctx) { + if(config.get().broadcastBackupStart) { + Utilities.notifyPlayers(ctx.server(), + "Warning! Server backup will begin shortly. You may experience some lag." + ); + } else { + log.sendInfoAL(ctx, "Warning! Server backup will begin shortly. You may experience some lag."); + } + + StringBuilder builder = new StringBuilder(); + + builder.append("Backup started "); + + builder.append(ctx.initiator().getPrefix()); + + if(ctx.startedByPlayer()) + builder.append(ctx.commandSource().getDisplayName().getString()); + else + builder.append(ctx.initiator().getName()); + + builder.append(" on: "); + builder.append(Utilities.getDateTimeFormatter().format(LocalDateTime.now())); + + log.info(builder.toString()); + + if (ctx.shouldSave()) { + log.sendInfoAL(ctx, "Saving server..."); + + ctx.server().getPlayerManager().saveAllPlayerData(); + + try { + ctx.server().save(false, true, true); + } catch (Exception e) { + log.sendErrorAL(ctx,"An exception occurred when trying to save the world!"); + } + } + + return new MakeBackupRunnable(ctx); + } +} diff --git a/src/main/java/net/szum123321/textile_backup/core/restore/RestoreBackupRunnable.java b/src/main/java/net/szum123321/textile_backup/core/restore/RestoreBackupRunnable.java index 7de61ef..2f3e207 100644 --- a/src/main/java/net/szum123321/textile_backup/core/restore/RestoreBackupRunnable.java +++ b/src/main/java/net/szum123321/textile_backup/core/restore/RestoreBackupRunnable.java @@ -27,7 +27,7 @@ import net.szum123321.textile_backup.core.ActionInitiator; import net.szum123321.textile_backup.core.LivingServer; import net.szum123321.textile_backup.core.Utilities; import net.szum123321.textile_backup.core.create.BackupContext; -import net.szum123321.textile_backup.core.create.BackupHelper; +import net.szum123321.textile_backup.core.create.MakeBackupRunnableFactory; import net.szum123321.textile_backup.core.restore.decompressors.GenericTarDecompressor; import net.szum123321.textile_backup.core.restore.decompressors.ZipDecompressor; @@ -55,7 +55,7 @@ public class RestoreBackupRunnable implements Runnable { awaitServerShutdown(); if(config.get().backupOldWorlds) { - BackupHelper.create( + MakeBackupRunnableFactory.create( BackupContext.Builder .newBackupContextBuilder() .setServer(ctx.server())