de.bsvrz.pua.prot.interpreter.semantics
Class SymbolTable

java.lang.Object
  extended by de.bsvrz.pua.prot.interpreter.semantics.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.

Version:
$Revision: 1.2 $ / $Date: 2008/01/22 16:55:49 $ / ($Author: yvonnes $)
Author:
beck et al. projects GmbH, Martin Hilgers

Constructor Summary
SymbolTable(DataModel model, ProcessingParameter pp)
          Erzeugen der Symboltabelle
 
Method Summary
 void addAggregationDefinition(Token t, java.lang.String aggregationName, java.lang.String className)
          Fügt die Definition einer Aggregationsfunktion in die Symboltabelle ein
 void addAliasDefinition(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(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(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[] 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
 SystemObject getObject(SystemObjectType sot)
          Gibt das Objekt zurück, durch das der übergebene Typ ersetzt werden soll.
 boolean isAlias(java.lang.String name)
          Überprüft, ob es einen Alias diesen Namens gibt.
 void setCheck(MemberCheck check)
          Festlegen welches Objekt die Typüberprüfungen durchführt.
 void setProtocolType(boolean delta)
          Legt den Typ des Protokolls fest, falls das nicht durch Eingabeparameter des Auftraggebers festgelegt wurde.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SymbolTable

public SymbolTable(DataModel model,
                   ProcessingParameter pp)
            throws CriticalParserException
Erzeugen der Symboltabelle

Parameters:
model - Datenmodell
pp - Eingabeparameter vom Auftraggeber
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(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 SystemObject getObject(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.

addAliasDefinition

public void addAliasDefinition(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

addPseudoObjectDefinition

public void addPseudoObjectDefinition(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.
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(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

setProtocolType

public void setProtocolType(boolean delta)
Legt den Typ des Protokolls fest, falls das nicht durch Eingabeparameter des Auftraggebers festgelegt wurde.

Parameters:
delta - True, falls ein Änderungsprotokoll erstellt werden soll. False für ein Zustandsprotokoll.

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.

addDurationAttribute

public void addDurationAttribute(java.lang.String columnName)
Zeitdauer Attribut hinzufügen.

Parameters:
columnName - Spaltenname des Zeitdauer Attributs.


Copyright © 2005-2008 beck et al. projects GmbH All Rights Reserved.