package com.plugtree.solradvert.fact;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
public class BooleanParentChildRelationship extends ParentChildRelationship {
private BooleanQuery parent;
private BooleanClause childClause;
public BooleanParentChildRelationship(BooleanQuery parent, BooleanClause childClause) {
super(parent, childClause.getQuery());
this.parent = parent;
this.childClause = childClause;
}
@Override
public void remove() {
parent.clauses().remove(childClause);
}
public static class BooleanParentChildRelationshipFactory extends ParentChildRelationshipFactory {
@Override
public Collection<ParentChildRelationship> getRelationships(Query parent) {
if(parent instanceof BooleanQuery) {
BooleanQuery booleanQuery = (BooleanQuery)parent;
Collection<ParentChildRelationship> relationships = new ArrayList<ParentChildRelationship>();
for(BooleanClause clause: booleanQuery.clauses()) {
relationships.add(new BooleanParentChildRelationship(booleanQuery, clause));
}
return relationships;
}
return null;
}
}
}