wie im Paradies

Illusion

Selbst das Paradies kam nicht ohne Bedingungen aus. Noch weniger also das richtige Leben. Deshalb gibt es die Schnittstelle ConditionElement. Das hat jetzt nichts mit Haarpflege zu tun, sondern hilft, den Zugriff auf gespeicherte Daten einzuschränken.

Damit alle Bedingungsarten gleichermaßen großzügig zu ihrer Umwelt sein können, kommen bei der Auswertung der Bedingung die gleichen Übersetzungshelfer zu Einsatz, wie beim Schreiben und Lesen der Entitäten.

EqualConditionElement

public EqualConditionElement(String name, Object value);
   

Die gesuchten Entitäten müssen ein Attribut haben, welches in "name" übergeben wurde. Die Bedingung trifft auf alle Instanzen zu, die im bezeichneten Attribut den Wert von "value" haben. "value" muss nicht vom gleichen Typ, wie das bezeichnete Attribut in der zu suchenden Entität sein, aber es muss ein Converter existieren, der den einen Typ in den anderen wandeln kann.

NotEqualConditionElement

public NotEqualConditionElement(String name, Object value);
   

Ist das Gegenteil von EqualConditionElement.

InListConditionElement

Diese Bedingung ist die Lottofee.

public InListConditionElement(String name, List values);

public InListConditionElement(String name, Object[] values);
Die Bedingung trifft auf alle Instanzen zu, deren bezeichnetes Attribut einem Wert aus der übergebenen Werteliste entspricht. Die Werteliste kann dabei als Java Liste oder als statisches Array übergeben werden. Auch hier gilt wieder: der Typ der Elemente in der Werteliste muss nicht identisch mit dem Typ des bezeichneten Attributes in der gesuchten Entität sein - solange ein passender Converter gefunden wird ...

LowerBoundConditionElement

Grenzkontrolle!

public LowerBoundConditionElement(String name, Object value);

public LowerBoundConditionElement(String name, Object value, boolean includeBoundary);
Die Bedingung trifft auf alle Instanzen zu, deren bezeichnetes Attribut größer als der übergebene Wert von "value" ist. Optional kann angegeben werden, ob der Grenzwert ein zulässiger Wert ist oder nicht. Vorgabe ist, dass der Grenzwert nicht Teil der Ergebnismenge ist.

UpperBoundConditionElement

Grenzkontrolle - diesmal von der anderen Seite des Zauns!

public UpperBoundConditionElement(String name, Object value);

public UpperBoundConditionElement(String name, Object value, boolean includeBoundary);
Die Bedingung trifft auf alle Instanzen zu, deren bezeichnetes Attribut kleiner als der übergebene Wert von "value" ist. Optional kann angegeben werden, ob der Grenzwert ein zulässiger Wert ist oder nicht. Vorgabe ist, dass der Grenzwert nicht Teil der Ergebnismenge ist.

SearchConditionElement

Gefällt mir das Muster?

public SearchConditionElement(String name, Object value);
   
Diese Bedingung führt eine Mustersuche in dem Attribut durch, welches per "name" bezeichnet wurde. Für eine Mustersuche muss der Wert in "value" einen Platzhalter enthalten. Ist dies nicht der Fall, wird Wert an beiden Enden um einen Platzhalter erweitert, sodass der Text in "value" irgendwo im Attribut der Prüfinstanz auftreten muss. Klar, dass eine Suchbedingung nur bei Textattributen angewendet werden kann.

MinConditionElement

Wer hat den kleinsten ...?

public MinConditionElement(String name);
   
Bei dieser Bedingung kann kein Wert angegeben werden. Die Datenbank ermittelt selbst, wer den kleinsten hat und stellt ihn an den Pranger - äh, liefert die Instanz als Ergebnis.

MaxConditionElement

Wer ist der Größte im ganzen Land?

public MaxConditionElement(String name);
   
Bei dieser Bedingung kann kein Wert angegeben werden. Die Datenbank ermittelt selbst, wer der größte ist und liefert die Instanz als Ergebnis.

AlternatingSequence

Normalerweise müssen alle Bedingungen gleichzeitig erfüllt sein. Möchte man eine relaxtere Art von Bedingung formulieren, kann dies über AlternatingSequence geschehen.

AlternatingSequence ist hierbei selbst keine Bedingung, sondern nimmt eine Liste von Bedingungen an und letztlich muss nur eine Bedingung aus der Liste zutreffen.

public AlternatingSequence(ConditionElement[] elems);

public AlternatingSequence(List args);
   
Auch hier kann die Liste der Bedingungen als Java Liste oder als statisches Array übergeben werden.