From 403fb2eb98deb2e352f700b2503fdf5b27679c96 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Mon, 11 Feb 2019 22:31:55 +0000
Subject: [PATCH] Adding and removing repos.

---
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/BorgRepoConfigsRest.java |   38 ++++++++++++++++++++++++++++++++------
 1 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/BorgRepoConfigsRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/BorgRepoConfigsRest.java
index d80f327..a11e3ad 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/BorgRepoConfigsRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/BorgRepoConfigsRest.java
@@ -35,18 +35,44 @@
     @Produces(MediaType.TEXT_PLAIN)
     public void setRepoConfig(String jsonConfig) {
         BorgRepoConfig newRepoConfig = JsonUtils.fromJson(BorgRepoConfig.class, jsonConfig);
-        BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(newRepoConfig.getId());
-        if (repoConfig == null) {
-            log.error("Can't find repo config '" + newRepoConfig.getId() + "'. Can't save new settings.");
+        if (newRepoConfig == null) {
+            log.error("Internal Rest error. Can't parse BorgRepoConfig: " + jsonConfig);
             return;
         }
-        ButlerCache.getInstance().clearRepoCacheAccess(repoConfig.getRepo());
-        ButlerCache.getInstance().clearRepoCacheAccess(newRepoConfig.getRepo());
-        repoConfig.copyFrom(newRepoConfig);
+        if ("new".equals(newRepoConfig.getId())) {
+            newRepoConfig.setId(null);
+            ConfigurationHandler.getConfiguration().add(newRepoConfig);
+        } else {
+            BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(newRepoConfig.getId());
+            if (repoConfig == null) {
+                log.error("Can't find repo config '" + newRepoConfig.getId() + "'. Can't save new settings.");
+                return;
+            }
+            ButlerCache.getInstance().clearRepoCacheAccess(repoConfig.getRepo());
+            ButlerCache.getInstance().clearRepoCacheAccess(newRepoConfig.getRepo());
+            repoConfig.copyFrom(newRepoConfig);
+        }
         ConfigurationHandler.getInstance().save();
     }
 
     /**
+     * @param idOrName id or name of repo to remove from BorgButler.
+     * @return "OK" if removed or error string.
+     */
+    @GET
+    @Path("remove")
+    @Produces(MediaType.APPLICATION_JSON)
+    public String removeRepoConfig(@QueryParam("id") String idOrName) {
+        boolean result = ConfigurationHandler.getConfiguration().remove(idOrName);
+        if (!result) {
+            String error = "Repo config with id or name '" + idOrName + "' not found. Can't remove the repo.";
+            log.error(error);
+            return error;
+        }
+        return "OK";
+    }
+
+    /**
      * @param jsonRepoConfig All configuration value of the repo to check.
      * @return Result of borg (tbd.).
      */

--
Gitblit v1.10.0