|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.xml.sax.helpers.DefaultHandler
de.bsvrz.pat.datgen.generator.xmlParser.SaxHandler
public class SaxHandler
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 Data
s für die
NonPlains eingesetzt werden, die wiederum Data
s 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 Summary | |
---|---|
SaxHandler()
Creates a new instance of SaxHandler |
Method Summary | |
---|---|
void |
characters(char[] ch,
int start,
int length)
Callback-Methode für die Verarbeitung von Characters. |
void |
endDocument()
Ende des Dokuments erreicht |
void |
endElement(String uri,
String localName,
String qName)
Ende-Tag gefunden. |
void |
error(SAXParseException e)
Fehler |
void |
fatalError(SAXParseException e)
Schwerer Fehler |
InputSource |
resolveEntity(String publicId,
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(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(String name)
|
void |
startDocument()
Callback-Methode für Start des XML-Dokuments |
void |
startElement(String uri,
String localName,
String qName,
Attributes attributes)
Start-Tag gefunden. |
void |
warning(SAXParseException e)
Warnung |
Methods inherited from class org.xml.sax.helpers.DefaultHandler |
---|
endPrefixMapping, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, startPrefixMapping, unparsedEntityDecl |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SaxHandler()
Method Detail |
---|
public void characters(char[] ch, int start, int length) throws SAXException
characters
in interface ContentHandler
characters
in class DefaultHandler
ch
- Feld mit den erparsten char
sstart
- Startpositionlength
- Länge des Feldes
SAXException
- bei Problemenpublic void endDocument() throws SAXException
endDocument
in interface ContentHandler
endDocument
in class DefaultHandler
SAXException
- bei Problemenpublic void endElement(String uri, String localName, String qName) throws SAXException
endElement
in interface ContentHandler
endElement
in class DefaultHandler
uri
- URI des TagslocalName
- BezeichnerqName
- Qualifizierter Name
SAXException
- bei Problemenpublic void error(SAXParseException e) throws SAXException
error
in interface ErrorHandler
error
in class DefaultHandler
e
- Den Fehler auslösende Exception
SAXException
- bei Problemenpublic void fatalError(SAXParseException e) throws SAXException
fatalError
in interface ErrorHandler
fatalError
in class DefaultHandler
e
- Den fatalen Fehler auslösende Exception
SAXException
- bei Problemenpublic void setConnection(ClientDavInterface cdi)
cdi
- Die DaV-Verbindung der Applikationpublic void setDataGenerator(DataGenerator dg)
dg
- DataGenerator
, von dem aus u. a. dieses Objekt der
Klasse SaxHandler
gestartet wurde.public void setDataModel(DataModel dm)
dm
- Das Datenmodell der Applikationpublic void setIsInVerify(boolean iiv)
iiv
- True, wenn in der Verifizierung, sonst Falsepublic void setRequestedObjects(List objects)
objects
- Die gewünschten Objektepublic void setSendQueue(SendInterface sq)
sq
- Die Sende-Queuepublic void skippedEntity(String name) throws SAXException
skippedEntity
in interface ContentHandler
skippedEntity
in class DefaultHandler
SAXException
public void startDocument() throws SAXException
startDocument
in interface ContentHandler
startDocument
in class DefaultHandler
SAXException
- bei Problemenpublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
startElement
in interface ContentHandler
startElement
in class DefaultHandler
uri
- URI des TagslocalName
- BezeichnerqName
- Qualifizierter Nameattributes
- Liste der Attribute des Tags
SAXException
- bei Problemenpublic void setTimeStampOption(int tso)
tso
- Gibt an, ob die Daten mit den originalen Zeitstempeln wieder eingespielt oder in
die Jetztzeit verschoben werden sollen.public void warning(SAXParseException e) throws SAXException
warning
in interface ErrorHandler
warning
in class DefaultHandler
e
- Die Warnung auslösende Exception
SAXException
- bei Problemenpublic InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
resolveEntity
in interface EntityResolver
resolveEntity
in class DefaultHandler
SAXException
IOException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |