package net.ion.craken.node.crud; import net.ion.craken.node.ReadSession; import net.ion.craken.node.crud.tree.Fqn; import net.ion.nsearcher.search.Searcher; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.QueryWrapperFilter; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.WildcardQuery; public class RefQueryRequest extends ChildQueryRequest { protected RefQueryRequest(ReadSession session, Query query, Searcher searcher) { super(session, query, searcher); } public static RefQueryRequest createMe(ReadSession session, Searcher searcher, Fqn fqn, String refName) { TermQuery query = new TermQuery(new Term('@' + refName, fqn.toString())) ; return new RefQueryRequest(session, query, searcher); } public static RefQueryRequest createChildren(ReadSession session, Searcher searcher, Fqn fqn, String refName) { WildcardQuery query = new WildcardQuery(new Term('@' + refName, fqn.toString() + "/*")) ; return new RefQueryRequest(session, query, searcher); } public RefQueryRequest fqnFilter(String path){ this.filter(new QueryWrapperFilter(Fqn.fromString(path).childrenQuery())) ; return this ; } }