agg.util
Class XMLHelper

java.lang.Object
  extended by agg.util.XMLHelper
All Implemented Interfaces:
java.beans.ExceptionListener

public class XMLHelper
extends java.lang.Object
implements java.beans.ExceptionListener


Constructor Summary
XMLHelper()
           
 
Method Summary
 void addAttr(java.lang.String name, int value)
          Wie addAttr(String, String), nur dass der Wert ein Integer ist.
 void addAttr(java.lang.String name, java.lang.String value)
          In aktuell offenes DOM-Element wird ein Attribut namens NAME mit Wert VALUE angelegt.
 void addAttrToObject(java.lang.Object obj, java.lang.String name, java.lang.String value)
           
 void addAttrValue(java.lang.String typeName, java.lang.Object value)
          Beispiel: Value von Basistypen int/Integer mit Wert 999: 999; Value von komplexeren Typen (auch String) Vector mit String "hhh" und "hohoho" sieht so aus: hhh hohoho Value von eigengeschriebenen Klassen ist als SerializedData : aced000573720005456e7472799e03e593f62b333b0300025b000 * e697473446972436f6e74656e74737400135
 void addEnumeration(java.lang.String mem_name, java.util.Enumeration<?> e, boolean sub)
           
 void addList(java.lang.String mem_name, java.util.List<?> list, boolean sub)
           
 void addObject(java.lang.String tagname, java.lang.String mem_name, XMLObject o)
           
 void addObject(java.lang.String mem_name, XMLObject o, boolean sub)
          Real work routine of object saving.
 void addObjectRef(java.lang.String mem_name, XMLObject o)
          Falls O noch nicht gespeichert war, tue dies, und gib O eine ID.
 void addObjectSub(XMLObject o)
          Speichert O als Sub-Element des aktuellen DOM-Elements ab.
 void addSubObject(java.lang.String tagname, XMLObject o)
           
 void addTopObject(java.lang.String tagname, XMLObject o)
          O wird direkt ins Document eingehangen, wenns noch nicht gespeichert war.
 void addTopObject(XMLObject o)
           
static java.lang.String checkNameDueToSpecialCharacters(java.lang.String nameStr)
           
 void close()
           
 void enrichObject(XMLObject templ)
          Diese Routine ruft templ.XreadObject auf.
 java.lang.String escapeString(java.lang.String s)
          Gibt eine Representation des String S zurueck, die als Attribut-Wert verwendbar ist.
 void exceptionThrown(java.lang.Exception e)
          Implements interface ExceptionListener This method is called when a recoverable exception has been caught.
 java.lang.Object getAttrValue(java.lang.String typeName)
           
 org.w3c.dom.Document getDoc()
           
 java.lang.String getDocumentVersion()
           
 java.util.Enumeration<org.w3c.dom.Element> getEnumeration(java.lang.String mem_name, XMLObject templ, boolean sub, java.lang.String tagname)
           
 java.lang.String getIOException()
           
 java.util.List<org.w3c.dom.Element> getList(java.lang.String mem_name, XMLObject templ, boolean sub, java.lang.String tagname)
           
 java.lang.Object getObject(java.lang.String tagname)
           
 XMLObject getObject(java.lang.String mem_name, XMLObject templ, boolean sub)
          Workhorse of getObjectRef() and getObjectSub().
 XMLObject getObjectRef(java.lang.String mem_name, XMLObject templ)
          Im aktuellen DOM-Element wird Attribut mem_name als ID interpretiert.
 XMLObject getObjectSub(XMLObject templ)
          Das naechste Sub-Element des aktuellen DOM-Elementes, welches ein "ID" Attribut besitzt, wird mit TEMPL assoziiert.
 XMLObject getTopObject(XMLObject t)
           
 boolean isTag(java.lang.String tag, XMLObject th)
           
 XMLObject loadObject(XMLObject templ)
          Versucht top() als neues einzulesendes Objekt zu interpretieren.
 void openNewElem(java.lang.String tagname, XMLObject t)
          Erzeugt ein neues (fast leeres) DOM-Element mit dem TAGNAME.
 boolean openObject(XMLObject o, XMLObject t)
          Opens already saved object o for further work.
 void openSubTag(java.lang.String tagname)
          Erzeugt einfach ein neues Element, was sich in das aktuelle einhaengt.
 void peekElement(java.lang.Object o)
           
 boolean peekObject(XMLObject o, XMLObject t)
          Oeffnet das Element von Object o nochmal zum Lesen.
 boolean read_from_xml(java.lang.String fname)
           
 java.lang.String readAttr(java.lang.String name)
          Liest aus aktuell offenem DOM-Element das Attribut namens NAME aus, und gibt es als String zurueck.
 int readIAttr(java.lang.String name)
          Wie readAttr(String), nur wird der Attributwert versucht als Integer zu interpretieren.
 java.lang.String readSubTag()
           
 boolean readSubTag(java.lang.String tagname)
          Returns true if a DOM element with a name equals to the tagname was found.
 boolean readSubTag(java.util.Vector<java.lang.String> tagnames)
          Returns true if a DOM element with a name equals ones of the Vector tagnames was found.
 boolean reopenObject(XMLObject o, XMLObject t)
           
 boolean save_to_xml(java.lang.String fname)
           
 java.lang.String unescapeString(java.lang.String s)
          Wandelt einen String aus escapeString() wieder in urspruengliche Form zurueck.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLHelper

