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.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) | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -1,29 +1,29 @@ | |||
| /* | ||||
|     A simple backup mod for Fabric | ||||
|     Copyright (C) 2020  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/>.
 | ||||
|  *  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; | ||||
| 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); | ||||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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( | ||||
|  |  | |||
|  | @ -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.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()) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue