From 08ac6aaea58b7309ea95a12ca6227a6ca3ce4db5 Mon Sep 17 00:00:00 2001 From: Keuin Date: Mon, 25 Jan 2021 15:25:34 +0800 Subject: Improve user interaction. Code refactor. --- .../com/keuin/kbackupfabric/ui/BackupManager.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/java/com/keuin/kbackupfabric/ui/BackupManager.java (limited to 'src/main/java/com/keuin/kbackupfabric/ui/BackupManager.java') diff --git a/src/main/java/com/keuin/kbackupfabric/ui/BackupManager.java b/src/main/java/com/keuin/kbackupfabric/ui/BackupManager.java new file mode 100644 index 0000000..abd7d5b --- /dev/null +++ b/src/main/java/com/keuin/kbackupfabric/ui/BackupManager.java @@ -0,0 +1,64 @@ +package com.keuin.kbackupfabric.ui; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; + +/** + * Holding all types of backups for the user interaction logic. + */ +public class BackupManager { + + private final File backupStorageDirectory; + + public BackupManager(File backupStorageDirectory) { + this.backupStorageDirectory = backupStorageDirectory; + } + + public BackupManager(String backupStorageDirectory) { + this.backupStorageDirectory = new File(backupStorageDirectory); + } + + /** + * Get available backups in the disk. + * + * @return all backups. + */ + public Iterable getAllBackups() { + return new Iterable() { + @NotNull + @Override + public Iterator iterator() { + return new Iterator() { + private final Iterator fileIterator = Arrays.stream(backupStorageDirectory.listFiles()).filter(file -> { + String name = file.getName().toLowerCase(); + return name.endsWith(".zip") || name.endsWith(".kbi"); + }).iterator(); + + @Override + public boolean hasNext() { + return fileIterator.hasNext(); + } + + @Override + public BackupInfo next() { + try { + File backupFile = fileIterator.next(); + String fileName = backupFile.getName().toLowerCase(); + if (fileName.endsWith(".zip")) + return PrimitiveBackupInfo.fromFile(backupFile); + if (fileName.endsWith(".kbi")) + return IncrementalBackupInfo.fromFile(backupFile); + throw new RuntimeException("Invalid backup file extname"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }; + } + }; + } +} -- cgit v1.2.3