Separated BackupHelper into the factory and the cleanup (MakeBackupRunnableFactory & Cleanup)
							parent
							
								
									b7da7dbc6f
								
							
						
					
					
						commit
						b3a340deab
					
				|  | @ -39,8 +39,8 @@ import net.szum123321.textile_backup.config.ConfigHelper; | ||||||
| import net.szum123321.textile_backup.config.ConfigPOJO; | import net.szum123321.textile_backup.config.ConfigPOJO; | ||||||
| import net.szum123321.textile_backup.core.ActionInitiator; | import net.szum123321.textile_backup.core.ActionInitiator; | ||||||
| import net.szum123321.textile_backup.core.create.BackupContext; | 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.BackupScheduler; | ||||||
|  | import net.szum123321.textile_backup.core.create.MakeBackupRunnableFactory; | ||||||
| 
 | 
 | ||||||
| public class TextileBackup implements ModInitializer { | public class TextileBackup implements ModInitializer { | ||||||
|     public static final String MOD_NAME = "Textile Backup"; |     public static final String MOD_NAME = "Textile Backup"; | ||||||
|  | @ -67,7 +67,7 @@ public class TextileBackup implements ModInitializer { | ||||||
|             Globals.INSTANCE.shutdownQueueExecutor(60000); |             Globals.INSTANCE.shutdownQueueExecutor(60000); | ||||||
| 
 | 
 | ||||||
|             if (config.get().shutdownBackup && Globals.INSTANCE.globalShutdownBackupFlag.get()) { |             if (config.get().shutdownBackup && Globals.INSTANCE.globalShutdownBackupFlag.get()) { | ||||||
|                 BackupHelper.create( |                 MakeBackupRunnableFactory.create( | ||||||
|                         BackupContext.Builder |                         BackupContext.Builder | ||||||
|                                 .newBackupContextBuilder() |                                 .newBackupContextBuilder() | ||||||
|                                 .setServer(server) |                                 .setServer(server) | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ import net.minecraft.server.command.CommandManager; | ||||||
| import net.minecraft.server.command.ServerCommandSource; | import net.minecraft.server.command.ServerCommandSource; | ||||||
| import net.szum123321.textile_backup.TextileBackup; | import net.szum123321.textile_backup.TextileBackup; | ||||||
| import net.szum123321.textile_backup.TextileLogger; | 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; | import net.szum123321.textile_backup.core.Utilities; | ||||||
| 
 | 
 | ||||||
| public class CleanupCommand { | public class CleanupCommand { | ||||||
|  | @ -38,7 +38,7 @@ public class CleanupCommand { | ||||||
|         log.sendInfo( |         log.sendInfo( | ||||||
|                 source, |                 source, | ||||||
|                 "Deleted: {} files.", |                 "Deleted: {} files.", | ||||||
|                 BackupHelper.executeFileLimit(source, Utilities.getLevelName(source.getServer())) |                 Cleanup.executeFileLimit(source, Utilities.getLevelName(source.getServer())) | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         return 1; |         return 1; | ||||||
|  |  | ||||||
|  | @ -26,7 +26,7 @@ import net.szum123321.textile_backup.Globals; | ||||||
| import net.szum123321.textile_backup.TextileBackup; | import net.szum123321.textile_backup.TextileBackup; | ||||||
| import net.szum123321.textile_backup.TextileLogger; | import net.szum123321.textile_backup.TextileLogger; | ||||||
| import net.szum123321.textile_backup.core.create.BackupContext; | 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; | import javax.annotation.Nullable; | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +43,7 @@ public class StartBackupCommand { | ||||||
|     private static int execute(ServerCommandSource source, @Nullable String comment) { |     private static int execute(ServerCommandSource source, @Nullable String comment) { | ||||||
|         try { |         try { | ||||||
|             Globals.INSTANCE.getQueueExecutor().submit( |             Globals.INSTANCE.getQueueExecutor().submit( | ||||||
|                     BackupHelper.create( |                     MakeBackupRunnableFactory.create( | ||||||
|                             BackupContext.Builder |                             BackupContext.Builder | ||||||
|                                     .newBackupContextBuilder() |                                     .newBackupContextBuilder() | ||||||
|                                     .setCommandSource(source) |                                     .setCommandSource(source) | ||||||
|  |  | ||||||
|  | @ -1,29 +1,29 @@ | ||||||
| /* | /* | ||||||
|     A simple backup mod for Fabric |  *  A simple backup mod for Fabric | ||||||
|     Copyright (C) 2020  Szum123321 |  *  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 <https://www.gnu.org/licenses/>.
 | ||||||
|  |  * | ||||||
|  |  */ | ||||||
| 
 | 
 | ||||||
|     This program is free software: you can redistribute it and/or modify | package net.szum123321.textile_backup.core; | ||||||
|     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 <https://www.gnu.org/licenses/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| package net.szum123321.textile_backup.core.create; |  | ||||||
| 
 | 
 | ||||||
| import net.minecraft.server.command.ServerCommandSource; | import net.minecraft.server.command.ServerCommandSource; | ||||||
| import net.szum123321.textile_backup.Globals; | import net.szum123321.textile_backup.Globals; | ||||||
| import net.szum123321.textile_backup.TextileBackup; | import net.szum123321.textile_backup.TextileBackup; | ||||||
| import net.szum123321.textile_backup.TextileLogger; | import net.szum123321.textile_backup.TextileLogger; | ||||||
| import net.szum123321.textile_backup.config.ConfigHelper; | import net.szum123321.textile_backup.config.ConfigHelper; | ||||||
| import net.szum123321.textile_backup.core.Utilities; |  | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.nio.file.Files; | import java.nio.file.Files; | ||||||
|  | @ -35,55 +35,14 @@ import java.util.concurrent.atomic.AtomicInteger; | ||||||
| import java.util.concurrent.atomic.AtomicLong; | import java.util.concurrent.atomic.AtomicLong; | ||||||
| import java.util.stream.Stream; | import java.util.stream.Stream; | ||||||
| 
 | 
 | ||||||
| public class BackupHelper { | public class Cleanup { | ||||||
| 	private final static TextileLogger log = new TextileLogger(TextileBackup.MOD_NAME); | 	private final static TextileLogger log = new TextileLogger(TextileBackup.MOD_NAME); | ||||||
| 	private final static ConfigHelper config = ConfigHelper.INSTANCE; | 	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) { | 	public static int executeFileLimit(ServerCommandSource ctx, String worldName) { | ||||||
| 		Path root = Utilities.getBackupRootPath(worldName); | 		Path root = Utilities.getBackupRootPath(worldName); | ||||||
| 		int deletedFiles = 0; | 		int deletedFiles = 0; | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 		if (Files.isDirectory(root) && Files.exists(root) && !isEmpty(root)) { | 		if (Files.isDirectory(root) && Files.exists(root) && !isEmpty(root)) { | ||||||
| 			if (config.get().maxAge > 0) { // delete files older that configured
 | 			if (config.get().maxAge > 0) { // delete files older that configured
 | ||||||
| 				final long now = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC); | 				final long now = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC); | ||||||
|  | @ -44,7 +44,7 @@ public class BackupScheduler { | ||||||
|             if(scheduled) { |             if(scheduled) { | ||||||
|                 if(nextBackup <= now) { |                 if(nextBackup <= now) { | ||||||
|                     Globals.INSTANCE.getQueueExecutor().submit( |                     Globals.INSTANCE.getQueueExecutor().submit( | ||||||
|                             BackupHelper.create( |                             MakeBackupRunnableFactory.create( | ||||||
|                                     BackupContext.Builder |                                     BackupContext.Builder | ||||||
|                                             .newBackupContextBuilder() |                                             .newBackupContextBuilder() | ||||||
|                                             .setServer(server) |                                             .setServer(server) | ||||||
|  | @ -63,7 +63,7 @@ public class BackupScheduler { | ||||||
|         } else if(!config.get().doBackupsOnEmptyServer && server.getPlayerManager().getCurrentPlayerCount() == 0) { |         } else if(!config.get().doBackupsOnEmptyServer && server.getPlayerManager().getCurrentPlayerCount() == 0) { | ||||||
|             if(scheduled && nextBackup <= now) { |             if(scheduled && nextBackup <= now) { | ||||||
|                 Globals.INSTANCE.getQueueExecutor().submit( |                 Globals.INSTANCE.getQueueExecutor().submit( | ||||||
|                         BackupHelper.create( |                         MakeBackupRunnableFactory.create( | ||||||
|                                 BackupContext.Builder |                                 BackupContext.Builder | ||||||
|                                         .newBackupContextBuilder() |                                         .newBackupContextBuilder() | ||||||
|                                         .setServer(server) |                                         .setServer(server) | ||||||
|  |  | ||||||
|  | @ -23,6 +23,7 @@ import net.szum123321.textile_backup.TextileBackup; | ||||||
| import net.szum123321.textile_backup.TextileLogger; | import net.szum123321.textile_backup.TextileLogger; | ||||||
| import net.szum123321.textile_backup.config.ConfigHelper; | import net.szum123321.textile_backup.config.ConfigHelper; | ||||||
| import net.szum123321.textile_backup.core.ActionInitiator; | 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.create.compressors.*; | ||||||
| import net.szum123321.textile_backup.core.Utilities; | import net.szum123321.textile_backup.core.Utilities; | ||||||
| import net.szum123321.textile_backup.core.create.compressors.tar.AbstractTarArchiver; | 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); |                 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) { |             if(config.get().broadcastBackupDone) { | ||||||
|                 Utilities.notifyPlayers( |                 Utilities.notifyPlayers( | ||||||
|  |  | ||||||
|  | @ -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 <https://www.gnu.org/licenses/>.
 | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 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); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -27,7 +27,7 @@ import net.szum123321.textile_backup.core.ActionInitiator; | ||||||
| import net.szum123321.textile_backup.core.LivingServer; | import net.szum123321.textile_backup.core.LivingServer; | ||||||
| import net.szum123321.textile_backup.core.Utilities; | import net.szum123321.textile_backup.core.Utilities; | ||||||
| import net.szum123321.textile_backup.core.create.BackupContext; | 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.GenericTarDecompressor; | ||||||
| import net.szum123321.textile_backup.core.restore.decompressors.ZipDecompressor; | import net.szum123321.textile_backup.core.restore.decompressors.ZipDecompressor; | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +55,7 @@ public class RestoreBackupRunnable implements Runnable { | ||||||
|         awaitServerShutdown(); |         awaitServerShutdown(); | ||||||
| 
 | 
 | ||||||
|         if(config.get().backupOldWorlds) { |         if(config.get().backupOldWorlds) { | ||||||
|             BackupHelper.create( |             MakeBackupRunnableFactory.create( | ||||||
|                     BackupContext.Builder |                     BackupContext.Builder | ||||||
|                             .newBackupContextBuilder() |                             .newBackupContextBuilder() | ||||||
|                             .setServer(ctx.server()) |                             .setServer(ctx.server()) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue