Problem
Ein Standard-Filter kann aus logischen Ausdrücke nach Spalten und Attributen bestehen. Möchte man einen Filter anhand komplexerer Strukturen aufbauen, stößt man bei den Möglichkeiten, die die Doors GUI bietet, an die Grenzen.
Approach
In solchen Fällen kann man die internen Funktionen benutzen, die bei einer Filterung verwendet werden.
- Filtern ausschalten
- Iteration über das Modul
- Abfrage der komplexeren Bedingungen, die das Filtern tun sollen (hier einfache IF() Struktur)
- accept(obj) <– diese Objekte kommen in den Filter
- reject(obj) <– diese Object werden aus dem Filter entfernt
- Filtern einschalten
Solution
Module m = current; filtering off; Object anObject = null; for anObject in m do { if(anObject."BB_Type" "" != "Reviewer") { reject anObject; } else { accept anObject; } } filtering on;