From 4f6306e702cf9fc77ea48a2d7307de39f5b11915 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 07 Dec 2018 23:40:02 +0000
Subject: [PATCH] ...
---
.gitignore | 1
borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java | 3 +
README.adoc | 21 ++++++++++
borgbutler-core/out/test/resources/log4j.properties | 8 ++++
borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java | 16 +++++++
borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java | 9 ----
borgbutler-core/src/test/java/de/micromata/borgbutler/config/ConfigHandlerTest.java | 19 +++++++++
7 files changed, 66 insertions(+), 11 deletions(-)
diff --git a/.gitignore b/.gitignore
index fe0252a..a9543ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,4 @@
*.ipr
*.iml
*.iws
+borgbutler-core/build
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..9ba1eff
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,21 @@
+Micromata BorgBackup-Butler
+===========================
+Micromata GmbH, Kai Reinhard
+:toc:
+:toclevels: 4
+
+Copyright (C) 2018
+
+ifdef::env-github,env-browser[:outfilesuffix: .adoc]
+
+== For developers
+
+=== Lombok required
+==== Installing Lombok in IntelliJ
+[.text-center]
+https://github.com/mplushnikov/lombok-intellij-plugin[Lombok Intellij plugin description^] +
+[.text-left]
+Or go to
+[.text-center]
+https://projectlombok.org/[Lombok home page^] +
+[.text-left]
diff --git a/borgbutler-core/out/test/resources/log4j.properties b/borgbutler-core/out/test/resources/log4j.properties
new file mode 100644
index 0000000..be0a5f2
--- /dev/null
+++ b/borgbutler-core/out/test/resources/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootLogger=info, stdout
+log4j.logger.de.micromata.paypal=debug
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java
index c3bf87d..6bc7160 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/Main.java
@@ -1,16 +1,7 @@
package de.micromata.borgbutler;
-import de.micromata.borgbutler.config.BorgRepo;
-import de.micromata.borgbutler.config.Configuration;
-import de.micromata.borgbutler.config.ConfigurationHandler;
-
public class Main {
public static void main(String[] args) {
System.out.println("Hello world.");
- Configuration configuration = ConfigurationHandler.getConfiguration();
- BorgRepo repo = new BorgRepo();
- repo.setName("Hetzner-cloud").setPasswordCommand("dslfds").setRepo("sdfls");
- configuration.add(repo);
- ConfigurationHandler.getInstance().write();
}
}
\ No newline at end of file
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java
index ec48e89..1e9b71d 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/Configuration.java
@@ -2,11 +2,12 @@
import lombok.Getter;
+import java.util.ArrayList;
import java.util.List;
public class Configuration {
@Getter
- private List<BorgRepo> repos;
+ private List<BorgRepo> repos = new ArrayList<>();
public void add(BorgRepo repo) {
repos.add(repo);
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
index a141234..033e272 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/config/ConfigurationHandler.java
@@ -1,6 +1,8 @@
package de.micromata.borgbutler.config;
import de.micromata.borgbutler.json.JsonUtils;
+import lombok.AccessLevel;
+import lombok.Getter;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,7 +15,11 @@
private static Logger log = LoggerFactory.getLogger(ConfigurationHandler.class);
private static ConfigurationHandler instance = new ConfigurationHandler();
private static final String CONFIG_FILENAME = ".borgbutler.json";
+ private static final String CONFIG_BACKUP_FILENAME = ".borgbutler-bak.json";
+ @Getter(AccessLevel.PACKAGE)
private File configFile;
+ @Getter(AccessLevel.PACKAGE)
+ private File backupConfigFile;
private Configuration configuration = new Configuration();
public static ConfigurationHandler getInstance() {
@@ -25,6 +31,7 @@
}
public void read() {
+ log.info("Reading config file '" + configFile.getAbsolutePath() + "'");
try {
String json = FileUtils.readFileToString(configFile, Charset.forName("UTF-8"));
this.configuration = JsonUtils.fromJson(Configuration.class, json);
@@ -35,8 +42,14 @@
}
public void write() {
- String json = JsonUtils.toJson(configuration);
+ String json = JsonUtils.toJson(configuration, true);
try {
+ if (configFile.exists()) {
+ // Create backup-file first:
+ log.info("Creating backup file first: '" + backupConfigFile.getAbsolutePath() + "'");
+ FileUtils.copyFile(configFile, backupConfigFile);
+ }
+ log.info("Writing config file '" + configFile.getAbsolutePath() + "'");
FileUtils.write(configFile, json, Charset.forName("UTF-8"));
} catch (IOException ex) {
log.error("Error while trying to write config file: " + configFile.getAbsolutePath() + ": " + ex.getMessage(), ex);
@@ -45,5 +58,6 @@
private ConfigurationHandler() {
configFile = new File(System.getProperty("user.home"), CONFIG_FILENAME);
+ backupConfigFile = new File(System.getProperty("user.home"), CONFIG_BACKUP_FILENAME);
}
}
diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/config/ConfigHandlerTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/config/ConfigHandlerTest.java
new file mode 100644
index 0000000..4d8489f
--- /dev/null
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/config/ConfigHandlerTest.java
@@ -0,0 +1,19 @@
+package de.micromata.borgbutler.config;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+
+public class ConfigHandlerTest {
+ @Test
+ void readWriteTest() throws IOException {
+ File origConfigFile = new File(System.getProperty("user.home"), ".borgbutler-orig.json");
+ FileUtils.copyFile(ConfigurationHandler.getInstance().getConfigFile(), origConfigFile);
+ Configuration configuration = ConfigurationHandler.getConfiguration();
+ ConfigurationHandler.getInstance().read();
+ ConfigurationHandler.getInstance().write();
+ FileUtils.copyFile(origConfigFile, ConfigurationHandler.getInstance().getConfigFile());
+ }
+}
--
Gitblit v1.10.0