mirror of https://github.com/micromata/borgbackup-butler.git

Kai Reinhard
18.36.2018 42fe5c02ce58075e0a7229b31ff780c22f9847e1
Every archive contains now list of ArchiveShortInfo of all other archives inside the same repo (e. g. for calling diff functionality).
1 files added
2 files modified
88 ■■■■■ changed files
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java 14 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java 13 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java 61 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -5,6 +5,7 @@
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.config.Definitions;
import de.micromata.borgbutler.data.Archive;
import de.micromata.borgbutler.data.ArchiveShortInfo;
import de.micromata.borgbutler.data.Repository;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.*;
@@ -25,8 +26,6 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.*;
@@ -81,6 +80,7 @@
        }
        repository.setLastModified(DateUtils.format(repoList.getRepository().getLastModified()))
                .setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
        List<ArchiveShortInfo> archiveInfoList = new ArrayList<>();
        for (BorgArchive borgArchive : repoList.getArchives()) {
            Archive archive = new Archive()
                    .setName(borgArchive.getArchive())
@@ -91,6 +91,15 @@
                    .setRepoName(repository.getName())
                    .setRepoDisplayName(repoConfig.getDisplayName());
            repository.add(archive);
            archiveInfoList.add(new ArchiveShortInfo()
                    .setId(archive.getId())
                    .setName(archive.getName())
                    .setRepoId(archive.getRepoId())
                    .setTime(archive.getTime()));
        }
        for (Archive archive : repository.getArchives()) {
            // ArchiveInfoList for comparing current archives with one of all other archives.
            archive.setArchiveShortInfoList(archiveInfoList);
        }
    }
@@ -161,6 +170,7 @@
    /**
     * Stores the file in a subdirectory named with the repos display name.
     *
     * @param restoreHomeDir
     * @param repoConfig
     * @param archive
borgbutler-core/src/main/java/de/micromata/borgbutler/data/Archive.java
@@ -9,6 +9,7 @@
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.List;
/**
 *
@@ -81,6 +82,18 @@
    @Getter
    @Setter
    private String hostname;
    /**
     * For comparing functionality.
     */
    @Getter
    @Setter
    private List<ArchiveShortInfo> archiveShortInfoList;
    /**
     * Is the file list of this archive loaded and available in Butler's cache.
     */
    @Getter
    @Setter
    private boolean fileListAlreadyCached;
    /**
     *
borgbutler-core/src/main/java/de/micromata/borgbutler/data/ArchiveShortInfo.java
New file
@@ -0,0 +1,61 @@
package de.micromata.borgbutler.data;
import de.micromata.borgbutler.json.borg.BorgArchiveLimits;
import de.micromata.borgbutler.json.borg.BorgArchiveStats;
import de.micromata.borgbutler.json.borg.BorgCache;
import de.micromata.borgbutler.json.borg.BorgEncryption;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
/**
 * Used e. g. for the drop down box for comparing current archive with others.
 */
public class ArchiveShortInfo implements Serializable, Comparable<ArchiveShortInfo> {
    /**
     * For convenience purposes for the client.
     */
    @Getter
    @Setter
    private String repoName;
    @Getter
    @Setter
    private String repoId;
    @Getter
    @Setter
    private String name;
    @Getter
    @Setter
    private String id;
    @Getter
    @Setter
    private String time;
    /**
     * Is the file list of this archive loaded and available in Butler's cache.
     */
    @Getter
    @Setter
    private boolean fileListAlreadyCached;
    /**
     *
     * @return repoName::archiveName
     */
    public String getBorgIdentifier() {
        return repoName + "::" + name;
    }
    /**
     * In reverse order, compares times.
     *
     * @param o
     * @return
     */
    @Override
    public int compareTo(ArchiveShortInfo o) {
        // Reverse order:
        return StringUtils.compare(o.time, this.time);
    }
}