package com.aionemu.packetsamurai.filter;
import java.util.List;
import com.aionemu.packetsamurai.filter.booleanoperator.BooleanOperator;
import com.aionemu.packetsamurai.parser.DataStructure;
import javolution.util.FastList;
/**
*
* @author Gilles Duboscq
*
*/
public class Condition
{
private List<Condition> _subConditions;
private BooleanOperator _operator;
private boolean _inverted;
protected Condition()
{
// only used by the Expression sub-class
}
public Condition(BooleanOperator op)
{
this(op, false);
}
public Condition(BooleanOperator op, boolean inv)
{
_subConditions = new FastList<Condition>();
_operator = op;
_inverted = inv;
}
public Condition(String str)
{
//TODO parse str
}
@Override
public String toString()
{
// TODO this
return "TODO";
}
public boolean evaluate(DataStructure dp)
{
return this.isInverted() ^ this.getBooleanOperator().execute(this.getSubCondition(), dp);
}
public void setInverted(boolean inverted)
{
_inverted = inverted;
}
public boolean isInverted()
{
return _inverted;
}
public BooleanOperator getBooleanOperator()
{
return _operator;
}
public void setOperator(BooleanOperator op)
{
_operator = op;
}
public final List<Condition> getSubCondition()
{
return _subConditions;
}
public final void addSubCondition(Condition cond)
{
this.getSubCondition().add(cond);
}
public final void removeSubCondition(Condition cond)
{
this.getSubCondition().remove(cond);
}
}