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

Kai Reinhard
10.18.2019 b9a02dcfbbce3c3b473b2f583e1f83440b58e63f
BorgCommandResult...
1 files added
2 files modified
60 ■■■■ changed files
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java 31 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java 25 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java 4 ●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java
New file
@@ -0,0 +1,31 @@
package de.micromata.borgbutler;
import de.micromata.borgbutler.jobs.JobResult;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
/**
 * Holder of result object of borg commands. Holds the result object as well as error messages and status.
 */
public class BorgCommandResult<T> {
    @Getter
    @Setter(AccessLevel.PACKAGE)
    private T object;
    @Getter
    @Setter(AccessLevel.PACKAGE)
    private JobResult<String> jobResult;
    public JobResult.Status getStatus() {
        return jobResult != null ? jobResult.getStatus() : JobResult.Status.ERROR;
    }
    public String getError() {
        if (jobResult != null) {
            return jobResult.getErrorString();
        }
        return "Unkown error... (please refer the log files)";
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -91,18 +91,19 @@
     * @param repoConfig
     * @return Parsed repo config returned by Borg command (without archives).
     */
    public static Repository info(BorgRepoConfig repoConfig) {
    public static BorgCommandResult<Repository> info(BorgRepoConfig repoConfig) {
        BorgCommand command = new BorgCommand()
                .setRepoConfig(repoConfig)
                .setCommand("info")
                .setParams("--json") // --progress has no effect.
                .setDescription("Loading info of repo '" + repoConfig.getDisplayName() + "'.");
        JobResult<String> jobResult = getResult(command);
        if (jobResult == null || jobResult.getStatus() != JobResult.Status.OK) {
            return null;
        BorgCommandResult<Repository> result = new BorgCommandResult<>();
        getResult(result, command);
        if (result.getStatus() != JobResult.Status.OK) {
            return result;
        }
        String result = jobResult.getResultObject();
        BorgRepoInfo repoInfo = JsonUtils.fromJson(BorgRepoInfo.class, result);
        String resultJson = result.getJobResult().getResultObject();
        BorgRepoInfo repoInfo = JsonUtils.fromJson(BorgRepoInfo.class, resultJson);
        BorgRepository borgRepository = repoInfo.getRepository();
        Repository repository = new Repository()
                .setId(borgRepository.getId())
@@ -115,7 +116,7 @@
                .setSecurityDir(repoInfo.getSecurityDir())
                .setLastCacheRefresh(DateUtils.format(LocalDateTime.now()));
        DemoRepos.repoWasRead(repoConfig, repository);
        return repository;
        return result.setObject(repository);
    }
    /**
@@ -271,6 +272,16 @@
        return restoreDir;
    }
    private static void getResult(BorgCommandResult<?> result, BorgCommand command) {
        BorgJob<Void> job = execute(command);
        JobResult<String> jobResult = job.getResult();
        result.setJobResult(jobResult);
        if (jobResult == null || jobResult.getStatus() == JobResult.Status.ERROR) {
            jobResult.setErrorString(job.getErrorString(2000));
        }
        job.cleanUp();
    }
    private static JobResult<String> getResult(BorgCommand command) {
        BorgJob<Void> job = execute(command);
        JobResult<String> jobResult = job.getResult();
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -1,5 +1,6 @@
package de.micromata.borgbutler.cache;
import de.micromata.borgbutler.BorgCommandResult;
import de.micromata.borgbutler.BorgCommands;
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
@@ -75,7 +76,8 @@
            log.warn("Error while deserializing repository (maybe data format was changed). Reloading...");
        }
        if (repository == null || repository.getLocation() == null) {
            repository = BorgCommands.info(repoConfig);
            BorgCommandResult<Repository> result = BorgCommands.info(repoConfig);
            repository = result.getObject();
            if (repository != null) {
                repoCacheAccess.put(repoConfig.getRepo(), repository);
            }