package com.mysema.rdfbean.model; import java.util.List; import com.mysema.query.types.Ops; import com.mysema.query.types.Predicate; import com.mysema.query.types.ToStringVisitor; import com.mysema.query.types.Visitor; import com.mysema.query.types.expr.BooleanExpression; import com.mysema.query.types.expr.BooleanOperation; /** * @author tiwe * */ public class UnionBlock implements Block { private static final long serialVersionUID = -5081510328796327230L; private final List<Block> blocks; public UnionBlock(List<Block> blocks) { this.blocks = blocks; } @Override public Predicate not() { throw new UnsupportedOperationException(); } @Override @SuppressWarnings("unchecked") public <R, C> R accept(Visitor<R, C> v, C context) { if (v instanceof RDFVisitor) { return (R) ((RDFVisitor) v).visit(this, context); } else if (v instanceof ToStringVisitor) { return (R) toString(); } else if (v.getClass().getName().equals("com.mysema.query.types.ExtractorVisitor")) { return (R) this; } else { throw new IllegalArgumentException(v.toString()); } } @Override public Class<? extends Boolean> getType() { return Boolean.class; } public static long getSerialversionuid() { return serialVersionUID; } public List<Block> getBlocks() { return blocks; } @Override public BooleanExpression exists() { return BooleanOperation.create(Ops.EXISTS, this); } @Override public int hashCode() { return blocks.hashCode(); } @Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof UnionBlock) { UnionBlock gb = (UnionBlock) o; return blocks.equals(gb.blocks); } else { return false; } } @Override public String toString() { StringBuilder builder = new StringBuilder(); for (Block block : blocks) { if (builder.length() > 0) { builder.append(" UNION "); } builder.append(block.toString()); } return builder.toString(); } }