package hdgl.db.query.condition; import hdgl.db.graph.Entity; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.Arrays; public class Conjunction extends AbstractCondition { public static final byte FLAG_BYTE=-1; AbstractCondition[] conditions; public Conjunction(){ } public Conjunction(AbstractCondition[] conditions) { super(); this.conditions = conditions; } public AbstractCondition[] getConditions() { return conditions; } public void setConditions(AbstractCondition[] conditions) { this.conditions = conditions; } @Override public boolean require(AbstractCondition other) { throw new UnsupportedOperationException(); } @Override public boolean compatible(AbstractCondition other) { throw new UnsupportedOperationException(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Arrays.hashCode(conditions); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Conjunction other = (Conjunction) obj; if (!Arrays.equals(conditions, other.conditions)) return false; return true; } @Override public String toString() { return Arrays.toString(conditions); } @Override public void write(DataOutput out) throws IOException { out.writeByte(FLAG_BYTE); out.writeInt(conditions.length); for(AbstractCondition cond:conditions){ cond.write(out); } } @Override public void readTail(DataInput input) throws IOException { int len = input.readInt(); conditions = new AbstractCondition[len]; for (int i = 0; i < conditions.length; i++) { conditions[i] = AbstractCondition.readAbstractCondition(input); } } @Override public boolean test(Entity e) { for(AbstractCondition cond:conditions){ if(!cond.test(e)){ return false; } } return true; } }