schmitzm.lang
Class ResourceProvider

java.lang.Object
  extended by schmitzm.lang.ResourceProvider

public class ResourceProvider
extends Object

Stellt den Zugriff auf ein ResourceBundle zur Verfuegung. Hierbei muss der Name (Pfad) ein standard-maessig verwendeten Bundles angebenen werden. Es besteht die Moeglichkeit, dass fehlende Ressourcen nicht mit einer MissingResourceException behandelt werden, sondern mit null, bzw. einem Alternativ-String ignoriert werden.
Zudem erlaubt es der ResourceProvider, dass ein alternatives Resource-Bundle spezifiziert wird (resetResourceBundle(..)). Ist dieses gesetzt, wird primaer darin nach einer Ressource gesucht. Nur wenn dort die Ressource nicht gefunden wird, wird auf das Standard-Bundle zurueckgegriffen.

Anwendungsbereich:
Diverse Standard-Libraries stellen jeweils einen eigenen ResourceProvider zur Verfuegung, dessen Bundle im Pfad des Standard-Library hinterlegt ist (z.B. JFreeChartUtil.RESOURCE: Ressourcen hinterlegt in schmitzm.jfree.ResourceBundle_XXX.properties).
Sollen fuer eine spezielle Applikation diese Ressourcen (u.U. nur teilweise) abgeaendert oder fuer eine neue Sprache erweitert werden, kann dies geschehen, ohne Zugriff auf die Standard-Library zu haben. Die Applikation kann einfach resetResourceBundle(..) aufrufen und so den Resource-Provider anweisen, zunaechst ein applikationsspezifisches Bundle zu verwenden (welches in einem appl.spez. Pfad hinterlegt ist). Alle Library-internen Zugriffe werden durch den ResourceProvider umgelenkt. Wenn das appl.spez. Bundle eine Ressource nicht zur Verfuegung stellt, wird automatisch auf das Standard-Bundle zurueck gegriffen.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
static String MISSING_RESOURCE_STRING
          Diese String constante wird zurückgeliefert, wenn keine Wert fuer den Schluessel gefunden wurde.
 
Constructor Summary
ResourceProvider(Class clazz, Locale rootLocale)
          Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle".
ResourceProvider(Class clazz, Locale rootLocale, boolean ignoreMissingResource)
          Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle".
ResourceProvider(Class clazz, Locale rootLocale, boolean ignoreMissingResource, String missingResourceString)
          Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle".
ResourceProvider(String defaultResourceBundle, Locale rootLocale)
          Erzeugt neuen neuen Resource-Provider.
ResourceProvider(String defaultResourceBundle, Locale rootLocale, boolean ignoreMissingResource)
          Erzeugt neuen neuen Resource-Provider.
ResourceProvider(String defaultResourceBundle, Locale rootLocale, boolean ignoreMissingResource, String missingResourceString)
          Erzeugt neuen neuen Resource-Provider.
 
Method Summary
static void createPropertyFile(ResourceProvider provider, Locale l, boolean append)
          Erzeugt eine Property-Datei (.properties) fuer ein Resource Bundle.
 Set<Locale> getAvailableLocales(boolean inclRootLocale)
          Liefert alle Sprachen, die der ResourceProvider zur Verfuegung stellt.
static Set<Locale> getAvailableLocales(ResourceProvider resourceProvider, boolean inclRootLocale)
          Liefert alle Sprachen, die ein ResourceProvider zur Verfuegung stellt.
 String getBundleName()
          Liefert den Namen des Resource-Bundle.
 String getDefaultBundleName()
          Liefert den Namen des Standard-Resource-Bundle.
 String getKeyPrefix()
          Liefert das Prefix, das im Alternativ-Bundle jedem Key vorangestellt ist.
 SortedSet<String> getKeys()
          Liefert alle Keys unter denen eine Ressource hinterlegt ist.
 String getMissingResourceString()
          Liefert den Alternativ-String, der beim Ignorieren fehlender Ressourcen von getString(String) zurueckgegeben wird.
 Object getObject(String key)
          Liefert ein Objekt aus dem Resource-Bundle.
 Object getObject(String key, Locale requestedLocale)
          Liefert ein Objekt aus dem Resource-Bundle.
