diff options
author | Keuin <[email protected]> | 2021-01-21 12:13:48 +0800 |
---|---|---|
committer | keuin <[email protected]> | 2021-01-21 12:15:18 +0800 |
commit | 821b497a256e0c2825a78c0b070ee3398f79a509 (patch) | |
tree | 1dbb4abf3a818ebb773f736511ba5ff3d9916694 /src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java | |
parent | 64345efb5f4397993fbc9f2a2102ebcd3fe9f125 (diff) |
Fix minor bug in ZipUtil. Do some clean if backup is failed. Small code refactor.
Diffstat (limited to 'src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java')
-rw-r--r-- | src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java b/src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java index 87a3043..86a60df 100644 --- a/src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java +++ b/src/main/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredPrimitiveBackupMethod.java @@ -14,6 +14,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Paths; import java.time.LocalDateTime; +import java.util.logging.Logger; public class ConfiguredPrimitiveBackupMethod implements ConfiguredBackupMethod { @@ -21,6 +22,8 @@ public class ConfiguredPrimitiveBackupMethod implements ConfiguredBackupMethod { private final String levelPath; private final String backupSavePath; + private final Logger LOGGER = Logger.getLogger(ConfiguredPrimitiveBackupMethod.class.getName()); + public ConfiguredPrimitiveBackupMethod(String backupFileName, String levelPath, String backupSavePath) { this.backupFileName = backupFileName; this.levelPath = levelPath; @@ -34,20 +37,34 @@ public class ConfiguredPrimitiveBackupMethod implements ConfiguredBackupMethod { } @Override - public PrimitiveBackupFeedback backup() throws IOException { + public PrimitiveBackupFeedback backup() { + + PrimitiveBackupFeedback feedback; + try { String customBackupName = new PrimitiveBackupFileNameEncoder().decode(backupFileName).customName; BackupMetadata backupMetadata = new BackupMetadata(System.currentTimeMillis(), customBackupName); PrintUtil.info(String.format("zip(srcPath=%s, destPath=%s)", levelPath, backupSavePath)); PrintUtil.info("Compressing level ..."); ZipUtil.makeBackupZip(levelPath, backupSavePath, backupFileName, backupMetadata); + feedback = new PrimitiveBackupFeedback(true, FilesystemUtil.getFileSizeBytes(backupSavePath, backupFileName)); } catch (ZipUtilException exception) { PrintUtil.info("Infinite recursive of directory tree detected, backup was aborted."); - return new PrimitiveBackupFeedback(false, 0); + feedback = new PrimitiveBackupFeedback(false, 0); + } catch (IOException e) { + feedback = new PrimitiveBackupFeedback(false, 0); } - // Get backup file size and return - return new PrimitiveBackupFeedback(true, FilesystemUtil.getFileSizeBytes(backupSavePath, backupFileName)); + if (!feedback.isSuccess()) { + // do clean-up if failed + File backupFile = new File(backupSavePath, backupFileName); + if (backupFile.exists()) { + if (!backupFile.delete()) { + LOGGER.warning("Failed to clean up: cannot delete file " + backupFile.getName()); + } + } + } + return feedback; } @Override |