package com.intrbiz.bergamot.virtual.operator; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import com.intrbiz.bergamot.model.Status; import com.intrbiz.bergamot.virtual.VirtualCheckExpressionContext; import com.intrbiz.bergamot.virtual.reference.CheckReference; public abstract class VirtualCheckOperator implements Serializable { private static final long serialVersionUID = 1L; public abstract boolean computeOk(VirtualCheckExpressionContext context); public abstract Status computeStatus(VirtualCheckExpressionContext context); public final Set<CheckReference> computeDependencies() { Set<CheckReference> checks = new HashSet<CheckReference>(); this.computeDependencies(checks); return checks; } /** * Are all dependent checks in a hard state? */ public boolean isAllDependenciesHard(VirtualCheckExpressionContext context) { for (CheckReference check : this.computeDependencies()) { if (! check.resolve(context).getState().isHard()) return false; } return true; } public abstract void computeDependencies(Set<CheckReference> checks); }