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 einemExpressionTreeEin 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 classExpressionLeaf.LeafTypeTyp, 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 booleancontainsAttribute()Überprüft ob der Ausdruck ein Attribut enthält.static ExpressionLeafcreateDoubleLeaf(antlr.collections.AST ast, java.lang.String number)Erzeugt ein Blatt das die Fließkommazahl 'number' speichertstatic ExpressionLeafcreateLongLeaf(antlr.collections.AST ast, java.lang.String number)Erzeugt ein Blatt das die ganzzahl 'number' speichertbooleanequals(java.lang.Object other)ExpressionResultAndStateevaluateEx(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 voidgetAttributeOrder(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.BooleangetBool()java.util.HashSet<TempAttributeDescription>getDirectTempAttributes()Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet.java.lang.DoublegetDouble()java.util.List<ExpressionTree>getExpressionList()ExpressionInterfacegetExpressionObject()RealAttributeDescriptiongetFirstRealAttribute()Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.TempAttributeDescriptiongetFirstTempAttribute()Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.java.lang.LonggetLong()intgetNumColumns()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.ResultTypegetResultType(antlr.collections.AST ast)Gibt zurück, welchen Datentyp dieses Blatt liefert.java.lang.StringgetString()ExpressionLeaf.LeafTypegetType()java.lang.StringtoString()-
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 CriticalParserExceptionLegt 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:ExpressionTreeLiefert 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:
getAttributesin 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:ExpressionTreeLiefert alle Attribute auf die der Baum zugreift. Dublikate werden verworfen, d.h. jedes Attribut wird nur einmal zurückgeliefert.- Overrides:
getAttributeOrderin 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:
evaluateExin 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:
getResultTypein 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:ExpressionTreeGibt zurück, für wie viele Spalten ein TempAttribut definiert werden soll, dass diesen Ausdruck verwendet (bei der Verwendung von Aliasen in Attributen)- Overrides:
getNumColumnsin 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:
toStringin classExpressionTree- See Also:
Object.toString()
-
getFirstRealAttribute
public RealAttributeDescription getFirstRealAttribute()
Description copied from class:ExpressionTreeLiefert das erste Reale Attribut, das im Ausdruck verwendet wird.- Overrides:
getFirstRealAttributein classExpressionTree- Returns:
- Attributbeschreibung oder null, falls kein Reales Attribut verwendet wird.
- See Also:
ExpressionTree.getFirstRealAttribute()
-
getFirstTempAttribute
public TempAttributeDescription getFirstTempAttribute()
Description copied from class:ExpressionTreeLiefert das erste temporäre Attribut, das im Ausdruck verwendet wird.- Overrides:
getFirstTempAttributein 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:ExpressionTreeLiefert 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:
getDirectTempAttributesin classExpressionTree- Returns:
- Temporäre Attribute
- See Also:
ExpressionTree.getDirectTempAttributes()
-
getRealAttributes
public java.util.HashSet<RealAttributeDescription> getRealAttributes()
Description copied from class:ExpressionTreeLiefert 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:
getRealAttributesin classExpressionTree- Returns:
- Set mit realen Attributen.
- See Also:
ExpressionTree.getRealAttributes()
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equalsin 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:
containsAttributein classExpressionTree- Returns:
truefalls der Ausdruck ein Attribut enthält.falsesonst.- 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()
-
-