summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java
diff options
context:
space:
mode:
authorJakob Heher <jakob.heher@iaik.tugraz.at>2022-08-10 10:47:13 +0200
committerJakob Heher <jakob.heher@iaik.tugraz.at>2022-08-10 10:47:13 +0200
commit362ef2282c3efa0a2a8b807218f61c77697c6367 (patch)
tree61e333fbb74be72e5354990c000ab0ad650e4629 /pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java
parentd8b153cc7c9f57922d1d6bed4cdbe07e3564a926 (diff)
downloadpdf-over-362ef2282c3efa0a2a8b807218f61c77697c6367.tar.gz
pdf-over-362ef2282c3efa0a2a8b807218f61c77697c6367.tar.bz2
pdf-over-362ef2282c3efa0a2a8b807218f61c77697c6367.zip
offer factory reset if startup fails, or config screen fails to load, cf. #114
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java
index 8d2800e7..eda1e59f 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationManager.java
@@ -24,6 +24,8 @@ import java.util.Locale;
import java.util.Properties;
import at.asit.pdfover.commons.Profile;
+
+import org.apache.commons.io.FileUtils;
import org.eclipse.swt.graphics.Point;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,6 +77,44 @@ public class ConfigurationManager {
this.configurationOverlay = new ConfigurationDataInMemory();
}
+ static public void factoryResetPersistentConfig() {
+ // tell logback to close all file handles
+ ((ch.qos.logback.classic.LoggerContext)LoggerFactory.getILoggerFactory()).stop();
+
+ File configDirectory = new File(Constants.CONFIG_DIRECTORY);
+ File backupDirectory = new File(Constants.CONFIG_BACKUP_DIRECTORY);
+
+ // delete existing backup, if any
+ FileUtils.deleteQuietly(backupDirectory);
+
+ // attempt 1: try to move the old config directory to a backup location
+ try {
+ FileUtils.moveDirectory(
+ configDirectory,
+ backupDirectory
+ );
+ } catch (Exception e) {
+ System.out.println("Failed move config directory to backup location:");
+ e.printStackTrace();
+
+ // attempt 2: try to simply force delete the config directory
+ try {
+ FileUtils.forceDelete(configDirectory);
+ } catch (Exception e2) {
+ System.out.println("Failed to delete config directory:");
+ e2.printStackTrace();
+
+ // attempt 3: try to schedule the config directory for force deletion on JVM exit
+ try {
+ FileUtils.forceDeleteOnExit(configDirectory);
+ } catch (Exception e3) {
+ System.out.println("Failed to schedule config directory for deletion:");
+ e3.printStackTrace();
+ }
+ }
+ }
+ }
+
/* load from disk */
public void loadFromDisk() throws IOException {
if (loaded)