SortedProperties

Angenommen, man braucht für ein Java Property Set ein geordnete Ausgabe – zum Beispiel um einem Übersetzer eine sortierte Liste mit zu übersetzenden String zu liefern.
Man erstellt eine Klasse (zum Beispiel SortedProperties) und lässt diese von Properties erben.
Bedingt durch die Kapselung ist es notwendig, dass die Methoden
private static char toHex(int nibble) ;
private String saveConvert(String theString, boolean escapeSpace);
private static void writeln(BufferedWriter bw, String s);
und Attribute
private static final char[] hexDigit;
in die neue Klasse kopiert werden müssen.
Wir überschreiben die Methode

public synchronized void store(OutputStream out, String comments)

Diese Methode ist für das eigentliche Speichern in eine Datei verantwortlich.
Der neue Inhalt entspricht bist auf eine zusätzliche Sortierung dem alten:

public synchronized void store(OutputStream out, String comments) throws IOException {
    TreeMap propTree = new TreeMap();
    for (Enumeration e = keys(); e.hasMoreElements();) {
        String key = (String) e.nextElement();
        String value = (String) get(key);
        key = saveConvert(key, true);
        value = saveConvert(value, false);
        propTree.put(key, value);
    }
    BufferedWriter awriter;
    awriter = new BufferedWriter(new OutputStreamWriter(out, "8859_1"));
    if (comments != null)
        writeln(awriter, "#" + comments);
        writeln(awriter, "#" + new Date().toString());
        Set keys = propTree.keySet();
        for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
            String key = (String) iterator.next();
            writeln(awriter, key + "=" + propTree.get(key));
        }
        awriter.flush();
    }

Dies ist tatsächlich ein sehr einfacher Weg, um vorhandene Java-Methoden für eigene Zwecke anzupassen.

Leave a Reply