Class SaxHandler
- java.lang.Object
-
- org.xml.sax.helpers.DefaultHandler
-
- de.bsvrz.pat.datgen.generator.xmlParser.SaxHandler
-
- All Implemented Interfaces:
org.xml.sax.ContentHandler,org.xml.sax.DTDHandler,org.xml.sax.EntityResolver,org.xml.sax.ErrorHandler
public class SaxHandler extends org.xml.sax.helpers.DefaultHandlerSAX-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 MethodedatenVerarbeitenwohl einen rekursiven Aufbau (vglDataGenerator.DataCycler#setRandomData(Data):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 ENDIFDurch 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
Datawird "lazy" erzeugt, d. h. enthält er ein NonPlain, so wird beim Erzeugen einesDatalediglich eine "flacher" Datenstruktur erzeugt, in die wiederumDatas für die NonPlains eingesetzt werden, die wiederumDatas für NonPlains enthalten können usw.Die o. g. zunächst erzeugte flache Datenstruktur ist
data. Jedes weitere für NonPlains erzeugteDatawird auf einen Stack gelegt. DurchreadTop()wird nun erreicht, daß beim Einlesen eines Attributs immer dasData-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 diesesData-Element bekannt, wie es auch in einer rekursiven Methode der Fall wäre.
-
-
Constructor Summary
Constructors Constructor Description SaxHandler()Creates a new instance of SaxHandler
-
Method Summary
Modifier and Type Method Description voidcharacters(char[] ch, int start, int length)Callback-Methode für die Verarbeitung von Characters.voidendDocument()Ende des Dokuments erreichtvoidendElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)Ende-Tag gefunden.voiderror(org.xml.sax.SAXParseException e)FehlervoidfatalError(org.xml.sax.SAXParseException e)Schwerer Fehlerorg.xml.sax.InputSourceresolveEntity(java.lang.String publicId, java.lang.String systemId)voidsetConnection(de.bsvrz.dav.daf.main.ClientDavInterface cdi)Die DaV-Verbindung der Applikation im SAX-Handler eintragenvoidsetDataGenerator(DataGenerator dg)Den Datengenerator im SAX-Handler eintragenvoidsetDataModel(de.bsvrz.dav.daf.main.config.DataModel dm)Das Datenmodell der Applikation im SAX-Handler eintragenvoidsetIsInVerify(boolean iiv)Festlegen, ob sich der Parser in der Verifizierung befindetvoidsetRequestedObjects(java.util.List objects)Die angeforderten Datenobjekte der Applikation im SAX-Handler eintragenvoidsetSendQueue(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)voidsetTimeStampOption(int tso)Option für den Zeitstempel setzen: Entweder werden die Daten mit den originalen Zeitstempeln wieder eingespielt oder in die Jetztzeit verschobenvoidskippedEntity(java.lang.String name)voidstartDocument()Callback-Methode für Start des XML-DokumentsvoidstartElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attributes)Start-Tag gefunden.voidwarning(org.xml.sax.SAXParseException e)Warnung
-
-
-
Method Detail
-
characters
public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXExceptionCallback-Methode für die Verarbeitung von Characters.- Specified by:
charactersin interfaceorg.xml.sax.ContentHandler- Overrides:
charactersin classorg.xml.sax.helpers.DefaultHandler- Parameters:
ch- Feld mit den erparstencharsstart- Startpositionlength- Länge des Feldes- Throws:
org.xml.sax.SAXException- bei Problemen
-
endDocument
public void endDocument() throws org.xml.sax.SAXExceptionEnde des Dokuments erreicht- Specified by:
endDocumentin interfaceorg.xml.sax.ContentHandler- Overrides:
endDocumentin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException- bei Problemen
-
endElement
public void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXExceptionEnde-Tag gefunden.- Specified by:
endElementin interfaceorg.xml.sax.ContentHandler- Overrides:
endElementin classorg.xml.sax.helpers.DefaultHandler- Parameters:
uri- URI des TagslocalName- BezeichnerqName- Qualifizierter Name- Throws:
org.xml.sax.SAXException- bei Problemen
-
error
public void error(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXExceptionFehler- Specified by:
errorin interfaceorg.xml.sax.ErrorHandler- Overrides:
errorin classorg.xml.sax.helpers.DefaultHandler- Parameters:
e- Den Fehler auslösende Exception- Throws:
org.xml.sax.SAXException- bei Problemen
-
fatalError
public void fatalError(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXExceptionSchwerer Fehler- Specified by:
fatalErrorin interfaceorg.xml.sax.ErrorHandler- Overrides:
fatalErrorin classorg.xml.sax.helpers.DefaultHandler- Parameters:
e- Den fatalen Fehler auslösende Exception- Throws:
org.xml.sax.SAXException- bei Problemen
-
setConnection
public void setConnection(de.bsvrz.dav.daf.main.ClientDavInterface cdi)
Die DaV-Verbindung der Applikation im SAX-Handler eintragen- Parameters:
cdi- Die DaV-Verbindung der Applikation
-
setDataGenerator
public void setDataGenerator(DataGenerator dg)
Den Datengenerator im SAX-Handler eintragen- Parameters:
dg-DataGenerator, von dem aus u. a. dieses Objekt der Klasse gestartet wurde.
-
setDataModel
public void setDataModel(de.bsvrz.dav.daf.main.config.DataModel dm)
Das Datenmodell der Applikation im SAX-Handler eintragen- Parameters:
dm- Das Datenmodell der Applikation
-
setIsInVerify
public void setIsInVerify(boolean iiv)
Festlegen, ob sich der Parser in der Verifizierung befindet- Parameters:
iiv- True, wenn in der Verifizierung, sonst False
-
setRequestedObjects
public void setRequestedObjects(java.util.List objects)
Die angeforderten Datenobjekte der Applikation im SAX-Handler eintragen- Parameters:
objects- Die gewünschten Objekte
-
setSendQueue
public 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)- Parameters:
sq- Die Sende-Queue
-
skippedEntity
public void skippedEntity(java.lang.String name) throws org.xml.sax.SAXException- Specified by:
skippedEntityin interfaceorg.xml.sax.ContentHandler- Overrides:
skippedEntityin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
startDocument
public void startDocument() throws org.xml.sax.SAXExceptionCallback-Methode für Start des XML-Dokuments- Specified by:
startDocumentin interfaceorg.xml.sax.ContentHandler- Overrides:
startDocumentin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException- bei Problemen
-
startElement
public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXExceptionStart-Tag gefunden.- Specified by:
startElementin interfaceorg.xml.sax.ContentHandler- Overrides:
startElementin classorg.xml.sax.helpers.DefaultHandler- Parameters:
uri- URI des TagslocalName- BezeichnerqName- Qualifizierter Nameattributes- Liste der Attribute des Tags- Throws:
org.xml.sax.SAXException- bei Problemen
-
setTimeStampOption
public 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- Parameters:
tso- Gibt an, ob die Daten mit den originalen Zeitstempeln wieder eingespielt oder in die Jetztzeit verschoben werden sollen.
-
warning
public void warning(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXExceptionWarnung- Specified by:
warningin interfaceorg.xml.sax.ErrorHandler- Overrides:
warningin classorg.xml.sax.helpers.DefaultHandler- Parameters:
e- Die Warnung auslösende Exception- Throws:
org.xml.sax.SAXException- bei Problemen
-
resolveEntity
public org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException, java.io.IOException- Specified by:
resolveEntityin interfaceorg.xml.sax.EntityResolver- Overrides:
resolveEntityin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXExceptionjava.io.IOException
-
-