static File getPropertyFile(ResourceProvider provider, Locale l)
          Liefert die Property-Datei (.properties) fuer ein Resource Bundle.
 Locale getRootLocale()
          Liefert die Standard-Sprache des Resource-Bundles ("Fall-Back").
 String getString(String key, Locale requestedLocale, Object... replParams)
          Liefert einen String aus dem Resource-Bundle.
 String getString(String key, Object... replParams)
          Liefert einen String aus dem Resource-Bundle.
 boolean isMissingResourceIgnored()
          Prueft, ob fehlende Ressourcen ignoriert werden (mit null oder Alternativ-String) oder ob eine MissingResourceException geworfen wird.
 void resetResourceBundle()
          Entfernt das alternative Resource-Bundle, so dass im folgenden immer direkt im Standard-Bundle gesucht wird.
 void resetResourceBundle(String bundle)
          Setzt ein alternatives Resource-Bundle, in welchem als erstes nach einer Ressource gesucht wird.
 void resetResourceBundle(String bundle, String keyPrefix)
          Setzt ein alternatives Resource-Bundle, in welchem als erstes nach einer Ressource gesucht wird.
 void setIgnoreMissingResource(boolean ignoreMissingResource)
          Bestimmt, ob fehlende Ressourcen ignoriert werden (mit null oder Alternativ-String) oder ob eine MissingResourceException geworfen wird.
 void setMissingResourceString(String missingResourceString)
          Setzt den Alternativ-String, der beim Ignorieren fehlender Ressourcen von getString(String) zurueckgegeben wird.
 String toString()
          Liefert den Namen des Bundles.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MISSING_RESOURCE_STRING

public static final String MISSING_RESOURCE_STRING
Diese String constante wird zurückgeliefert, wenn keine Wert fuer den Schluessel gefunden wurde.

See Also:
Constant Field Values
Constructor Detail

ResourceProvider

public ResourceProvider(Class clazz,
                        Locale rootLocale)
Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle". Fehlende Ressourcen werden ignoriert und mit null oder MISSING_RESOURCE_STRING ("???") als Alternativ-String behandelt.

Parameters:
defaultResourceBundle - Name des Standard Resource-Bundle
rootLocale - Sprache des Root-Bundles

ResourceProvider

public ResourceProvider(Class clazz,
                        Locale rootLocale,
                        boolean ignoreMissingResource)
Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle". Wenn fehlende Ressourcen ignoriert werden, wird MISSING_RESOURCE_STRING ("???") als Alternativ-String verwendet.

Parameters:
clazz - Bestimmt das Package in dem das Bundle "RessourceBundle" gesucht wird
rootLocale - Sprache des Root-Bundles
ignoreMissingResource - bestimmt, ob fehlende Ressourcen ignoriert werden oder mit einer MissingResourceException behandelt werden

ResourceProvider

public ResourceProvider(Class clazz,
                        Locale rootLocale,
                        boolean ignoreMissingResource,
                        String missingResourceString)
Erzeugt neuen neuen Resource-Provider mit dem Namen "ResourceBundle".

Parameters:
clazz - Bestimmt das Package in dem das Bundle "RessourceBundle" gesucht wird
rootLocale - Sprache des Root-Bundles
ignoreMissingResource - bestimmt, ob fehlende Ressourcen ignoriert werden oder mit einer MissingResourceException behandelt werden
missingResourceString - Alternativ-String der - wenn fehlende Ressourcen ignoriert werden - von #getString(String) zurueckgegeben wird

ResourceProvider

public ResourceProvider(String defaultResourceBundle,
                        Locale rootLocale)
Erzeugt neuen neuen Resource-Provider. Fehlende Ressourcen werden ignoriert und mit null oder MISSING_RESOURCE_STRING ("???") als Alternativ-String behandelt.

Parameters:
defaultResourceBundle - Name des Standard Resource-Bundle
rootLocale - Sprache des Root-Bundles

ResourceProvider

public ResourceProvider(String defaultResourceBundle,
                        Locale rootLocale,
                        boolean ignoreMissingResource)
Erzeugt neuen neuen Resource-Provider. Wenn fehlende Ressourcen ignoriert werden, wird MISSING_RESOURCE_STRING ("???") als Alternativ-String verwendet.

