de.bsvrz.pua.prot.util
Class ExpressionTree

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

Version:
$Revision: 1.1 $ / $Date: 2008/01/22 16:38:06 $ / ($Author: yvonnes $)
Author:
beck et al. projects GmbH, Martin Hilgers

Nested Class Summary
static class ExpressionTree.Operation
          Im Ausdruck mögliche Operationen.
 
Field Summary
 ExpressionTree left
          Linker Operand
 ExpressionTree.Operation operation
          Operator.
 ExpressionTree right
          Rechter Operand.
 
Constructor Summary
ExpressionTree()
          Ausdruck ohne Operanden und invalid Operand.
ExpressionTree(ExpressionTree l, ExpressionTree r, ExpressionTree.Operation o)
          Erzeugt einen Ausdruck.
 
Method Summary
 boolean containsAttribute()
          Überprüft ob der Ausdruck ein Attribut enthält.
 boolean equals(java.lang.Object other)
           
 ExpressionResult evaluate(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements)
          Wertet Baum aus.
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.util.HashSet<TempAttributeDescription> getDirectTempAttributes()
          Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet.
 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.util.HashSet<RealAttributeDescription> getRealAttributes()
          Liefert alle realen Attribute die im Ausdruck verwendet werden.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

left

public ExpressionTree left
Linker Operand


right

public ExpressionTree right
Rechter Operand.


operation

public ExpressionTree.Operation operation
Operator.

Constructor Detail

ExpressionTree

public ExpressionTree(ExpressionTree l,
                      ExpressionTree r,
                      ExpressionTree.Operation o)
Erzeugt einen Ausdruck.

Parameters:
l - linker Operand.
r - rechter Operand.
o - Operator.

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

public ExpressionResult evaluate(java.util.Hashtable<RealElement,BaseDataSet> realElements,
                                 java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements)
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.
Returns:
Wert, den dieser Teilbaum speichert oder null, falls eines der Realen Attribute keinen Wert besitzt

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.


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