package com.intrbiz.bergamot.virtual.operator;
import java.util.Set;
import com.intrbiz.bergamot.model.Status;
import com.intrbiz.bergamot.virtual.VirtualCheckExpressionContext;
import com.intrbiz.bergamot.virtual.reference.CheckReference;
public class XorOperator extends VirtualCheckOperator
{
private static final long serialVersionUID = 1L;
private final VirtualCheckOperator left;
private final VirtualCheckOperator right;
public XorOperator(VirtualCheckOperator left, VirtualCheckOperator right)
{
super();
this.left = left;
this.right = right;
}
public VirtualCheckOperator getLeft()
{
return left;
}
public VirtualCheckOperator getRight()
{
return right;
}
@Override
public boolean computeOk(VirtualCheckExpressionContext context)
{
return this.left.computeOk(context) ^ this.right.computeOk(context);
}
public Status computeStatus(VirtualCheckExpressionContext context)
{
// we are making an implicit decision with this operator, so:
return this.computeOk(context) ? Status.OK : Status.CRITICAL;
}
@Override
public void computeDependencies(Set<CheckReference> checks)
{
this.left.computeDependencies(checks);
this.right.computeDependencies(checks);
}
public String toString()
{
return this.left.toString() + " ^ " + this.right.toString();
}
}