Parameters:
defaultResourceBundle - Name des Standard Resource-Bundle
rootLocale - Sprache des Root-Bundles
ignoreMissingResource - bestimmt, ob fehlende Ressourcen ignoriert werden oder mit einer MissingResourceException behandelt werden

ResourceProvider

public ResourceProvider(String defaultResourceBundle,
                        Locale rootLocale,
                        boolean ignoreMissingResource,
                        String missingResourceString)
Erzeugt neuen neuen Resource-Provider.

Parameters:
defaultResourceBundle - Name des Standard Resource-Bundle
rootLocale - Sprache des Root-Bundles
ignoreMissingResource - bestimmt, ob fehlende Ressourcen ignoriert werden oder mit einer MissingResourceException behandelt werden
missingResourceString - Alternativ-String der - wenn fehlende Ressourcen ignoriert werden - von #getString(String) zurueckgegeben wird
Method Detail

toString

public String toString()
Liefert den Namen des Bundles.

Overrides:
toString in class Object
See Also:
getBundleName()

getKeys

public SortedSet<String> getKeys()
Liefert alle Keys unter denen eine Ressource hinterlegt ist.


isMissingResourceIgnored

public boolean isMissingResourceIgnored()
Prueft, ob fehlende Ressourcen ignoriert werden (mit null oder Alternativ-String) oder ob eine MissingResourceException geworfen wird.


setIgnoreMissingResource

public void setIgnoreMissingResource(boolean ignoreMissingResource)
Bestimmt, ob fehlende Ressourcen ignoriert werden (mit null oder Alternativ-String) oder ob eine MissingResourceException geworfen wird.


getMissingResourceString

public String getMissingResourceString()
Liefert den Alternativ-String, der beim Ignorieren fehlender Ressourcen von getString(String) zurueckgegeben wird.


setMissingResourceString

public void setMissingResourceString(String missingResourceString)
Setzt den Alternativ-String, der beim Ignorieren fehlender Ressourcen von getString(String) zurueckgegeben wird.


getObject

public Object getObject(String key)
Liefert ein Objekt aus dem Resource-Bundle. Wenn gesetzt, wird zunaechst im alternativen Bundle (ggf. mit Prefix) gesucht. Wenn die Ressource dort nicht gefunden wird, wird auf das Standard-Bundle zurueckgegriffen. Wenn die Suche (auch) dort nicht erfolgreich ist, wird je nach Einstellung eine MissingResourceException geworfen oder null zurueck gegeben.

Parameters:
key - Key unter dem der String gesucht wird

getObject

public Object getObject(String key,
                        Locale requestedLocale)
Liefert ein Objekt aus dem Resource-Bundle. Wenn gesetzt, wird zunaechst im alternativen Bundle (ggf. mit Prefix) gesucht. Wenn die Ressource dort nicht gefunden wird, wird auf das Standard-Bundle zurueckgegriffen. Wenn die Suche (auch) dort nicht erfolgreich ist, wird je nach Einstellung eine MissingResourceException geworfen oder null zurueck gegeben.

Parameters:
requestedLocale - Wenn null, dann wird die im System verwendete default Locale benutzt. Sonst wir versucht der String für diese Sprache zurückzugeben.
key - Key unter dem der String gesucht wird

getString

public String getString(String key,
                        Object... replParams)
Liefert einen String aus dem Resource-Bundle. Wenn gesetzt, wird zunaechst im alternativen Bundle (ggf. mit Prefix) gesucht. Wenn die Ressource dort nicht gefunden wird, wird auf das Standard-Bundle zurueckgegriffen. Wenn die Suche (auch) dort nicht erfolgreich ist, wird je nach Einstellung eine MissingResourceException geworfen oder der Alternativ-String zurueck gegeben.

Parameters:
key - Key unter dem der String gesucht wird
replParams - Strings/Zahlen, mit denen die im String enthaltenen Wildcards ${0}, ${1}, ${2}, usw. ersetzt werden (sehr hilfreich z.B. fuer lokalisierte Fehlermeldungen)

getString

public String getString(String key,
                        Locale requestedLocale,
                        Object... replParams)
