Hej allihop,
Jag funderar på att skriva en ResourceBundle-klass. Den som följer med Java API:et är ju inte så fullmatad med finesser direkt... :)
Jag hade nämligen tänkt lägga till funktionalitet för att kunna använda nycklar i värdena. Detta kanske låter lite konstigt, men jag ska visa.
Properties-fil som den ser ut idag (delar av den iaf.):
# Sökvägen till applikationens root
path.root = /home/app/public_html/
# Sökvägen till användarnas kataloger
path.users = /home/app/public_html/users/
# Sökvägen till xmlfilerna
path.users.xml = /home/app/public_html/users/xml/
Properties-fil som jag vill att den skall kunna användas, med nycklar i värdena (för mindre redundans):
# Sökvägen till applikationens root
path.root = /home/app/public_html/
# Sökvägen till användarnas kataloger
path.users = [path.root]/users/
# Sökvägen till användarnas xmlfiler (i användarkatalogen)
path.users.xml = [path.users]/xml
Fördelen med detta är ju att man bara behöver ändra på några få ställen i Properties-filen, den dag man skall migrera systemet, etc. Risken för att någon anger fel värde någonstans, minskar ju också drastiskt.
Men hur kan man implementera detta på ett smart sätt? Så här ser min väääldigt enkla klass ut idag:
public class SystemProperties
{
// Förhindrar instansiering av denna klass.
private SystemProperties() {}
public static String get(String p_key)
{
ResourceBundle rb = ResourceBundle.getBundle("system");
try{
return rb.getString(p_key).trim();
} catch(Exception e) {// Felhantering}
}
}
Antar att man får skriva någon slags rekursiv funktion? Men bör man göra det med en statisk metod. Eller har det ingen betydelse? Någon som har lite tips, eller pseudokod på lager?