Migrate application data (config, logs, backups) directory from

'$USER_HOME/.diylc' to '$USER_HOME/diylc' to avoid it being hidden on
some OSs
This commit is contained in:
bancika
2020-12-28 19:05:38 +01:00
parent b348513d0c
commit 373fde0d6f
11 changed files with 33 additions and 8 deletions
@@ -18,8 +18,13 @@
package org.diylc;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.Properties;
@@ -97,11 +102,7 @@ public class DIYLCStarter {
LOG.error("Could not initialize log4j configuration", e);
}
// initialize configuration
ConfigurationManager configurationManager = ConfigurationManager.getInstance();
XStream xStream = configurationManager.getSerializer();
ProjectFileManager.configure(xStream);
configurationManager.initialize("diylc");
initializeConfiguration();
// disable HIGHLIGHT_CONTINUITY_AREA config, keep it transient
ConfigurationManager.getInstance().writeValue(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false);
@@ -239,4 +240,24 @@ public class DIYLCStarter {
+ "Replace the main 'config.xml' file with the backup when running the latest version of DIYLC."
+ "</html>", "Warning", IView.WARNING_MESSAGE);
}
private static void initializeConfiguration() {
// migrate config file from old folder path to the new one
Path oldPath = Paths.get(Utils.getUserDataDirectory(".diylc") + "config.xml");
Path newPath = Paths.get(Utils.getUserDataDirectory("diylc") + "config.xml");
try {
if (oldPath.toFile().exists() && !newPath.toFile().exists()) {
LOG.info("Copying config file to the new directory");
Files.copy(oldPath, newPath, StandardCopyOption.REPLACE_EXISTING);
}
} catch (IOException e) {
LOG.error("Failed to copy config file to the new directory", e);
}
// initialize
ConfigurationManager configurationManager = ConfigurationManager.getInstance();
XStream xStream = configurationManager.getSerializer();
ProjectFileManager.configure(xStream);
configurationManager.initialize("diylc");
}
}
@@ -2,7 +2,7 @@ log4j.rootLogger = DEBUG, fileout, stdout
log4j.appender.fileout = org.diylc.appframework.miscutils.NewLogForEachRunFileAppender
log4j.appender.fileout.layout.ConversionPattern = %d{ABSOLUTE} %5p [%t] %c{1} - %m%n
log4j.appender.fileout.layout = org.apache.log4j.PatternLayout
log4j.appender.fileout.File = ${user.home}/.diylc/logs/log.txt
log4j.appender.fileout.File = ${user.home}/diylc/logs/log.txt
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p [%t] %c{1} - %m%n
@@ -77,7 +77,7 @@ public class HelpMenuPlugin implements IPlugIn {
HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Plugin API", IconLoader.ApplicationEdit.getIcon(), PLUGIN_URL), HELP_TITLE);
swingUI.injectMenuAction(new NavigateURLAction("Submit a Bug", IconLoader.Bug.getIcon(), BUG_URL), HELP_TITLE);
swingUI.injectMenuAction(new NavigateFolderAction("Access User Files", IconLoader.User.getIcon(), System.getProperty("user.home") + "/.diylc"), HELP_TITLE);
swingUI.injectMenuAction(new NavigateFolderAction("Access User Files", IconLoader.User.getIcon(), Utils.getUserDataDirectory("diylc")), HELP_TITLE);
swingUI.injectMenuAction(null, HELP_TITLE);
swingUI.injectMenuAction(new RecentUpdatesAction(), HELP_TITLE);
swingUI.injectMenuAction(null, HELP_TITLE);