X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2Fconfiguration%2FConfigurationManager.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2Fconfiguration%2FConfigurationManager.java;h=4bf00c92066d6c411db4972608bcb8643d736f24;hb=dcc5f6b34d80ffcebd604993305e9924bcdffbd3;hp=0000000000000000000000000000000000000000;hpb=c53db8d1a426eb1f67ac013a80d68988a3fe54c2;p=instantlauncher.git diff --git a/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java b/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java new file mode 100755 index 0000000..4bf00c9 --- /dev/null +++ b/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java @@ -0,0 +1,79 @@ +package eu.svjatoslav.instantlauncher.configuration; + +import com.esotericsoftware.yamlbeans.YamlReader; +import com.esotericsoftware.yamlbeans.YamlWriter; + +import java.io.*; +import java.util.HashSet; +import java.util.Map; + +public class ConfigurationManager { + + private static final String CONFIG_FILE_NAME = ".instantlauncher"; + + private boolean propertiesChanged = false; + + Configuration configuration; + + public ConfigurationManager() throws IOException { + initialize(); + } + + private File getPropertiesFile() { + return new File(System.getProperty("user.home") + "/" + CONFIG_FILE_NAME); + } + + public File getNavigationRootDirectory() { + if (configuration.navigationRootPath == null){ + configuration.navigationRootPath = System.getProperty("user.home") + "/"; + propertiesChanged = true; + registerDefaultAssociations(); + } + + return new File(configuration.navigationRootPath); + } + + private void initialize() throws IOException { + + loadIfFileExists(); + + validatePropertiesFile(); + + if (propertiesChanged) { + saveFile(); + } + } + + private void loadIfFileExists() throws IOException { + final File propertiesFile = getPropertiesFile(); + if (!propertiesFile.exists()) + return; + + YamlReader reader = new YamlReader(new FileReader(propertiesFile)); + configuration = reader.read(Configuration.class); + if (configuration == null) { + configuration = new Configuration(); + configuration.fileAssociations = new HashSet<>(); + }; + } + + private void saveFile() throws IOException { + YamlWriter writer = new YamlWriter(new FileWriter(getPropertiesFile())); + writer.write(configuration); + writer.close(); + } + + private void validatePropertiesFile() { + getNavigationRootDirectory(); + } + + private void registerFileAssociation(String fileRegex, String command){ + FileAssociation association = new FileAssociation(fileRegex, command); + configuration.fileAssociations.add(association); + propertiesChanged = true; + } + + private void registerDefaultAssociations(){ + registerFileAssociation(".jpeg$", "eog {file}"); + } +}