package util; import java.io.*; import java.nio.file.*; import java.util.Properties; /** * Globale Konfiguration des Schulungsstatistik-Tools. * - Erstellt automatisch ~/.schulungsstatistik/config.properties * - Lädt vorhandene Werte oder setzt Standardwerte * - Speichert Änderungen automatisch */ public class Config { private static final Properties props = new Properties(); // Standardpfad für die Datenbank private static final String dbPath_default = "Y:\\Gruppen\\Bibliothek-Oeffentliches\\14. Information\\14.1 Informations- und Schulungsstatistik\\system\\schulungsstatistik.db"; private static String dbPath = dbPath_default; // Speicherort der Config-Datei private static final Path CONFIG_DIR = Paths.get(System.getProperty("user.home"), ".schulungsstatistik"); private static final Path CONFIG_FILE = CONFIG_DIR.resolve("config.properties"); // Wird beim Laden der Klasse ausgeführt static { load(); } /** Setzt den Pfad zur Datenbank und speichert ihn sofort */ public static void setDbPath(String path) { if (path != null && !path.isBlank()) { dbPath = path; props.setProperty("db.path", path); save(); } } /** Wird von der Config-UI verwendet, um neuen Pfad zu speichern */ public static void saveDbPathFromUI(String newPath) { if (newPath == null || newPath.isBlank()) return; setDbPath(newPath); System.out.println("Datenbankpfad aktualisiert: " + newPath); } public static String getDbPath() { if (dbPath == null || dbPath.isBlank() || !Files.exists(Paths.get(dbPath))) { System.err.println("Warnung: Ungültiger Datenbankpfad, Standardwert wird verwendet."); dbPath = dbPath_default; props.setProperty("db.path", dbPath_default); save(); } return dbPath; } public static void load() { try { if (!Files.exists(CONFIG_DIR)) { Files.createDirectories(CONFIG_DIR); } if (Files.exists(CONFIG_FILE)) { try (InputStream in = Files.newInputStream(CONFIG_FILE)) { props.load(in); String loaded = props.getProperty("db.path"); if (loaded == null || loaded.isBlank() || !Files.exists(Paths.get(loaded))) { dbPath = dbPath_default; props.setProperty("db.path", dbPath_default); save(); } else { dbPath = loaded; } } } else { dbPath = dbPath_default; props.setProperty("db.path", dbPath_default); save(); } } catch (IOException e) { System.err.println("Fehler beim Laden der Konfiguration: " + e.getMessage()); dbPath = dbPath_default; // Fallback } } /** Speichert aktuelle Werte in die Config-Datei */ public static void save() { try { if (!Files.exists(CONFIG_DIR)) { Files.createDirectories(CONFIG_DIR); } try (OutputStream out = Files.newOutputStream(CONFIG_FILE)) { props.store(out, "Schulungsstatistik Tool Konfiguration"); } } catch (IOException e) { System.err.println("Fehler beim Speichern der Konfiguration: " + e.getMessage()); } } }