org.jutil.predicate
Class  TotalPredicate
java.lang.Object
  |
  +--org.jutil.predicate.AbstractPredicate
        |
        +--org.jutil.predicate.TotalPredicate
- All Implemented Interfaces: 
- CollectionOperator, Predicate
- Direct Known Subclasses: 
- NegationAsFailure, PrimitiveTotalPredicate
- public abstract class TotalPredicate- extends AbstractPredicate
A class of Predicates that do not throw exceptions.
 
  
 If your predicate don't throw exceptions, you should subclass 
 TotalPredicate. This saves the client from writing useless try-catch 
 blocks.
 Typically, this class will be used as an anonymous inner class as follows:
 
TotalPredicate myPredicate = new TotalPredicate() {
            public boolean eval(Object o) {
              //calculate boolean value
              //using the given object
            }
            public int nbSubPredicates() {
              // ...
            }
            public List getSubPredicates() {
              // ...
            }
          };
 
 Note that if your predicate doesn't contain any sub predicates,
 it should extend PrimitiveTotalPredicate
 instead of this class.
 
 
| Method Summary | 
|  int | count(java.util.Collection collection)See superclass
 | 
| abstract  boolean | eval(java.lang.Object object)Evaluate this Predicate for the given object.
 | 
|  boolean | exists(java.util.Collection collection)See superclass
 | 
|  void | filter(java.util.Collection collection)See superclass
 | 
|  boolean | forall(java.util.Collection collection)See superclass
 | 
|  boolean | isValidElement(java.lang.Object o)This model method is supplied to make proving the correctness of a subclass
 easier.
 | 
 
 
| Methods inherited from class java.lang.Object | 
| clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
 
CVS_REVISION
public static final java.lang.String CVS_REVISION
TotalPredicate
public TotalPredicate()
eval
public abstract boolean eval(java.lang.Object object)
- Description copied from interface: Predicate
- Evaluate this Predicate for the given object.
- 
- Specifications:
-      also
- 
 public behavior
 signals (Exception) false;
 
 
- Specifications inherited from overridden method in interface Predicate:
- 
 public behavior
 ensures \result  == true|\result  == false;
 signals (Exception) !isValidElement(object);
 
 
isValidElement
public boolean isValidElement(java.lang.Object o)
- Description copied from interface: CollectionOperator
- This model method is supplied to make proving the correctness of a subclass
 easier. It offers a tunnel for information the caller of
 methods that operate on the collection.
  - Most often, this information concerns the type of the elements and them
 not being null. - The algorithm does not use this method, so we will not force subclasses
 to implement it. A strengthened specification should be given to enable
 proving the correctness of a specific operator. - This is actually an abstract precondition as used in Eiffel. 
- 
- Specifications:
-      also
- 
 public behavior
 ensures \result  == true;
 
 
- Specifications inherited from overridden method in interface CollectionOperator:
- 
 public behavior
 ensures ( \forall Object o1; ; ( \forall Object o2; (o2 != null)&&o2.equals(o1); isValidElement(o1) == isValidElement(o2)));
 
 
exists
public boolean exists(java.util.Collection collection)
- Description copied from class: AbstractPredicate
- See superclass
- 
- Specifications:
-      also
- 
 public behavior
 signals (Exception) false;
 
 
- Specifications inherited from overridden method in class AbstractPredicate:
 --- None ---
 
- Specifications inherited from overridden method in interface Predicate:
- 
 public behavior
 ensures collection != null ==> \result  == ( \exists Object o; Collections.containsExplicitly(collection,o); eval(o) == true);
 ensures collection == null ==> \result  == false;
 signals (ConcurrentModificationException) (* The collection was modified while accumulating *);
 signals (Exception) (collection != null)&&( \exists Object o; (collection != null)&&Collections.containsExplicitly(collection,o); !isValidElement(o));
 
 
forall
public boolean forall(java.util.Collection collection)
- Description copied from class: AbstractPredicate
- See superclass
- 
- Specifications:
-      also
- 
 public behavior
 signals (Exception) false;
 
 
- Specifications inherited from overridden method in class AbstractPredicate:
 --- None ---
 
- Specifications inherited from overridden method in interface Predicate:
- 
 public behavior
 ensures collection != null ==> \result  == ( \forall Object o; Collections.containsExplicitly(collection,o); eval(o) == true);
 ensures collection == null ==> \result  == true;
 signals (ConcurrentModificationException) (* The collection was modified while accumulating *);
 signals (Exception) (collection != null)&&( \exists Object o; (collection != null)&&Collections.containsExplicitly(collection,o); !isValidElement(o));
 
 
count
public int count(java.util.Collection collection)
- Description copied from class: AbstractPredicate
- See superclass
- 
- Specifications:
-      also
- 
 public behavior
 signals (Exception) false;
 
 
- Specifications inherited from overridden method in class AbstractPredicate:
 --- None ---
 
- Specifications inherited from overridden method in interface Predicate:
- 
 public behavior
 ensures collection != null ==> \result  == ( \num_of Object o; Collections.containsExplicitly(collection,o); eval(o) == true);
 ensures collection == null ==> \result  == 0;
 signals (ConcurrentModificationException) (* The collection was modified while accumulating *);
 signals (Exception) (collection != null)&&( \exists Object o; (collection != null)&&Collections.containsExplicitly(collection,o); !isValidElement(o));
 
 
filter
public void filter(java.util.Collection collection)
- Description copied from class: AbstractPredicate
- See superclass
- 
- Specifications:
-      also
- 
 public behavior
 signals (Exception) false;
 
 
- Specifications inherited from overridden method in class AbstractPredicate:
 --- None ---
 
- Specifications inherited from overridden method in interface Predicate:
- 
 public behavior
 ensures collection != null ==> ( \forall Object o; Collections.containsExplicitly(collection,o); eval(o) == true);
 ensures collection != null ==> ( \forall Object o; \old(Collections.containsExplicitly(collection,o)); (eval(o) == true) ==> (Collections.nbExplicitOccurrences(o,collection) == \old(Collections.nbExplicitOccurrences(o,collection))));
 signals (ConcurrentModificationException) (* The collection was modified while accumulating *);
 signals (Exception) (collection != null)&&( \exists Object o; (collection != null)&&Collections.containsExplicitly(collection,o); !isValidElement(o));