Class SymbolTable


  • public class SymbolTable
    extends java.lang.Object
    Symboltabelle.
    Die Symboltabelle wird von ProtocolParser während des Parsens aufgebaut.
    Standardwerte aus dem Skript (aus dem Bereich Standards) werden nur übernommen, wenn sie keine Eingabeparameter des Benutzers überschreiben.
    • Constructor Summary

      Constructors 
      Constructor Description
      SymbolTable​(de.bsvrz.dav.daf.main.config.DataModel model, ProcessingParameter pp)
      Erzeugen der Symboltabelle
    • Method Summary

      Modifier and Type Method Description
      void addAggregationDefinition​(antlr.Token t, java.lang.String aggregationName, java.lang.String className)
      Fügt die Definition einer Aggregationsfunktion in die Symboltabelle ein
      void addAliasDefinition​(antlr.Token token, java.lang.String name, java.lang.String obj)
      Fügt eine Alias-Definition in die Symboltabelle ein
      void addDurationAttribute​(java.lang.String columnName)
      Zeitdauer Attribut hinzufügen.
      void addPseudoObjectDefinition​(antlr.Token token, java.util.List<java.lang.String> aliasList, java.util.List<java.lang.String> objectList)
      Fügt eine Pseudoobjekt-Definition zur Symboltabelle hinzu.
      Erlaubt die teiweise Übernahme einer Pseudoobjektdefinition: Falls einem Alias schon eine PID-Liste zugeordnet ist, dann wird nur dieser Alias übersprungen, die übrigen werden aber eingefügt.
      void addStandardBinding​(java.lang.String placeholder, java.lang.String aspectName)
      Fügt eine Bindung eines Aspekts in die Symboltabelle ein, falls es für den angegebenen Platzhalter noch keine Bindung gibt.
      void addStandardObject​(de.bsvrz.dav.daf.main.config.SystemObject so)
      Fügt ein Objekt hinzu, für das das Protokoll erstellt werden soll.
      void addStandardPeriod​(java.lang.String startDate, java.lang.String startTime, java.lang.String endDate, java.lang.String endTime)
      Stellt den Standard Anfragebereich ein, sofern der Benutzer keinen angegeben hat.
      void addTempAttribute​(java.lang.String name, java.lang.String columnName)
      Fügt ein temporäres Attribut in die Symboltabelle ein (Aus Bereich 'Spalte').
      java.lang.String getAlias​(java.lang.String name)
      Gibt den Alias mit diesem Namen zurück
      java.lang.String[] getAliasObjects​(java.lang.String alias)
      Liefert die dem Alias zugeordneten Objekt-PIDs zurück
      java.lang.String getBinding​(java.lang.String placeholder)
      Liefert gebundenen Aspekt zurück
      java.lang.Boolean getDeltaProtocol()
      Gibt gewünschten Protokolltyp zurück, der von der Protokollerstellungs-Anfrage kommt.
      de.bsvrz.dav.daf.main.config.SystemObject getMainObject()  
      de.bsvrz.dav.daf.main.config.SystemObject getObject​(de.bsvrz.dav.daf.main.config.SystemObjectType sot)
      Gibt das Objekt zurück, durch das der übergebene Typ ersetzt werden soll.
      TempAttributeDescription getOrCreateTempAttributeDefinition​(java.lang.String name)  
      java.util.List<java.lang.String> getPossibleAspectBindings()
      Gibt alle im Skript definierten ungebundenen oder gebundenen Aspekte zurück.
      TempAttributeDescription getTempAttributeDefinition​(java.lang.String name)  
      java.util.List<TempAttributeDescription> getTempAttributes()  
      boolean isAlias​(java.lang.String name)
      Überprüft, ob es einen Alias diesen Namens gibt.
      boolean isTempAttributeDefined​(java.lang.String name)  
      void setCheck​(MemberCheck check)
      Festlegen welches Objekt die Typüberprüfungen durchführt.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • _pseudoObjectDefinitionInitialized

        protected boolean _pseudoObjectDefinitionInitialized
        Prüft, ob es schon eine Pseudoobjekt-Definition gibt. Falls ja, und eine zweite angelegt wird, wird ein Fehler geworfen
    • Constructor Detail

      • SymbolTable

        public SymbolTable​(de.bsvrz.dav.daf.main.config.DataModel model,
                           ProcessingParameter pp)
                    throws CriticalParserException
        Erzeugen der Symboltabelle
        Parameters:
        model - Datenmodell
        pp - Eingabeparameter vom Auftraggeber, null wenn das Skript nur Interpretiert (auf güligkeit geprüft) aber nicht ausgeführt werden soll
        Throws:
        CriticalParserException - Falls es zu einem Kommunikationsfehler kommt
    • Method Detail

      • setCheck

        public void setCheck​(MemberCheck check)
        Festlegen welches Objekt die Typüberprüfungen durchführt.
        Parameters:
        check - Objekt das die Typüberprüfungen durchführen soll.
      • addStandardObject

        public void addStandardObject​(de.bsvrz.dav.daf.main.config.SystemObject so)
                               throws CriticalParserException
        Fügt ein Objekt hinzu, für das das Protokoll erstellt werden soll. Fügt das Objekt nur hinzu, wenn noch kein Objekt des gleichen Objekttyps hinterlegt wurde.
        Parameters:
        so - Objekt das Hinzugefügt werden soll
        Throws:
        CriticalParserException - Falls es zu einem Kommuniktaionsfehler kommt
      • getObject

        public de.bsvrz.dav.daf.main.config.SystemObject getObject​(de.bsvrz.dav.daf.main.config.SystemObjectType sot)
        Gibt das Objekt zurück, durch das der übergebene Typ ersetzt werden soll. Im Skriptquelltext kommen nur Objekttypen vor. Diese sind durch konkrete Objekte zu ersetzen.
        Parameters:
        sot - Objekttyp, für den ein Objekt zurückgeliefert werden soll.
        Returns:
        Objekt das statt des übergebenen Objekttyps im Protokoll verwendet werden soll. Objekttyp, falls keine Bindung für den Objekttyp besteht.
      • getMainObject

        public de.bsvrz.dav.daf.main.config.SystemObject getMainObject()
      • addAliasDefinition

        public void addAliasDefinition​(antlr.Token token,
                                       java.lang.String name,
                                       java.lang.String obj)
                                throws CriticalParserException
        Fügt eine Alias-Definition in die Symboltabelle ein
        Parameters:
        token - Token. Wird für die Fehlerausgabe verwendet.
        name - Name des Alias
        obj - Referenzierter Objekttyp
        Throws:
        CriticalParserException - Falls der Alias bereits definiert wurde oder die Definition fehlerhaft ist.
      • getAliasObjects

        public java.lang.String[] getAliasObjects​(java.lang.String alias)
                                           throws SemanticErrorException
        Liefert die dem Alias zugeordneten Objekt-PIDs zurück
        Parameters:
        alias - Name des Alias
        Returns:
        Eine Liste mit Objekten, die dem Alias durch die Pseudoobjektdefinition zugeordnet wurde. null, falls dem Alias keine Aspekte zugeordnet wurden
        Throws:
        SemanticErrorException - Falls dem Alias keine Objekte zugeordnet wurden oder es kein Alias ist.
      • addTempAttribute

        public void addTempAttribute​(java.lang.String name,
                                     java.lang.String columnName)
                              throws SemanticErrorException
        Fügt ein temporäres Attribut in die Symboltabelle ein (Aus Bereich 'Spalte').
        Parameters:
        name - Name des temporären Attributs
        columnName - Spaltenname
        Throws:
        SemanticErrorException - Der Name des temporären Attributs entspricht DurationAttributeDescription.DURATION
      • isTempAttributeDefined

        public boolean isTempAttributeDefined​(java.lang.String name)
      • getOrCreateTempAttributeDefinition

        public TempAttributeDescription getOrCreateTempAttributeDefinition​(java.lang.String name)
      • addPseudoObjectDefinition

        public void addPseudoObjectDefinition​(antlr.Token token,
                                              java.util.List<java.lang.String> aliasList,
                                              java.util.List<java.lang.String> objectList)
                                       throws CriticalParserException
        Fügt eine Pseudoobjekt-Definition zur Symboltabelle hinzu.
        Erlaubt die teiweise Übernahme einer Pseudoobjektdefinition: Falls einem Alias schon eine PID-Liste zugeordnet ist, dann wird nur dieser Alias übersprungen, die übrigen werden aber eingefügt.
        Parameters:
        token - Token (nur für die Angabe von Zeilennummern in den Fehlermeldungen)
        aliasList - Liste mit Aliasen
        objectList - Liste der Objekte, die einem Alias zugeordnet sind. (enthält ""-Werte für Platzhalter)
        Throws:
        CriticalParserException - Bei Kommunikationsfehler oder falls in der Pseudoobjektdefinition ungültige Pids verwendet werden
      • addStandardBinding

        public void addStandardBinding​(java.lang.String placeholder,
                                       java.lang.String aspectName)
        Fügt eine Bindung eines Aspekts in die Symboltabelle ein, falls es für den angegebenen Platzhalter noch keine Bindung gibt. Gibt es schon eine Bindung für den Platzhalter, so wird die neue Bindung nicht eingetragen.
        Parameters:
        placeholder - Platzhalter des Aspekts (z.B. '?1')
        aspectName - Name des Aspekts
      • getBinding

        public java.lang.String getBinding​(java.lang.String placeholder)
        Liefert gebundenen Aspekt zurück
        Parameters:
        placeholder - Platzhalter des Aspekts
        Returns:
        Aspekt, der an den Platzhalter gebunden ist. Falls keine Bindung existiert, wird null zurückgegeben.
      • addAggregationDefinition

        public void addAggregationDefinition​(antlr.Token t,
                                             java.lang.String aggregationName,
                                             java.lang.String className)
                                      throws SemanticErrorException
        Fügt die Definition einer Aggregationsfunktion in die Symboltabelle ein
        Parameters:
        t - Token: Für Zeilenangabe im Fehler.
        aggregationName - Name der Aggregation
        className - Klassenname der Aggregation
        Throws:
        SemanticErrorException - Falls ein ungültiger Klassenname angegeben wurde
      • addStandardPeriod

        public void addStandardPeriod​(java.lang.String startDate,
                                      java.lang.String startTime,
                                      java.lang.String endDate,
                                      java.lang.String endTime)
                               throws SemanticErrorException
        Stellt den Standard Anfragebereich ein, sofern der Benutzer keinen angegeben hat. Hat der Benutzer bereits Zeitintervalle definiert, werden diese nicht geändert.
        Parameters:
        startDate - Startdatum
        startTime - Startzeit
        endDate - Enddatum
        endTime - Ende des Zeitraums
        Throws:
        SemanticErrorException - Falls es sich um einen fehlerhaften Zeitbereich handelt
      • isAlias

        public boolean isAlias​(java.lang.String name)
        Überprüft, ob es einen Alias diesen Namens gibt.
        Parameters:
        name - Name des Alias
        Returns:
        True, falls name der Name eines Alias ist.
      • getAlias

        public java.lang.String getAlias​(java.lang.String name)
        Gibt den Alias mit diesem Namen zurück
        Parameters:
        name - Name des Alias
        Returns:
        Den Alias oder null falls er nicht existiert
      • addDurationAttribute

        public void addDurationAttribute​(java.lang.String columnName)
        Zeitdauer Attribut hinzufügen.
        Parameters:
        columnName - Spaltenname des Zeitdauer Attributs.
      • getDeltaProtocol

        public java.lang.Boolean getDeltaProtocol()
        Gibt gewünschten Protokolltyp zurück, der von der Protokollerstellungs-Anfrage kommt. True: Änderungsprotokoll, False: Zustandsprotokoll, Null: Standardwert im Skript verwenden
        Returns:
        true, false oder null.
      • getPossibleAspectBindings

        public java.util.List<java.lang.String> getPossibleAspectBindings()
        Gibt alle im Skript definierten ungebundenen oder gebundenen Aspekte zurück.
        Returns:
        Liste mit Aspekt-Namen