Class SymbolTable
- java.lang.Object
-
- de.bsvrz.pua.prot.interpreter.semantics.SymbolTable
-
public class SymbolTable extends java.lang.Object
Symboltabelle.
Die Symboltabelle wird vonProtocolParser
während des Parsens aufgebaut.
Standardwerte aus dem Skript (aus dem Bereich Standards) werden nur übernommen, wenn sie keine Eingabeparameter des Benutzers überschreiben.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_pseudoObjectDefinitionInitialized
Prüft, ob es schon eine Pseudoobjekt-Definition gibt.
-
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 einvoid
addAliasDefinition(antlr.Token token, java.lang.String name, java.lang.String obj)
Fügt eine Alias-Definition in die Symboltabelle einvoid
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ückjava.lang.String[]
getAliasObjects(java.lang.String alias)
Liefert die dem Alias zugeordneten Objekt-PIDs zurückjava.lang.String
getBinding(java.lang.String placeholder)
Liefert gebundenen Aspekt zurückjava.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.
-
-
-
Constructor Detail
-
SymbolTable
public SymbolTable(de.bsvrz.dav.daf.main.config.DataModel model, ProcessingParameter pp) throws CriticalParserException
Erzeugen der Symboltabelle- Parameters:
model
- Datenmodellpp
- 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 Aliasobj
- 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 AttributscolumnName
- Spaltenname- Throws:
SemanticErrorException
- Der Name des temporären Attributs entsprichtDurationAttributeDescription.DURATION
-
isTempAttributeDefined
public boolean isTempAttributeDefined(java.lang.String name)
-
getTempAttributeDefinition
public TempAttributeDescription getTempAttributeDefinition(java.lang.String name)
-
getOrCreateTempAttributeDefinition
public TempAttributeDescription getOrCreateTempAttributeDefinition(java.lang.String name)
-
getTempAttributes
public java.util.List<TempAttributeDescription> getTempAttributes()
-
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 AliasenobjectList
- 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 AggregationclassName
- 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
- StartdatumstartTime
- StartzeitendDate
- EnddatumendTime
- 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
-
-