Package de.bsvrz.pua.prot.util
Class ExpressionLeaf
- java.lang.Object
-
- de.bsvrz.pua.prot.util.ExpressionTree
-
- de.bsvrz.pua.prot.util.ExpressionLeaf
-
public class ExpressionLeaf extends ExpressionTree
Repräsentiert ein Blatt in einemExpressionTree
Ein Blatt enthält entweder eine Zeichenkette, Bool, Attribute, Zahlen oder eine Funktion mit Ausdruck
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ExpressionLeaf.LeafType
Typ, der in diesem Blatt gespeichert wird.-
Nested classes/interfaces inherited from class de.bsvrz.pua.prot.util.ExpressionTree
ExpressionTree.Operation
-
-
Field Summary
-
Fields inherited from class de.bsvrz.pua.prot.util.ExpressionTree
left, operation, right
-
-
Constructor Summary
Constructors Constructor Description ExpressionLeaf(AttributeDescription a)
Legt ein Blatt an, das ein Attribut speichertExpressionLeaf(AttributeDescription[] a)
Legt ein Blatt an, das mehrere Attribute speichert.ExpressionLeaf(java.lang.Boolean b)
Legt ein Blatt mit einem booleschen Wert an.ExpressionLeaf(java.lang.Double d)
Legt ein Blatt an, das eine Fließkommazahl speichertExpressionLeaf(java.lang.Long n)
Legt ein Blatt an, das eine Ganzzahl speichertExpressionLeaf(java.lang.String s)
Legt ein Blatt an, das einen String speichertExpressionLeaf(java.lang.String functionName, java.util.List<ExpressionTree> expressionList)
Legt ein Blatt an, das eine Funktion beinhaltet
-
Method Summary
Modifier and Type Method Description boolean
containsAttribute()
Überprüft ob der Ausdruck ein Attribut enthält.static ExpressionLeaf
createDoubleLeaf(antlr.collections.AST ast, java.lang.String number)
Erzeugt ein Blatt das die Fließkommazahl 'number' speichertstatic ExpressionLeaf
createLongLeaf(antlr.collections.AST ast, java.lang.String number)
Erzeugt ein Blatt das die ganzzahl 'number' speichertboolean
equals(java.lang.Object other)
ExpressionResultAndState
evaluateEx(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)
Gibt den Ausdruck zurück, der in diesem Blatt abgelegt ist Ist es ein Attribut, wird der Wert aus der übergebenen Hashtable gesucht.protected void
getAttributeOrder(java.util.ArrayList<AttributeDescription> list, java.util.HashSet<AttributeDescription> visited)
Liefert alle Attribute auf die der Baum zugreift.java.util.List<AttributeDescription>
getAttributes()
Liefert alle Attribute, auf die der Baum zugreift, zurück.java.lang.Boolean
getBool()
java.util.HashSet<TempAttributeDescription>
getDirectTempAttributes()
Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet.java.lang.Double
getDouble()
java.util.List<ExpressionTree>
getExpressionList()
ExpressionInterface
getExpressionObject()
RealAttributeDescription
getFirstRealAttribute()
Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.TempAttributeDescription
getFirstTempAttribute()
Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.java.lang.Long
getLong()
int
getNumColumns()
Gibt zurück, für wie viele Spalten ein TempAttribut definiert werden soll, dass diesen Ausdruck verwendet (bei der Verwendung von Aliasen in Attributen)java.util.HashSet<RealAttributeDescription>
getRealAttributes()
Liefert alle realen Attribute die im Ausdruck verwendet werden.ExpressionResult.ResultType
getResultType(antlr.collections.AST ast)
Gibt zurück, welchen Datentyp dieses Blatt liefert.java.lang.String
getString()
ExpressionLeaf.LeafType
getType()
java.lang.String
toString()
-
Methods inherited from class de.bsvrz.pua.prot.util.ExpressionTree
evaluate
-
-
-
-
Constructor Detail
-
ExpressionLeaf
public ExpressionLeaf(java.lang.Boolean b)
Legt ein Blatt mit einem booleschen Wert an.- Parameters:
b
- Wert des Blattes
-
ExpressionLeaf
public ExpressionLeaf(java.lang.String s)
Legt ein Blatt an, das einen String speichert- Parameters:
s
- String
-
ExpressionLeaf
public ExpressionLeaf(AttributeDescription a)
Legt ein Blatt an, das ein Attribut speichert- Parameters:
a
- Attribut
-
ExpressionLeaf
public ExpressionLeaf(AttributeDescription[] a)
Legt ein Blatt an, das mehrere Attribute speichert. Dies ist der Fall, wenn auf ein Attribut verwiesen werden soll, dass z.B. Aliase benutzt und deshalb mehrere Objekte verwendet.- Parameters:
a
- Attribut
-
ExpressionLeaf
public ExpressionLeaf(java.lang.Double d)
Legt ein Blatt an, das eine Fließkommazahl speichert- Parameters:
d
- Double
-
ExpressionLeaf
public ExpressionLeaf(java.lang.Long n)
Legt ein Blatt an, das eine Ganzzahl speichert- Parameters:
n
- Ganzzahl
-
ExpressionLeaf
public ExpressionLeaf(java.lang.String functionName, java.util.List<ExpressionTree> expressionList) throws CriticalParserException
Legt ein Blatt an, das eine Funktion beinhaltet- Parameters:
functionName
- Name der Klasse, die die Funktion repräsentiertexpressionList
- Operanden der Funktion (Jedes Listenelement entspricht einem Operanden)- Throws:
CriticalParserException
- Zur Funktion passende KLasse existiert nicht.
-
-
Method Detail
-
getAttributes
public java.util.List<AttributeDescription> getAttributes()
Description copied from class:ExpressionTree
Liefert alle Attribute, auf die der Baum zugreift, zurück. Liefert erst alle Attribute aus dem linken Teilbaum des Baumes. Anschließend werden die Objekte aus dem rechten Teilbaum zurückgegeben. Wird ein Attribut mehrfach verwendet, so wird nur das erste Auftreten berücksichtigt.- Overrides:
getAttributes
in classExpressionTree
- Returns:
- Liste mit Attributen, die in diesem Blatt gespeichert werden. Falls kein Attribut abgelegt ist, wird leere Liste zurückgegeben
-
getAttributeOrder
protected void getAttributeOrder(java.util.ArrayList<AttributeDescription> list, java.util.HashSet<AttributeDescription> visited)
Description copied from class:ExpressionTree
Liefert alle Attribute auf die der Baum zugreift. Dublikate werden verworfen, d.h. jedes Attribut wird nur einmal zurückgeliefert.- Overrides:
getAttributeOrder
in classExpressionTree
- Parameters:
list
- liste der Elementevisited
- Elemente die bereits in der Liste eingetragen wurden.- See Also:
ExpressionTree.getAttributeOrder(ArrayList,HashSet)
-
evaluateEx
public ExpressionResultAndState evaluateEx(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)
Gibt den Ausdruck zurück, der in diesem Blatt abgelegt ist Ist es ein Attribut, wird der Wert aus der übergebenen Hashtable gesucht. Falls der Wert nicht bestimmt werden konnte, dann liefertExpressionResult.getType()
den WertExpressionResult.ResultType.NONE
. Falls der Typ des Verwendeten realen Attributs nicht unterstützt wird (z.B.ReferenceAttributeType
) ist result.type = error;- Overrides:
evaluateEx
in classExpressionTree
- Parameters:
realElements
- Mapping der realen Elemente zu den ihnen zugeordeten Werten.tempElements
- Mapping der temporären Attribute zu den ihnen zugeordneten Werten.pseudoObjectIndex
- Falls ein Attribut Aliase verwendet kann hier der Pseudoobjekt-Index festgelegt werden, von welchem Pseudoobjekt/Alias der Wert geholt werden soll. Ansonsten -1.- Returns:
- Wert, der in diesem Blatt gespeichert ist.
-
getResultType
public ExpressionResult.ResultType getResultType(antlr.collections.AST ast) throws SemanticErrorException
Gibt zurück, welchen Datentyp dieses Blatt liefert. Wird während des Interpretierens des Skripts aufgerufen um Typkompatibilitäten sicherzustellen.- Overrides:
getResultType
in classExpressionTree
- Parameters:
ast
- AST- Returns:
- Ergebnistyp
- Throws:
SemanticErrorException
- Falls ein Fehler auftritt (aufgrund eines ungültigen Skripts)
-
getNumColumns
public int getNumColumns()
Description copied from class:ExpressionTree
Gibt zurück, für wie viele Spalten ein TempAttribut definiert werden soll, dass diesen Ausdruck verwendet (bei der Verwendung von Aliasen in Attributen)- Overrides:
getNumColumns
in classExpressionTree
- Returns:
- Anzahl der Spalten
-
createLongLeaf
public static ExpressionLeaf createLongLeaf(antlr.collections.AST ast, java.lang.String number) throws SemanticErrorException
Erzeugt ein Blatt das die ganzzahl 'number' speichert- Parameters:
ast
- Knoten, der die Zahl enthält (wird nur für die Zeilenangabe in der Fehlermeldung benötigt)number
- Ganz- oder Fliesskommazahl- Returns:
- Blatt dass die Zahl enthält.
- Throws:
SemanticErrorException
- Falls 'number' eine ungültige Zahl ist
-
createDoubleLeaf
public static ExpressionLeaf createDoubleLeaf(antlr.collections.AST ast, java.lang.String number) throws SemanticErrorException
Erzeugt ein Blatt das die Fließkommazahl 'number' speichert- Parameters:
ast
- Knoten, der die Zahl enthält (wird nur für die Zeilenangabe in der Fehlermeldung benötigt)number
- Ganz- oder Fliesskommazahl- Returns:
- Blatt dass die Zahl enthält.
- Throws:
SemanticErrorException
- Falls 'number' eine ungültige Zahl ist
-
toString
public java.lang.String toString()
- Overrides:
toString
in classExpressionTree
- See Also:
Object.toString()
-
getFirstRealAttribute
public RealAttributeDescription getFirstRealAttribute()
Description copied from class:ExpressionTree
Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.- Overrides:
getFirstRealAttribute
in classExpressionTree
- Returns:
- Attributbeschreibung oder null, falls kein Reales Attribut verwendet wird.
- See Also:
ExpressionTree.getFirstRealAttribute()
-
getFirstTempAttribute
public TempAttributeDescription getFirstTempAttribute()
Description copied from class:ExpressionTree
Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.- Overrides:
getFirstTempAttribute
in classExpressionTree
- Returns:
- Attributbeschreibung oder null, falls kein temporäres Attribut verwendet wird.
- See Also:
ExpressionTree.getFirstTempAttribute()
-
getDirectTempAttributes
public java.util.HashSet<TempAttributeDescription> getDirectTempAttributes()
Description copied from class:ExpressionTree
Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet. Dazu wird der Ausdruck durchsucht und die gefundenen temporären Attribute zurückgegeben. Die gefundenen Attribute werde nicht rekursiv durchsucht.- Overrides:
getDirectTempAttributes
in classExpressionTree
- Returns:
- Temporäre Attribute
- See Also:
ExpressionTree.getDirectTempAttributes()
-
getRealAttributes
public java.util.HashSet<RealAttributeDescription> getRealAttributes()
Description copied from class:ExpressionTree
Liefert alle realen Attribute die im Ausdruck verwendet werden. Es werden nur direkt referenzierte reale Attribute zurückgegeben. D.h. temporäre Attribute und deren reale Attribute werden nicht zurückgegeben.- Overrides:
getRealAttributes
in classExpressionTree
- Returns:
- Set mit realen Attributen.
- See Also:
ExpressionTree.getRealAttributes()
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classExpressionTree
- See Also:
Object.equals(java.lang.Object)
-
containsAttribute
public boolean containsAttribute()
Description copied from class:ExpressionTree
Überprüft ob der Ausdruck ein Attribut enthält. Es wird nach dem ersten temporären oder realen Attribut gesucht.- Overrides:
containsAttribute
in classExpressionTree
- Returns:
true
falls der Ausdruck ein Attribut enthält.false
sonst.- See Also:
ExpressionTree.containsAttribute()
-
getType
public ExpressionLeaf.LeafType getType()
- Returns:
- Liefert den Typ des Blattes.
-
getBool
public java.lang.Boolean getBool()
- Returns:
- Liefert den abgelegten boolschen Wert.
-
getDouble
public java.lang.Double getDouble()
- Returns:
- Liefert den abgelegten double Wert.
-
getLong
public java.lang.Long getLong()
- Returns:
- Liefert den abgelegten Long Wert.
-
getString
public java.lang.String getString()
- Returns:
- Liefert den abgelegten String.
-
getExpressionList
public java.util.List<ExpressionTree> getExpressionList()
- Returns:
- Liefert die Liste der Funktionsparameter.
- See Also:
getExpressionObject()
-
getExpressionObject
public ExpressionInterface getExpressionObject()
- Returns:
- Liefert die abgelegte Funktion.
- See Also:
getExpressionList()
-
-