Class ExpressionTree

  • Direct Known Subclasses:
    ExpressionLeaf

    public class ExpressionTree
    extends java.lang.Object
    Modelliert einen binären Baum von Ausdrücken. Es ist möglich, dass ein Knoten nur ein Kind hat (für unäre Operatoren) Die Knoten sind Operatoren, die Blätter Zeichenketten, Bool, Attribute oder Zahlen.
    OPT Methode implementieren, die den Baum vereinfacht, d.h. alle nicht variablen Knoten bereits auswertet (-> kürzere Wege)
    • Constructor Detail

      • ExpressionTree

        public ExpressionTree()
        Ausdruck ohne Operanden und invalid Operand.
    • Method Detail

      • getAttributes

        public java.util.List<AttributeDescription> getAttributes()
        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.
        Returns:
        Attribute, die im Ausdruck verwendet werden. Leeres Liste, falls keine Attribute verwendet werden.
      • getAttributeOrder

        protected void getAttributeOrder​(java.util.ArrayList<AttributeDescription> list,
                                         java.util.HashSet<AttributeDescription> visited)
        Liefert alle Attribute auf die der Baum zugreift. Dublikate werden verworfen, d.h. jedes Attribut wird nur einmal zurückgeliefert.
        Parameters:
        list - liste der Elemente
        visited - Elemente die bereits in der Liste eingetragen wurden.
      • evaluate

        @Deprecated
        public final ExpressionResult evaluate​(java.util.Hashtable<RealElement,​BaseDataSet> realElements,
                                               java.util.Hashtable<TempAttributeDescription,​TempAttribut> tempElements,
                                               int pseudoObjectIndex)
        Deprecated.
        evaluateEx(Hashtable, Hashtable, int) liefert zusätzlich den Datenzustand zurück
        Wertet Baum aus.
        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, den dieser Teilbaum speichert
      • evaluateEx

        public ExpressionResultAndState evaluateEx​(java.util.Hashtable<RealElement,​BaseDataSet> realElements,
                                                   java.util.Hashtable<TempAttributeDescription,​TempAttribut> tempElements,
                                                   int pseudoObjectIndex)
        Wertet Baum aus.
        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, den dieser Teilbaum speichert
      • getNumColumns

        public 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)
        Returns:
        Anzahl der Spalten
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • getFirstRealAttribute

        public RealAttributeDescription getFirstRealAttribute()
        Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.
        Returns:
        Attributbeschreibung oder null, falls kein Reales Attribut verwendet wird.
      • getFirstTempAttribute

        public TempAttributeDescription getFirstTempAttribute()
        Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.
        Returns:
        Attributbeschreibung oder null, falls kein temporäres Attribut verwendet wird.
      • getDirectTempAttributes

        public java.util.HashSet<TempAttributeDescription> getDirectTempAttributes()
        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.
        Returns:
        Temporäre Attribute
      • getRealAttributes

        public java.util.HashSet<RealAttributeDescription> getRealAttributes()
        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.
        Returns:
        Set mit realen Attributen.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • containsAttribute

        public boolean containsAttribute()
        Überprüft ob der Ausdruck ein Attribut enthält. Es wird nach dem ersten temporären oder realen Attribut gesucht.
        Returns:
        true falls der Ausdruck ein Attribut enthält.false sonst.