public class SaxHandler
extends org.xml.sax.helpers.DefaultHandler
SAX-Handler für den Zugriff auf die XML-Datei.
Datensätze können Felder und Listen (im folgenden NonPlains genannt) enthalten. Würde man die XML-Datei “von Hand” verarbeiten, so hätte eine Methode datenVerarbeiten wohl einen rekursiven Aufbau (vgl DataGenerator.DataCycler#setRandomData:
IF (tag == “attribut”) THEN // Wert aus XML-Datei lesen ELSE IF (tag == “feld”) THEN FOR ALL (Feldelemente) DO datenVerarbeiten(); ENDFOR ELSE IF (tag == “liste”) THEN FOR EACH (listenelement) DO datenVerarbeiten(); ENDFOR ENDIF Durch die Art des Einlesens der XML-Datei mit dem SAX-Parser (jedes Lesen eines Start-/Ende-Tags löst Aufruf einer der hier zu findenden Call-Back-Methoden aus), ist das rekursive Abarbeiten nicht möglich ==> Über einen Stack wird erreicht, daß die Zuordnung der eingelesenen Attribute zu den richtigen Einträgen in der rekursiven Datenstruktur gelingt:
Ein Datensatz vom Typ Data wird “lazy” erzeugt, d. h. enthält er ein NonPlain, so wird beim Erzeugen eines Data lediglich eine “flacher” Datenstruktur erzeugt, in die wiederum Datas für die NonPlains eingesetzt werden, die wiederum Datas für NonPlains enthalten können usw.
Die o. g. zunächst erzeugte flache Datenstruktur ist data. Jedes weitere für NonPlains erzeugte Data wird auf einen Stack gelegt. Durch readTop() wird nun erreicht, daß beim Einlesen eines Attributs immer das Data-Element gefüllt wird, welches sich gerade in Bearbeitung befindet, d. h. der Stack bildet das “Gedächtnis” des Parsers und “aus Sicht der Attribute” ist nur dieses Data-Element bekannt, wie es auch in einer rekursiven Methode der Fall wäre.
| Constructor and Description |
|---|
SaxHandler()
Creates a new instance of SaxHandler
|
| Modifier and Type | Method and Description |
|---|---|
void |
characters(char[] ch,
int start,
int length)
Callback-Methode für die Verarbeitung von Characters.
|
void |
endDocument()
Ende des Dokuments erreicht
|
void |
endElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName)
Ende-Tag gefunden.
|
void |
error(org.xml.sax.SAXParseException e)
Fehler
|
void |
fatalError(org.xml.sax.SAXParseException e)
Schwerer Fehler
|
org.xml.sax.InputSource |
resolveEntity(java.lang.String publicId,
java.lang.String systemId) |
void |
setConnection(ClientDavInterface cdi)
Die DaV-Verbindung der Applikation im SAX-Handler eintragen
|
void |
setDataGenerator(DataGenerator dg)
Den Datengenerator im SAX-Handler eintragen
|
void |
setDataModel(DataModel dm)
Das Datenmodell der Applikation im SAX-Handler eintragen
|
void |
setIsInVerify(boolean iiv)
Festlegen, ob sich der Parser in der Verifizierung befindet
|
void |
setRequestedObjects(java.util.List objects)
Die angeforderten Datenobjekte der Applikation im SAX-Handler eintragen
|
void |
setSendQueue(SendInterface sq)
Sende-Queue der Applikation im SAX-Handler eintragen (in diesen werden die aus der XML-Datei gelesenen Telegramme geschrieben, so daß sie vom Sende-Thread verschickt werden können)
|
void |
setTimeStampOption(int tso)
Option für den Zeitstempel setzen: Entweder werden die Daten mit den originalen Zeitstempeln wieder eingespielt oder in die Jetztzeit verschoben
|
void |
skippedEntity(java.lang.String name) |
void |
startDocument()
Callback-Methode für Start des XML-Dokuments
|
void |
startElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes attributes)
Start-Tag gefunden.
|
void |
warning(org.xml.sax.SAXParseException e)
Warnung
|
public void characters(char[] ch,
int start,
int length)
throws org.xml.sax.SAXException
Callback-Methode für die Verarbeitung von Characters.
characters in interface org.xml.sax.ContentHandlercharacters in class org.xml.sax.helpers.DefaultHandlerch - Feld mit den erparsten charsstart - Startpositionlength - Länge des Feldesorg.xml.sax.SAXException - bei Problemenpublic void endDocument()
throws org.xml.sax.SAXException
Ende des Dokuments erreicht
endDocument in interface org.xml.sax.ContentHandlerendDocument in class org.xml.sax.helpers.DefaultHandlerorg.xml.sax.SAXException - bei Problemenpublic void endElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName)
throws org.xml.sax.SAXException
Ende-Tag gefunden.
endElement in interface org.xml.sax.ContentHandlerendElement in class org.xml.sax.helpers.DefaultHandleruri - URI des TagslocalName - BezeichnerqName - Qualifizierter Nameorg.xml.sax.SAXException - bei Problemenpublic void error(org.xml.sax.SAXParseException e)
throws org.xml.sax.SAXException
Fehler
error in interface org.xml.sax.ErrorHandlererror in class org.xml.sax.helpers.DefaultHandlere - Den Fehler auslösende Exceptionorg.xml.sax.SAXException - bei Problemenpublic void fatalError(org.xml.sax.SAXParseException e)
throws org.xml.sax.SAXException
Schwerer Fehler
fatalError in interface org.xml.sax.ErrorHandlerfatalError in class org.xml.sax.helpers.DefaultHandlere - Den fatalen Fehler auslösende Exceptionorg.xml.sax.SAXException - bei Problemenpublic void setConnection(ClientDavInterface cdi)
Die DaV-Verbindung der Applikation im SAX-Handler eintragen
cdi - Die DaV-Verbindung der Applikationpublic void setDataGenerator(DataGenerator dg)
Den Datengenerator im SAX-Handler eintragen
dg - DataGenerator, von dem aus u. a. dieses Objekt der Klasse SaxHandler gestartet wurde.public void setDataModel(DataModel dm)
Das Datenmodell der Applikation im SAX-Handler eintragen
dm - Das Datenmodell der Applikationpublic void setIsInVerify(boolean iiv)
Festlegen, ob sich der Parser in der Verifizierung befindet
iiv - True, wenn in der Verifizierung, sonst Falsepublic void setRequestedObjects(java.util.List objects)
Die angeforderten Datenobjekte der Applikation im SAX-Handler eintragen
objects - Die gewünschten Objektepublic void setSendQueue(SendInterface sq)
Sende-Queue der Applikation im SAX-Handler eintragen (in diesen werden die aus der XML-Datei gelesenen Telegramme geschrieben, so daß sie vom Sende-Thread verschickt werden können)
sq - Die Sende-Queuepublic void skippedEntity(java.lang.String name)
throws org.xml.sax.SAXException
skippedEntity in interface org.xml.sax.ContentHandlerskippedEntity in class org.xml.sax.helpers.DefaultHandlerorg.xml.sax.SAXExceptionpublic void startDocument()
throws org.xml.sax.SAXException
Callback-Methode für Start des XML-Dokuments
startDocument in interface org.xml.sax.ContentHandlerstartDocument in class org.xml.sax.helpers.DefaultHandlerorg.xml.sax.SAXException - bei Problemenpublic void startElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes attributes)
throws org.xml.sax.SAXException
Start-Tag gefunden.
startElement in interface org.xml.sax.ContentHandlerstartElement in class org.xml.sax.helpers.DefaultHandleruri - URI des TagslocalName - BezeichnerqName - Qualifizierter Nameattributes - Liste der Attribute des Tagsorg.xml.sax.SAXException - bei Problemenpublic void setTimeStampOption(int tso)
Option für den Zeitstempel setzen: Entweder werden die Daten mit den originalen Zeitstempeln wieder eingespielt oder in die Jetztzeit verschoben
tso - Gibt an, ob die Daten mit den originalen Zeitstempeln wieder eingespielt oder in die Jetztzeit verschoben werden sollen.public void warning(org.xml.sax.SAXParseException e)
throws org.xml.sax.SAXException
Warnung
warning in interface org.xml.sax.ErrorHandlerwarning in class org.xml.sax.helpers.DefaultHandlere - Die Warnung auslösende Exceptionorg.xml.sax.SAXException - bei Problemenpublic org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
java.lang.String systemId)
throws org.xml.sax.SAXException,
java.io.IOException
resolveEntity in interface org.xml.sax.EntityResolverresolveEntity in class org.xml.sax.helpers.DefaultHandlerorg.xml.sax.SAXExceptionjava.io.IOException