package org.jboss.mx.remoting.event;
import javax.management.*;
import java.io.Serializable;
public class CompositeQueryExp implements QueryExp, Serializable
{
static final long serialVersionUID = 6918797787135545210L;
public static final int AND = 0;
public static final int OR = 1;
private int operator;
private QueryExp exps[];
public CompositeQueryExp(QueryExp exp[])
{
this(exp,AND);
}
public CompositeQueryExp(QueryExp exp[], int operator)
{
this.exps=exp;
this.operator = operator;
}
public boolean apply(ObjectName objectName) throws BadStringOperationException, BadBinaryOpValueExpException, BadAttributeValueExpException, InvalidApplicationException
{
for (int c=0;c<exps.length;c++)
{
if (exps[c]!=null)
{
boolean value = exps[c].apply(objectName);
if (value && operator == OR)
{
return true;
}
else if (!value && operator == AND)
{
return false;
}
}
}
return (operator == AND) ? true : false;
}
public void setMBeanServer(MBeanServer mBeanServer)
{
for (int c=0;c<exps.length;c++)
{
if (exps[c]!=null)
{
exps[c].setMBeanServer(mBeanServer);
}
}
}
}