Liefert einen String aus dem Resource-Bundle. Wenn gesetzt, wird zunaechst im alternativen Bundle (ggf. mit Prefix) gesucht. Wenn die Ressource dort nicht gefunden wird, wird auf das Standard-Bundle zurueckgegriffen. Wenn die Suche (auch) dort nicht erfolgreich ist, wird je nach Einstellung eine MissingResourceException geworfen oder der Alternativ-String zurueck gegeben.

Parameters:
key - Key unter dem der String gesucht wird
requestedLocale - Wenn null, dann wird die im System verwendete default Locale benutzt. Sonst wir versucht der String für diese Sprache zurückzugeben.
replParams - Strings/Zahlen, mit denen die im String enthaltenen Wildcards ${0}, ${1}, ${2}, usw. ersetzt werden (sehr hilfreich z.B. fuer lokalisierte Fehlermeldungen)

resetResourceBundle

public void resetResourceBundle(String bundle,
                                String keyPrefix)
Setzt ein alternatives Resource-Bundle, in welchem als erstes nach einer Ressource gesucht wird. Dieses sollte die gleiche Fall-Back-Sprache haben, wie das Standard-Bundle.

Parameters:
bundle - String
keyPrefix - Prefix, welches bei der Suche im alternativen Bundle automatisch jedem Key vorangestellt wird

resetResourceBundle

public void resetResourceBundle(String bundle)
Setzt ein alternatives Resource-Bundle, in welchem als erstes nach einer Ressource gesucht wird. Dieses sollte die gleiche Fall-Back-Sprache haben, wie das Standard-Bundle. Ein Key-Prefix wird nicht verwendet.

Parameters:
bundle - String

resetResourceBundle

public void resetResourceBundle()
Entfernt das alternative Resource-Bundle, so dass im folgenden immer direkt im Standard-Bundle gesucht wird.


getKeyPrefix

public String getKeyPrefix()
Liefert das Prefix, das im Alternativ-Bundle jedem Key vorangestellt ist.


getBundleName

public String getBundleName()
Liefert den Namen des Resource-Bundle. Wenn ein Alternativ-Bundle gesetzt wurde, wird dessen Name zurueckgegeben.


getDefaultBundleName

public String getDefaultBundleName()
Liefert den Namen des Standard-Resource-Bundle.


getRootLocale

public Locale getRootLocale()
Liefert die Standard-Sprache des Resource-Bundles ("Fall-Back").


getAvailableLocales

public Set<Locale> getAvailableLocales(boolean inclRootLocale)
Liefert alle Sprachen, die der ResourceProvider zur Verfuegung stellt.

Parameters:
inclRootLocale - wenn false wird die "Fall-Back"-Sprache nicht beruecksichtigt

getAvailableLocales

public static Set<Locale> getAvailableLocales(ResourceProvider resourceProvider,
                                              boolean inclRootLocale)
Liefert alle Sprachen, die ein ResourceProvider zur Verfuegung stellt.

Parameters:
resourceProvider - ResourceProvider
inclRootLocale - wenn false wird die "Fall-Back"-Sprache nicht beruecksichtigt

getPropertyFile

public static File getPropertyFile(ResourceProvider provider,
                                   Locale l)
                            throws URISyntaxException
Liefert die Property-Datei (.properties) fuer ein Resource Bundle.

Parameters:
provider - Resource-Provider fuer den das neue Bundle angelegt wird
l - Sprache des neuen Bundles
Throws:
URISyntaxException - wenn bei der Ermittlung des Datei-Pfads ein Fehler auftritt

createPropertyFile

public static void createPropertyFile(ResourceProvider provider,
                                      Locale l,
                                      boolean append)
                               throws URISyntaxException,
                                      FileNotFoundException
Erzeugt eine Property-Datei (.properties) fuer ein Resource Bundle. In dieser sind bereits alle Keys des Bundles enthalten und mit einem Dummy-Wert vorbelegt.

Parameters:
provider - Resource-Provider fuer den das neue Bundle angelegt wird
l - Sprache des neuen Bundles
append - wenn true, wird eine bestehende Datei erweitert, andernfalls ueberschrieben
Throws:
URISyntaxException
FileNotFoundException