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.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(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
 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 Summary

    Constructors
    Constructor Description
    SaxHandler()
    Creates a new instance of SaxHandler
  • Method Summary

    Modifier and Type Method 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​(de.bsvrz.dav.daf.main.ClientDavInterface cdi)
    Die DaV-Verbindung der Applikation im SAX-Handler eintragen
    void setDataGenerator​(DataGenerator dg)
    Den Datengenerator im SAX-Handler eintragen
    void setDataModel​(de.bsvrz.dav.daf.main.config.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

    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

    Methods inherited from interface org.xml.sax.ContentHandler

    declaration
  • Constructor Details

    • SaxHandler

      public SaxHandler()
      Creates a new instance of SaxHandler
  • Method Details

    • characters

      public void characters​(char[] ch, int start, int length) throws org.xml.sax.SAXException
      Callback-Methode für die Verarbeitung von Characters.
      Specified by:
      characters in interface org.xml.sax.ContentHandler
      Overrides:
      characters in class org.xml.sax.helpers.DefaultHandler
      Parameters:
      ch - Feld mit den erparsten chars
      start - Startposition
      length - Länge des Feldes
      Throws:
      org.xml.sax.SAXException - bei Problemen
    • endDocument

      public void endDocument() throws org.xml.sax.SAXException
      Ende des Dokuments erreicht
      Specified by:
      endDocument in interface org.xml.sax.ContentHandler
      Overrides:
      endDocument in class org.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.SAXException
      Ende-Tag gefunden.
      Specified by:
      endElement in interface org.xml.sax.ContentHandler
      Overrides:
      endElement in class org.xml.sax.helpers.DefaultHandler
      Parameters:
      uri - URI des Tags
      localName - Bezeichner
      qName - Qualifizierter Name
      Throws:
      org.xml.sax.SAXException - bei Problemen
    • error

      public void error​(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXException
      Fehler
      Specified by:
      error in interface org.xml.sax.ErrorHandler
      Overrides:
      error in class org.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.SAXException
      Schwerer Fehler
      Specified by:
      fatalError in interface org.xml.sax.ErrorHandler
      Overrides:
      fatalError in class org.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:
      skippedEntity in interface org.xml.sax.ContentHandler
      Overrides:
      skippedEntity in class org.xml.sax.helpers.DefaultHandler
      Throws:
      org.xml.sax.SAXException
    • startDocument

      public void startDocument() throws org.xml.sax.SAXException
      Callback-Methode für Start des XML-Dokuments
      Specified by:
      startDocument in interface org.xml.sax.ContentHandler
      Overrides:
      startDocument in class org.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.SAXException
      Start-Tag gefunden.
      Specified by:
      startElement in interface org.xml.sax.ContentHandler
      Overrides:
      startElement in class org.xml.sax.helpers.DefaultHandler
      Parameters:
      uri - URI des Tags
      localName - Bezeichner
      qName - Qualifizierter Name
      attributes - 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.SAXException
      Warnung
      Specified by:
      warning in interface org.xml.sax.ErrorHandler
      Overrides:
      warning in class org.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:
      resolveEntity in interface org.xml.sax.EntityResolver
      Overrides:
      resolveEntity in class org.xml.sax.helpers.DefaultHandler
      Throws:
      org.xml.sax.SAXException
      java.io.IOException