| borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommandResult.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | ●●●●● patch | view | raw | blame | history | |
| borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java | ●●●●● 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); }