Class Settings

java.lang.Object
de.willuhn.util.Settings

public class Settings extends 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 Details

    • Settings

      public Settings(String path, 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(String systemPath, String userPath, 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(File systemFile, 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 Details

    • 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 String[] getAttributes()
      Liefert eine Liste aller Attribut-Namen, die in dieser Settings-Instanz gespeichert wurden.
      Returns:
      Liste der Attribut-Namen.
    • getBoolean

      public boolean getBoolean(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(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(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(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 String getString(String name, 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 String[] getList(String name, 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(String name, boolean value)
      Speichert einen boolschen Wert.
      Parameters:
      name - Name des Attributs.
      value - Wert des Attributs.
    • setAttribute

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

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

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

      public void setAttribute(String name, 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(String name, 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.