Class Settings


  • public class Settings
    extends java.lang.Object
    Diese Klasse erweitert Java-Properties um Typsicherheit fuer primitive Typen, Support zum Laden und Speichern von String-Arrays, automatisches Abspeichern beim Aufruf einer Set-Methode und sogar Speichern schon beim Lesen. Das ist nuetzlich, wenn man eine Software ohne properties-Dateien ausliefern will aber dennoch nach dem ersten Start beim Benutzer die Config-Dateien mit den Default-Werten angelegt werden damit dieser nicht in der Dokumentation nach den Schluesselnamen suchen muss sondern sie bereits mit Default-Werten in den Dateien vorfindet. Wird die Properties-Datei von aussen (z.Bsp. mit einem Texteditor) geaendert, wird das automatisch erkannt und die Datei intern neu geladen.
    Author:
    willuhn
    • Constructor Summary

      Constructors 
      Constructor Description
      Settings​(java.io.File systemFile, java.io.File userFile)
      Erzeugt eine neue Instanz.
      Settings​(java.lang.String path, java.lang.Class clazz)
      Erzeugt eine neue Instanz der Settings, die exclusiv nur fuer diese Klasse gelten.
      Settings​(java.lang.String systemPath, java.lang.String userPath, java.lang.Class clazz)
      Erzeugt eine neue Instanz der Settings, die exclusiv nur fuer diese Klasse gelten.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String[] getAttributes()
      Liefert eine Liste aller Attribut-Namen, die in dieser Settings-Instanz gespeichert wurden.
      boolean getBoolean​(java.lang.String name, boolean defaultValue)
      Liefert den Wert des genannten Attributs als Boolean.
      double getDouble​(java.lang.String name, double defaultValue)
      Liefert den Wert des genannten Attributs als double.
      int getInt​(java.lang.String name, int defaultValue)
      Liefert den Wert des genannten Attributs als int.
      java.lang.String[] getList​(java.lang.String name, java.lang.String[] defaultValues)
      Liefert ein Array von Werten.
      long getLong​(java.lang.String name, long defaultValue)
      Liefert den Wert des genannten Attributs als long.
      java.lang.String getString​(java.lang.String name, java.lang.String defaultValue)
      Liefert den Wert des Attribute.
      void setAttribute​(java.lang.String name, boolean value)
      Speichert einen boolschen Wert.
      void setAttribute​(java.lang.String name, double value)
      Speichert einen Double-Wert.
      void setAttribute​(java.lang.String name, int value)
      Speichert einen Integer-Wert.
      void setAttribute​(java.lang.String name, long value)
      Speichert einen Long-Wert.
      void setAttribute​(java.lang.String name, java.lang.String value)
      Speichert das Attribut mit dem zugehoerigen Wert .
      void setAttribute​(java.lang.String name, java.lang.String[] values)
      Speichert das Attribut mit der zugehoerigen Liste von Werten .
      void setStoreWhenRead​(boolean b)
      Legt fest, ob die Einstellungen schon beim Lesen gespeichert werden sollen.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Settings

        public Settings​(java.lang.String path,
                        java.lang.Class clazz)
        Erzeugt eine neue Instanz der Settings, die exclusiv nur fuer diese Klasse gelten. Existieren bereits Settings fuer die Klasse, werden sie gleich geladen. Hierbei wird eine Properties-Datei [classname].properties im angegebenen Verzeichnis angelegt.
        Parameters:
        path - Pfad zu den Einstellungen.
        clazz - Klasse, fuer die diese Settings gelten.
      • Settings

        public Settings​(java.lang.String systemPath,
                        java.lang.String userPath,
                        java.lang.Class clazz)
        Erzeugt eine neue Instanz der Settings, die exclusiv nur fuer diese Klasse gelten. Existieren bereits Settings fuer die Klasse, werden sie gleich geladen. Hierbei wird eine Properties-Datei [classname].properties im angegebenen Verzeichnis angelegt.
        Parameters:
        systemPath - Pfad zu ggf vorhandenen System-Presets.
        userPath - Pfad zu den User-Einstellungen.
        clazz - Klasse, fuer die diese Settings gelten.
      • Settings

        public Settings​(java.io.File systemFile,
                        java.io.File userFile)
        Erzeugt eine neue Instanz.
        Parameters:
        systemFile - Properties-Datei mit den System-Vorgaben.
        userFile - Properties-Datei des Users, welche die System-Vorgaben ueberschreiben.
    • Method Detail

      • setStoreWhenRead

        public void setStoreWhenRead​(boolean b)
        Legt fest, ob die Einstellungen schon beim Lesen gespeichert werden sollen. Hintergrund: Jede Get-Funktion (getString(), getBoolean(),..) besitzt einen Parameter mit dem Default-Wert falls der Parameter noch nicht existiert. Ist dies der Fall und die zugehoerige Set-Methode wird nie aufgerufen, dann erscheint der Parameter nie physisch in der properties-Datei. Diese muesste dann manuell mit den Parametern befuellt werden, um sie aendern zu koennen. Da die Parameter-Namen aber nur in der Java-Klasse bekannt sind, wird es einem Fremden schwer fallen, die Namen der Parameter zu ermitteln. Fuer genau diesen Fall kann der Parameter auf true gesetzt werden. Alle abgefragten Parameter, werden dann nach der Abfrage mit dem aktuellen Wert (ggf. dem Default-Wert) sofort gespeichert. Der Default-Wert ist "false". Per Default wird beim Lesen also nicht geschrieben.
        Parameters:
        b - true, wenn sofort geschrieben werden soll.
      • getAttributes

        public java.lang.String[] getAttributes()
        Liefert eine Liste aller Attribut-Namen, die in dieser Settings-Instanz gespeichert wurden.
        Returns:
        Liste der Attribut-Namen.
      • getBoolean

        public boolean getBoolean​(java.lang.String name,
                                  boolean defaultValue)
        Liefert den Wert des genannten Attributs als Boolean. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben.
        Parameters:
        name - Name des Attributs.
        defaultValue - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        true oder false.
      • getInt

        public int getInt​(java.lang.String name,
                          int defaultValue)
        Liefert den Wert des genannten Attributs als int. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben. Hinweis: Die Funktion wirft keine NumberFormat-Exception, wenn der Wert nicht in eine Zahl gewandelt werden kann. Stattdessen wird der Default-Wert zurueckgegeben.
        Parameters:
        name - Name des Attributs.
        defaultValue - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        der Wert des Attributs.
      • getLong

        public long getLong​(java.lang.String name,
                            long defaultValue)
        Liefert den Wert des genannten Attributs als long. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben. Hinweis: Die Funktion wirft keine NumberFormat-Exception, wenn der Wert nicht in eine Zahl gewandelt werden kann. Stattdessen wird der Default-Wert zurueckgegeben.
        Parameters:
        name - Name des Attributs.
        defaultValue - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        der Wert des Attributs.
      • getDouble

        public double getDouble​(java.lang.String name,
                                double defaultValue)
        Liefert den Wert des genannten Attributs als double. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben. Hinweis: Die Funktion wirft keine NumberFormat-Exception, wenn der Wert nicht in eine Zahl gewandelt werden kann. Stattdessen wird der Default-Wert zurueckgegeben.
        Parameters:
        name - Name des Attributs.
        defaultValue - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        der Wert des Attributs.
      • getString

        public java.lang.String getString​(java.lang.String name,
                                          java.lang.String defaultValue)
        Liefert den Wert des Attribute. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben.
        Parameters:
        name - Name des Attributs.
        defaultValue - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        der Wert des Attributs.
      • getList

        public java.lang.String[] getList​(java.lang.String name,
                                          java.lang.String[] defaultValues)
        Liefert ein Array von Werten. Wird das Attribut nicht gefunden oder hat keinen Wert, wird defaultValue zurueckgegeben. Es koennen maximal 256 Werte gelesen oder gespeichert werden.
        Parameters:
        name - Name des Attributs.
        defaultValues - DefaultWert, wenn das Attribut nicht existiert.
        Returns:
        Werte des Attributs in Form eines String-Arrays.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 boolean value)
        Speichert einen boolschen Wert.
        Parameters:
        name - Name des Attributs.
        value - Wert des Attributs.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 int value)
        Speichert einen Integer-Wert.
        Parameters:
        name - Name des Attributs.
        value - Wert des Attributs.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 double value)
        Speichert einen Double-Wert.
        Parameters:
        name - Name des Attributs.
        value - Wert des Attributs.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 long value)
        Speichert einen Long-Wert.
        Parameters:
        name - Name des Attributs.
        value - Wert des Attributs.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 java.lang.String value)
        Speichert das Attribut mit dem zugehoerigen Wert . Wenn ein gleichnamiges Attribut bereits existiert, wird es ueberschrieben. Ist der Wert des Attributes null, wird es entfernt.
        Parameters:
        name - Name des Attributs.
        value - Wert des Attributs.
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 java.lang.String[] values)
        Speichert das Attribut mit der zugehoerigen Liste von Werten . Wenn ein gleichnamiges Attribut bereits existiert, werden dessen Werte ueberschrieben. Ist der Wert des Attributes null, wird es entfernt. Von dem Array werden die ersten maximal 256 Elemente gespeichert. Alle darueber hinausgehenden Werte, werden ignoriert.
        Parameters:
        name - Name des Attributs.
        values - Werte des Attributs.