Hallo Zusammen,
was ist der beste bzw. performanteste Weg um in Java (1.7) ein Property-File auszuwerten bzw. erstmal zu parsen und dann auch noch nach bestimmten Kriterien zu splitten?
Folgendes: Ein Property-File (ganz normal Key=Value) einer Webapp soll ausgelesen werden. Dieses enthält neben vielen Einträgen der Webapp selbst auch meine eigenen (die manuell hinzugefügt wurden). Interessant sind nur meine eigenen Properies, an die ich jetzt herankommen muss um mit ihnen weiterzuarbeiten. Meine Properties starten alle mit dem gleichen Prefix (Eindeutigkeit in der Datei gegeben), bspw. "myModulename"
Nun möchte ich aus den Properties möglichst performant meine eigenen (aktiven!) Properties ermitteln, also alle Properties, die kommentiert sind, brauch ich auch nicht. Mit einer Enumeration könnte ich das ja bewerkstelligen. Ich gehe die Liste durch und frage mit "startsWith()" ab:
Gibt es hier eine andere/bessere Möglichkeit?
Und nun habe ich noch in Verbindung mit dem Auslesen folgendes Problem: Meine Properties sind unterteilt in verschiedene "Subsysteme", diese möchte ich ebenfalls am besten in einzelne Maps auslesen (pro Subsystem eine HashMap mit allen zugehörigen Key=Value Paaren).
Von der Namenskonvention heißen alle Properties gleich - sie unterscheiden sich nur durch eine Zahl, welche das Subsystem repräsentiert.
Hier mal ein Beispiel meiner Properties, dann wird das vielleicht klarer:
Meine Fragen sind nun:
Wie bekomme ich am performantesten und mit best-practise alle meine Properties aus der Datei heraus und diese dann auch gleich noch gesplittet in die einzelnen Subsysteme (in dem Fall in 3 einzelne HashMaps)? Mein Ansatz wäre nur, wie oben, alles in Schleifen durch zu iterieren und dann ständig abzufragen... Würde das auch mit Regular Expressions funktionieren (wenn ja wie??)? Kann man mit RegExp vielleicht ermitteln, wieviele Subsysteme überhaupt eingetragen sind? Um dann wiederum mit einer RegExpression zu jedem System die einzelnen Zeilen auszulesen? Oder gibt es noch einen anderen Weg?
Danke für Antworten,
Itzamna
was ist der beste bzw. performanteste Weg um in Java (1.7) ein Property-File auszuwerten bzw. erstmal zu parsen und dann auch noch nach bestimmten Kriterien zu splitten?
Folgendes: Ein Property-File (ganz normal Key=Value) einer Webapp soll ausgelesen werden. Dieses enthält neben vielen Einträgen der Webapp selbst auch meine eigenen (die manuell hinzugefügt wurden). Interessant sind nur meine eigenen Properies, an die ich jetzt herankommen muss um mit ihnen weiterzuarbeiten. Meine Properties starten alle mit dem gleichen Prefix (Eindeutigkeit in der Datei gegeben), bspw. "myModulename"
Nun möchte ich aus den Properties möglichst performant meine eigenen (aktiven!) Properties ermitteln, also alle Properties, die kommentiert sind, brauch ich auch nicht. Mit einer Enumeration könnte ich das ja bewerkstelligen. Ich gehe die Liste durch und frage mit "startsWith()" ab:
Code:
Map<String,String> myModuleMap = new HashMap<String,String>();
Enumeration e = prop.propertyNames();
while (e.hasMoreElements())
{
String key = (String) e.nextElement();
if(key.startsWith("myModulename"))
{
myModuleMap.put(key,prop.getProperty(key));
}
Gibt es hier eine andere/bessere Möglichkeit?
Und nun habe ich noch in Verbindung mit dem Auslesen folgendes Problem: Meine Properties sind unterteilt in verschiedene "Subsysteme", diese möchte ich ebenfalls am besten in einzelne Maps auslesen (pro Subsystem eine HashMap mit allen zugehörigen Key=Value Paaren).
Von der Namenskonvention heißen alle Properties gleich - sie unterscheiden sich nur durch eine Zahl, welche das Subsystem repräsentiert.
Hier mal ein Beispiel meiner Properties, dann wird das vielleicht klarer:
Code:
# myModule Subsystem 1
myModulename.system.1.name=system1
myModulename.system.1.id=AB
myModulename.system.1.host=192.178.221.45
myModulename.system.1.client=500
myModulename.system.1.number=20
myModulename.system.1.user=systemuser
myModulename.system.1.password=systempassword
myModulename.system.1.language=EN
myModulename.system.1.webClient.enabled=true
myModulename.system.1.webClienURL=http://google.com
# myModule Subsystem 2
myModulename.system.2.name=system2
myModulename.system.2.id=BA
myModulename.system.2.host=192.178.221.46
myModulename.system.2.client=700
myModulename.system.2.number=10
myModulename.system.2.user=systemuser
myModulename.system.2.password=systempassword
myModulename.system.2.language=DE
myModulename.system.2.webClient.enabled=false
myModulename.system.2.webClienURL=http://bing.com
# myModule Subsystem 3
myModulename.system.3.name=system3
myModulename.system.3.id=CA
myModulename.system.3.host=192.178.221.47
myModulename.system.3.client=100
myModulename.system.3.number=12
myModulename.system.3.user=systemuser
myModulename.system.3.password=systempassword
myModulename.system.3.language=FR
myModulename.system.3.webClient.enabled=false
myModulename.system.3.webClienURL=http://yahoo.com
#beliebig viele Subsysteme möglich (theoretisch)...
Meine Fragen sind nun:
Wie bekomme ich am performantesten und mit best-practise alle meine Properties aus der Datei heraus und diese dann auch gleich noch gesplittet in die einzelnen Subsysteme (in dem Fall in 3 einzelne HashMaps)? Mein Ansatz wäre nur, wie oben, alles in Schleifen durch zu iterieren und dann ständig abzufragen... Würde das auch mit Regular Expressions funktionieren (wenn ja wie??)? Kann man mit RegExp vielleicht ermitteln, wieviele Subsysteme überhaupt eingetragen sind? Um dann wiederum mit einer RegExpression zu jedem System die einzelnen Zeilen auszulesen? Oder gibt es noch einen anderen Weg?
Danke für Antworten,
Itzamna