public XMLHelper()
Method Detail

getDocumentVersion

public java.lang.String getDocumentVersion()

save_to_xml

public boolean save_to_xml(java.lang.String fname)

read_from_xml

public boolean read_from_xml(java.lang.String fname)

getIOException

public java.lang.String getIOException()

getDoc

public org.w3c.dom.Document getDoc()

openObject

public boolean openObject(XMLObject o,
                          XMLObject t)
Opens already saved object o for further work.


reopenObject

public boolean reopenObject(XMLObject o,
                            XMLObject t)

peekObject

public boolean peekObject(XMLObject o,
                          XMLObject t)
Oeffnet das Element von Object o nochmal zum Lesen. Das Object t sollte auf this stehen, damit die Verbindung zwischen this und Objekt-ID hergestellt werden kann.


openNewElem

public void openNewElem(java.lang.String tagname,
                        XMLObject t)
Erzeugt ein neues (fast leeres) DOM-Element mit dem TAGNAME. T muss auf this stehen (in der XwriteObject() Methode, da hier das ID fuer dieses Object angelegt wird.


openSubTag

public void openSubTag(java.lang.String tagname)
Erzeugt einfach ein neues Element, was sich in das aktuelle einhaengt. Dieses Subtag erhaelt _kein_ ID, und hat demzufolge keine eigenstaendige Existenz.


readSubTag

public boolean readSubTag(java.lang.String tagname)
Returns true if a DOM element with a name equals to the tagname was found.


readSubTag

public boolean readSubTag(java.util.Vector<java.lang.String> tagnames)
Returns true if a DOM element with a name equals ones of the Vector tagnames was found.


readSubTag

public java.lang.String readSubTag()

addObject

public void addObject(java.lang.String mem_name,
                      XMLObject o,
                      boolean sub)
Real work routine of object saving. Used by addObjectRef() and addObjectSub().


addObjectRef

public void addObjectRef(java.lang.String mem_name,
                         XMLObject o)
Falls O noch nicht gespeichert war, tue dies, und gib O eine ID. Die ID von O wird als Attribut mem_name im aktuell offenen DOM-Element gespeichert.


addObjectSub

public void addObjectSub(XMLObject o)
Speichert O als Sub-Element des aktuellen DOM-Elements ab. O darf noch nicht gespeichert sein, bekommt aber hier eine ID, kann also spaeter per addObjectRef() nochmal referenziert werden.


getObject

public XMLObject getObject(java.lang.String mem_name,
                           XMLObject templ,
                           boolean sub)
Workhorse of getObjectRef() and getObjectSub().


getObjectRef

public XMLObject getObjectRef(java.lang.String mem_name,
                              XMLObject templ)
Im aktuellen DOM-Element wird Attribut mem_name als ID interpretiert. Es wird dann versucht DOM-Element mit diesem ID zu finden. Wurde es schon eingelesen, wird das assoziierte XMLObject zurueckgegeben (in diesem Fall kann TEMPL null sein). Falls nicht, muss templ ein (leeres) XMLObject sein, welches mit dem Inhalt dieses DOM-Elementes aufgefuellt wird (ueber templ.XreadObject()), und ab da mit dieser ID assoziiert ist (d.h. folgende aufrufe von getObjectRef() mit dieser ID geben auch templ zurueck). Wird ID im XML-File gar nicht gefunden wird null zurueckgegeben.


getObjectSub

public XMLObject getObjectSub(XMLObject templ)
Das naechste Sub-Element des aktuellen DOM-Elementes, welches ein "ID" Attribut besitzt, wird mit TEMPL assoziiert. TEMPL wird ausserdem mit dem Inhalt dieses Sub-Elementes angefuellt (per templ.XreadObject()). Das Sub-Element darf noch nicht anderwertig (e.g. ueber getObjectRef()) eingelesen worden sein. TEMPL darf nicht null sein, und wird zurueckgegeben.


loadObject

public XMLObject loadObject(XMLObject templ)
Versucht top() als neues einzulesendes Objekt zu interpretieren. Es wird dann auch eingelesen. Der Unterschied zu getObject() ist, dass hier der Benutzer selber entscheiden kann, welches Element eingelesen werden soll (z.B. ueber peekElement() )


enrichObject

public void enrichObject(XMLObject templ)
Diese Routine ruft templ.XreadObject auf. Sie dient dazu, schon bestehende Objekte mit weiteren Informationen aus dem XML-File anzureichern.


addEnumeration

public void addEnumeration(java.lang.String mem_name,
                           java.util.Enumeration<?> e,
                           boolean sub)

getEnumeration

public java.util.Enumeration<org.w3c.dom.Element> getEnumeration(java.lang.String mem_name,
                                                                 XMLObject templ,
                                                                 boolean sub,
                                                                 java.lang.String tagname)

addList

public void addList(java.lang.String mem_name,
                    java.util.List<?> list,
                    boolean sub)

getList

public java.util.List<org.w3c.dom.Element> getList(java.lang.String mem_name,
                                                   XMLObject templ,
                                                   boolean sub,
                                                   java.lang.String tagname)

addTopObject

public void addTopObject(XMLObject o)

isTag

public boolean isTag(java.lang.String tag,
                     XMLObject th)

getTopObject

public XMLObject getTopObject(XMLObject t)

peekElement

public void peekElement(java.lang.Object o)

close

public void close()

addObject

public void addObject(java.lang.String tagname,
                      java.lang.String mem_name,
                      XMLObject o)

addTopObject

public void addTopObject(java.lang.String tagname,
                         XMLObject o)
O wird direkt ins Document eingehangen, wenns noch nicht gespeichert war. Da dies ein TopLevel-Objekt ist, wird natuerlich hier nirgends eine Referenz darauf eingehangen.


escapeString

public java.lang.String escapeString(java.lang.String s)
Gibt eine Representation des String S zurueck, die als Attribut-Wert verwendbar ist. (Probleme machen z.b. "#xxx;" Character Einbettungen)


unescapeString

public java.lang.String unescapeString(java.lang.String s)
Wandelt einen String aus escapeString() wieder in urspruengliche Form zurueck. Es gilt also: unescapeString(escapeString(s)) == s.


addAttr

public void addAttr(java.lang.String name,
                    java.lang.String value)
In aktuell offenes DOM-Element wird ein Attribut namens NAME mit Wert VALUE angelegt. E.g. addAttr("bla", "whatever") resultiert (wenn gerade ein Element offen ist) in: " ...".


addAttr

public void addAttr(java.lang.String name,
                    int value)
Wie addAttr(String, String), nur dass der Wert ein Integer ist.


addAttrValue

public void addAttrValue(java.lang.String typeName,
                         java.lang.Object value)
Beispiel: Value von Basistypen int/Integer mit Wert 999: 999; Value von komplexeren Typen (auch String) Vector mit String "hhh" und "hohoho" sieht so aus: hhh hohoho Value von eigengeschriebenen Klassen ist als SerializedData : aced000573720005456e7472799e03e593f62b333b0300025b000 * e697473446972436f6e74656e74737400135


getAttrValue

public java.lang.Object getAttrValue(java.lang.String typeName)

addAttrToObject

public void addAttrToObject(java.lang.Object obj,
                            java.lang.String name,
                            java.lang.String value)

readAttr

public java.lang.String readAttr(java.lang.String name)
Liest aus aktuell offenem DOM-Element das Attribut namens NAME aus, und gibt es als String zurueck. Falls kein solches Attribut existiert wird "" zurueckgegeben.


readIAttr

public int readIAttr(java.lang.String name)
Wie readAttr(String), nur wird der Attributwert versucht als Integer zu interpretieren.


addSubObject

public void addSubObject(java.lang.String tagname,
                         XMLObject o)

getObject

public java.lang.Object getObject(java.lang.String tagname)

exceptionThrown

public void exceptionThrown(java.lang.Exception e)
Implements interface ExceptionListener This method is called when a recoverable exception has been caught.

Specified by:
exceptionThrown in interface java.beans.ExceptionListener

checkNameDueToSpecialCharacters

public static java.lang.String checkNameDueToSpecialCharacters(java.lang.String nameStr)