/*
* Copyright © 2010 by Ondrej Skalicka. All Rights Reserved
*/
package cz.cvut.felk.cig.jcop.solver.condition;
import java.util.ArrayList;
import java.util.List;
/**
* Scaffold for more complex conditions in AND relation.
*
* @author Ondrej Skalicka
*/
public class AndCondition extends BaseCondition {
/**
* List of all stop conditions associated with this AndCondition.
* <p/>
* All these conditions must be met in order to {@link #isConditionMet()} return true.
*/
protected List<StopCondition> stopConditions;
/**
* Creates new AndCondition with empty list of other StopConditions
*/
public AndCondition() {
this.stopConditions = new ArrayList<StopCondition>();
}
/**
* Creates new AndCondition with list of other StopConditions.
*
* @param stopConditions list of stop conditions to be grouped into one
*/
public AndCondition(List<StopCondition> stopConditions) {
this.stopConditions = stopConditions;
}
/**
* Creates AND condition from two other stop conditions. It is less generalized form of {@link
* #AndCondition(java.util.List)}.
*
* @param stopCondition left part of AND relation
* @param stopCondition2 right part of AND relation
*/
public AndCondition(StopCondition stopCondition, StopCondition stopCondition2) {
this.stopConditions = new ArrayList<StopCondition>(2);
this.stopConditions.add(stopCondition);
this.stopConditions.add(stopCondition2);
}
/**
* Adds new stop condition to list of conditions to be met.
*
* @param stopCondition new stop condition that must be met
*/
public void addStopCondition(StopCondition stopCondition) {
this.stopConditions.add(stopCondition);
}
/**
* Returns true iff all stop conditions passed to constructor are true.
*
* @return true iff all grouped conditions are true
*/
public boolean isConditionMet() {
for (StopCondition sc : this.stopConditions)
if (!sc.isConditionMet()) return false;
return true;
}
}