package commons.application.ctx.functor;
import commons.application.ctx.Context;
/**
 * wie superklasse, kann aber verkettet sein. der zugehoerige ListProcessor loest die kette rekursiv
 * auf.
 * @author ks
 */
public abstract class LPredicate
{

// protected static Logger logger = Logger.getLogger(LPredicate.class);
private int listSize = 0;

public LPredicate(LPredicate nextPredicate)
{
   this.nextPredicate = nextPredicate;
}

public LPredicate()
{}

public void setSize (int size)
{
   listSize = size;
}

public int getListSize ()
{
   return listSize;
}
LPredicate nextPredicate = null;

/**
 * dient der verkettung von predicates nur sinnvoll bei process()
 * @param nextPredicate
 */
public void setNext (LPredicate nextPredicate)
{
   this.nextPredicate = nextPredicate;
}

public abstract boolean isTrue (Object value, Context ctx);

public abstract Object operate (Object value, Context ctx);
}
