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

Kai Reinhard
08.45.2018 e01e6d75d5667a723b6aebd0abfebe323514f7fa
refactoring...
5 files added
1 files renamed
7 files modified
263 ■■■■■ changed files
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java 10 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java 22 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveListCache.java 22 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/RepoInfoCache.java 18 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/RepoListCache.java 18 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Archive1.java 5 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Archive2.java 31 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/ArchiveList.java 30 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/ArchiveStats.java 18 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java 19 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoList.java 20 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepositoryMatcher.java 32 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java 18 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -4,7 +4,8 @@
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.Archive;
import de.micromata.borgbutler.json.borg.Archive1;
import de.micromata.borgbutler.json.borg.ArchiveList;
import de.micromata.borgbutler.json.borg.RepoInfo;
import de.micromata.borgbutler.json.borg.RepoList;
import org.apache.commons.exec.*;
@@ -44,13 +45,14 @@
     * @param archive
     * @return
     */
    public static String info(BorgRepoConfig repoConfig, Archive archive) {
    public static ArchiveList info(BorgRepoConfig repoConfig, Archive1 archive) {
        String json = execute(repoConfig, "info", repoConfig.getRepo() + "::" + archive.getArchive(), "--json");
        if (json == null) {
            return null;
        }
        log.info(json);
        return json;
        ArchiveList archiveList = JsonUtils.fromJson(ArchiveList.class, json);
        archiveList.setOriginalJson(json);
        return archiveList;
    }
    public static RepoList list(BorgRepoConfig repoConfig) {
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/AbstractCache.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.RepositoryMatcher;
import lombok.Getter;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
@@ -38,11 +39,26 @@
        return null;
    }
    public abstract boolean matches(T element, String identifier);
    public boolean matches(T element, String identifier) {
        if (!(element instanceof RepositoryMatcher)) {
            throw new UnsupportedOperationException("matches not implemented, only available for RepositoryMatcher: " + this.getClass());
        }
        return ((RepositoryMatcher) element).matches(identifier);
    }
    public abstract String getIdentifier(T element);
    public String getIdentifier(T element) {
        if (!(element instanceof RepositoryMatcher)) {
            throw new UnsupportedOperationException("matches not implemented, only available for RepositoryMatcher: " + this.getClass());
        }
        return ((RepositoryMatcher)element).getRepository().getId();
    }
    public abstract void updateFrom(T dest, T source);
    public void updateFrom(T dest, T source) {
        if (!(dest instanceof RepositoryMatcher)) {
            throw new UnsupportedOperationException("matches not implemented, only available for RepositoryMatcher: " + this.getClass());
        }
        ((RepositoryMatcher)dest).updateFrom(((RepositoryMatcher)source));
    }
    /**
     * Removes all entries (doesn't effect the cache files!).
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveListCache.java
New file
@@ -0,0 +1,22 @@
package de.micromata.borgbutler.cache;
import de.micromata.borgbutler.json.borg.ArchiveList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
public class ArchiveListCache extends AbstractCache<ArchiveList> {
    private static Logger log = LoggerFactory.getLogger(ArchiveListCache.class);
    public static final String CACHE_ARCHIVE_LISTS_BASENAME = "archive-lists";
    /**
     * Needed by jackson for deserialization.
     */
    ArchiveListCache() {
    }
    ArchiveListCache(File cacheDir) {
        super(cacheDir, CACHE_ARCHIVE_LISTS_BASENAME);
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/RepoInfoCache.java
@@ -1,7 +1,6 @@
package de.micromata.borgbutler.cache;
import de.micromata.borgbutler.json.borg.RepoInfo;
import de.micromata.borgbutler.json.borg.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,23 +10,6 @@
    private static Logger log = LoggerFactory.getLogger(RepoInfoCache.class);
    public static final String CACHE_REPOS_BASENAME = "repos";
    public boolean matches(RepoInfo element, String identifier) {
        Repository repository = element.getRepository();
        if (repository == null) {
            return false;
        }
        return identifier.equals(repository.getId()) || identifier.equals(repository.getName())
                || identifier.equals(repository.getLocation());
    }
    public String getIdentifier(RepoInfo element) {
        return element.getRepository().getId();
    }
    public void updateFrom(RepoInfo dest, RepoInfo source) {
        dest.updateFrom(source);
    }
    /**
     * Needed by jackson for deserialization.
     */
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/RepoListCache.java
@@ -1,7 +1,6 @@
package de.micromata.borgbutler.cache;
import de.micromata.borgbutler.json.borg.RepoList;
import de.micromata.borgbutler.json.borg.Repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,23 +10,6 @@
    private static Logger log = LoggerFactory.getLogger(RepoListCache.class);
    public static final String CACHE_REPO_LISTS_BASENAME = "repo-lists";
    public boolean matches(RepoList element, String identifier) {
        Repository repository = element.getRepository();
        if (repository == null) {
            return false;
        }
        return identifier.equals(repository.getId()) || identifier.equals(repository.getName())
                || identifier.equals(repository.getLocation());
    }
    public String getIdentifier(RepoList element) {
        return element.getRepository().getId();
    }
    public void updateFrom(RepoList dest, RepoList source) {
        dest.updateFrom(source);
    }
    /**
     * Needed by jackson for deserialization.
     */
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Archive1.java
File was renamed from borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Archive.java
@@ -5,7 +5,10 @@
import lombok.Getter;
import lombok.Setter;
public class Archive {
/**
 * This object is given by <tt>borg list repo</tt>.
 */
public class Archive1 {
    @Getter
    private String archive;
    @Getter
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Archive2.java
New file
@@ -0,0 +1,31 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
/**
 * This object is given by <tt>borg list archive</tt>.
 */
public class Archive2 {
    @Getter
    @JsonProperty("chunker_params")
    private int[] chunkerParams;
    /**
     * The command line used for creating this archive: borg create --filter...
     */
    @Getter
    @JsonProperty("command_line")
    private String[] commandLine;
    @Getter
    private String comment;
    @Getter
    private String start;
    @Getter
    private ArchiveStats stats;
    @Getter
    private String username;
    public String toString() {
        return JsonUtils.toJson(this, true);
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/ArchiveList.java
New file
@@ -0,0 +1,30 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
 * Result of <tt>borg list repo</tt>.
 */
public class ArchiveList extends RepositoryMatcher {
    @Getter
    private List<Archive2> archives;
    @Getter
    private Cache cache;
    @Getter
    private Encryption encryption;
    @Getter
    @Setter
    @JsonIgnore
    private String originalJson;
    public void updateFrom(ArchiveList archiveList) {
        super.updateFrom(archiveList);
        this.archives = archiveList.archives;
        this.cache = archiveList.cache;
        this.encryption = archiveList.encryption;
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/ArchiveStats.java
New file
@@ -0,0 +1,18 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
public class ArchiveStats {
    @Getter
    @JsonProperty("compressed_size")
    private long compressedSize;
    @Getter
    @JsonProperty("deduplicated_size")
    private long deduplicatedSize;
    @Getter
    private long nfiles;
    @Getter
    @JsonProperty("original_size")
    private long originalSize;
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java
@@ -1,12 +1,9 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
import lombok.Setter;
public class RepoInfo {
public class RepoInfo extends RepositoryMatcher {
    @Getter
    @JsonProperty("security_dir")
    private String securityDir;
@@ -14,23 +11,11 @@
    private Cache cache;
    @Getter
    private Encryption encryption;
    @Getter
    private Repository repository;
    @Getter
    @Setter
    @JsonIgnore
    private String originalJson;
    public String toString() {
        return JsonUtils.toJson(this, true);
    }
    public void updateFrom(RepoInfo repoInfo) {
        super.updateFrom(repoInfo);
        this.securityDir = repoInfo.securityDir;
        this.cache = repoInfo.cache;
        this.encryption = repoInfo.encryption;
        this.repository = repoInfo.getRepository();
        this.originalJson = repoInfo.originalJson;
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoList.java
@@ -1,32 +1,18 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
public class RepoList {
public class RepoList extends RepositoryMatcher {
    @Getter
    private List<Archive> archives;
    private List<Archive1> archives;
    @Getter
    private Encryption encryption;
    @Getter
    private Repository repository;
    @Getter
    @Setter
    @JsonIgnore
    private String originalJson;
    public String toString() {
        return JsonUtils.toJson(this, true);
    }
    public void updateFrom(RepoList repoList) {
        super.updateFrom(repoList);
        this.archives = repoList.archives;
        this.encryption = repoList.encryption;
        this.repository = repoList.getRepository();
        this.originalJson = repoList.originalJson;
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepositoryMatcher.java
New file
@@ -0,0 +1,32 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
import lombok.Setter;
public abstract class RepositoryMatcher {
    @Getter
    protected Repository repository;
    @Getter
    @Setter
    @JsonIgnore
    protected String originalJson;
    public String toString() {
        return JsonUtils.toJson(this, true);
    }
    public void updateFrom(RepositoryMatcher from) {
        this.repository = from.repository;
        this.originalJson = from.originalJson;
    }
    public boolean matches(String identifier) {
        if (repository == null) {
            return false;
        }
        return identifier.equals(repository.getId()) || identifier.equals(repository.getName())
                || identifier.equals(repository.getLocation());
    }
}
borgbutler-core/src/test/java/de/micromata/borgbutler/cache/CacheTest.java
@@ -4,7 +4,8 @@
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.json.borg.Archive;
import de.micromata.borgbutler.json.borg.Archive1;
import de.micromata.borgbutler.json.borg.ArchiveList;
import de.micromata.borgbutler.json.borg.RepoInfo;
import de.micromata.borgbutler.json.borg.RepoList;
import org.apache.commons.collections4.CollectionUtils;
@@ -53,9 +54,10 @@
                BorgRepoConfig repoConfig = repoConfigs.get(0);
                RepoList repoList = ButlerCache.getRepoListCache().get(repoConfig.getRepo());
                if (repoList != null && CollectionUtils.isNotEmpty(repoList.getArchives())) {
                    Archive archive = repoList.getArchives().get(0);
                    Archive1 archive = repoList.getArchives().get(0);
                    if (archive != null) {
                        String json = BorgCommands.info(repoConfig, archive);
                        ArchiveList list = BorgCommands.info(repoConfig, archive);
                        log.info(list.toString());
                    }
                }
            }
@@ -82,4 +84,14 @@
            assertNotNull(repoList);
        }
    }
    private void refresArchiveListCache(Configuration config, RepoListCache repoListCache) {
        for (BorgRepoConfig repo : config.getRepoConfigs()) {
            log.info("Processing repo list '" + repo + "'");
            RepoList repoList = BorgCommands.list(repo);
            repoListCache.upsert(repoList);
            repoList = repoListCache.get(repoList.getRepository().getId());
            assertNotNull(repoList);
        }
    }
}