diff options
Diffstat (limited to 'dozentenmodul/src/main/java/config/config_file.java')
| -rw-r--r-- | dozentenmodul/src/main/java/config/config_file.java | 162 |
1 files changed, 85 insertions, 77 deletions
diff --git a/dozentenmodul/src/main/java/config/config_file.java b/dozentenmodul/src/main/java/config/config_file.java index 754e67a9..3d562b35 100644 --- a/dozentenmodul/src/main/java/config/config_file.java +++ b/dozentenmodul/src/main/java/config/config_file.java @@ -6,69 +6,65 @@ import java.io.IOException; import org.ini4j.Wini; public class config_file { - - private String configPath = null; - public boolean createConfig() throws IOException{ + // Nur die Wini als member + private static Wini ini = null; + + // Konstruktor ermittelt der Pfad zur Konfigurationsdatei. + // Unterscheidet dabei Windows/Linux + public static void init() throws IOException { + // Hauptvariablen nur lokal notwendig + String configPath = null; + File configFile = null; // Unterscheide zwischen Windows/Unix String OSName = System.getProperty("os.name").toLowerCase(); System.out.println("Machine's OS: " + OSName); - if (OSName.contains("windows")) - { + if (OSName.contains("windows")) { // Windows machine. Use the environment variable 'APPDATA' which // should point to a path similar to: // C:\Users\<user>\AppData\Roaming String appDataPath = System.getenv("APPDATA"); - if (!appDataPath.isEmpty()) - { - System.out.println("APPDATA: " + appDataPath); + if (!appDataPath.isEmpty()) { configPath = appDataPath + "\\bwSuite\\config.ini"; - } - else - { + } else { // APPDATA was empty, let's build it ourselves... System.out.println("APPDATA ist leer."); - configPath = System.getProperty("user.home") + "\\AppData\\Roaming\\bwSuite\\config.ini" - + configPath = System.getProperty("user.home") + "\\AppData\\Roaming\\bwSuite\\config.ini"; } - } - else if (OSName.contains("linux")) - { + } else if (OSName.contains("linux")) { configPath=System.getProperty("user.home") + "/.config/bwSuite/config.ini"; - + } else { + // Nicht Windows oder Linux, TODO MacOS Support? + configPath = null; } - if (configPath == null) - { - System.out.println("Config file path could not be determined."); - } - //config_file="C:\\Users\\"+System.getProperty("user.name")+"\\AppData\\Roaming\\bwLehrpoolSuite"; //File fuer den Ordner erzeugen - File configFile=new File(configPath); - Wini ini; + if (!(configPath.isEmpty()||configPath == null)) { + configFile = new File(configPath); + } else { + throw new IOException("Konnte kein Pfad für die Konfigurationsdatei ermitteln."); + } - //Pruefen ob Ordner schon existiert - if(!configFile.exists()) - { - System.out.println("Ordner \"bwLehrpoolSuite\" exisitiert nicht - lege ihn jetzt an."); - //Wenn nicht erzeuge Ordner - if (!configFile.getParentFile().mkdirs()) - { - System.out.print("Konnte Verzeichnisstruktur nicht erstellen: " + configFile.getParentFile()); - System.out.println(" - keine weitere Aktion"); - // jetzt nichts mehr + // Checke, ob der Ordner existiert. + if (!configFile.getParentFile().exists()) { + System.out.println("Ordner " + configFile.getParentFile() + " exisitiert nicht - lege ihn jetzt an."); + // Wenn nicht, erzeuge Ordner + if (!configFile.getParentFile().mkdirs()) { + throw new IOException("Konnte '" + configFile.getParentFile() + "' nicht erstellen."); } - - //Erzeuge eine neue Datei + } + + // Pruefen, ob Datei schon existiert + if (!configFile.exists()) { + // Erzeuge eine neue Datei configFile.createNewFile(); - ini=new Wini(configFile); - - //Wenn in die Datei geschrieben werden kann - if(configFile.canWrite()==true) - { - System.out.println("Erzeuge \"config.ini.\""); + + // Wenn in die Datei geschrieben werden kann + if(configFile.canWrite()) { + ini = new Wini(configFile); + System.out.println("Erzeuge '" + configFile + "'..."); //Schreibe Config ini.put("main", "BillOfRights", false); ini.put("main", "vmware", false); @@ -78,44 +74,56 @@ public class config_file { ini.put("main", "Letzter Uploadpfad", ""); ini.store(); - return true; } else { - System.out.println("Konnte \"config.ini\" nicht anlegen - keine weitere Aktion."); + throw new IOException("Konnte nicht in '" + configFile + "' schreiben. Haben Sie Rechte dazu?"); } - + } else { + System.out.println("'" + configFile + "' existiert bereits - keine weitere Aktion."); + ini = new Wini(configFile); } - else - { - System.out.println("Ordner \"bwLehrpoolSuite\" existiert bereits - keine weitere Aktion."); - //Wenn Ordner schon existiert, pruefe ob Datei existiert - if(!configFile.exists()) - { - System.out.println("\"config.ini\" existiert nicht - lege jetzt an."); - //Wenn nicht, erzeuge diese - configFile.createNewFile(); - ini=new Wini(configFile); - - if(configFile.canWrite()==true) - { - System.out.println("Schreibe jetzt \"config.ini\"."); - //Schreibe Konfig in File - ini.put("main", "BillOfRights",false); - ini.put("main", "vmware", false); - ini.put("main", "Benutzername speichern", false); - ini.put("main", "Benutzername", ""); - ini.put("main", "Letzter Downloadpfad", ""); - ini.put("main", "Letzter Uploadpfad", ""); - ini.store(); - - return true; - } else { - System.out.println("Kann \"config.ini\" nicht schreiben - keine weitere Aktion."); - } - } else { - System.out.println("\"config.ini\" existiert bereits - keine weitere Aktion."); - } + } + // Ende Konstruktor. + + // Public funktion zur Abfrage der Boolean-Werte + // Gibt Wert von Attribut 'key' in Sektion 'section', falls es existiert. + // Sonst gibt es 'defaultValue' zurück. + // + // Usage: getBoolean(<section>, <key>, <defaultValue>) + // Ex.: getBoolean("main", "Benutzername", "NichtGesetzt"); + public static boolean getBoolean(String section, String key, Boolean defaultValue) { + if (ini.containsKey(section) && ini.get(section).containsKey(key)) { + return ini.get(section, key, Boolean.class); + } else { + return defaultValue; + } + } + + // Public funktion zur Abfrage der String-Werte + // Usage: getBoolean(<key>) + public static String getString(String section, String key, String defaultValue) { + if (ini.containsKey(section) && ini.get(section).containsKey(key)) { + return ini.get(section, key); + } else { + return defaultValue; + } + } + + public static boolean setBoolean(String section, String key, Boolean value) { + return ini.put(section, key, value) != null; + } + + public static boolean setString(String section, String key, String value) { + return ini.put(section, key, value) != null; + } + + public static boolean store() { + try { + ini.store(); + return true; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return false; } - return true; - } } |
