@Override protected QueryNode preProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof TwigQueryNode) { node.add(new FieldQueryNode("field", "text", 0, 4)); } return node; } @Override
@Override protected QueryNode preProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof TwigQueryNode) { node.add(new FieldQueryNode("field", "text", 0, 4)); } return node; } @Override
public LinkedList<QueryNode> getFieldQueryNodes(String field, String datatype, boolean positionIncrementsEnabled) throws QueryNodeException { final LinkedList<QueryNode> children = new LinkedList<QueryNode>(); int position = -1; // build children for (int i = 0; i < this.getNumTokens(); i++) { String term = this.getNextTerm(); final int positionIncrement = 1; final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1); // assign datatype newFieldNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype); // set position increment if (positionIncrementsEnabled) { position += positionIncrement; newFieldNode.setPositionIncrement(position); } else { newFieldNode.setPositionIncrement(i); } children.add(newFieldNode); } return children; }
case TERM: term = jj_consume_token(TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case REGEXPTERM: qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false);
case TERM: term = jj_consume_token(TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case REGEXPTERM: qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false);
children.add(new FieldQueryNode(field, term, -1, -1)); ((BooleanQueryNode)currentQuery).add(t); ((BooleanQueryNode)currentQuery).add(new FieldQueryNode(field, term, -1, -1)); } else { if (currentQuery != null) { currentQuery = new FieldQueryNode(field, term, -1, -1); multiTerms.add(new FieldQueryNode(field, term, -1, -1)); FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1);
children.add(new FieldQueryNode(field, term, -1, -1)); ((BooleanQueryNode)currentQuery).add(t); ((BooleanQueryNode)currentQuery).add(new FieldQueryNode(field, term, -1, -1)); } else { if (currentQuery != null) { currentQuery = new FieldQueryNode(field, term, -1, -1); multiTerms.add(new FieldQueryNode(field, term, -1, -1)); FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1);
upperInclusive = false; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); upperInclusive = true; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; upperInclusive = true; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break;
upperInclusive = false; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); upperInclusive = true; qLower = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; upperInclusive = true; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break; qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); qUpper = new FieldQueryNode(field, "*", term.beginColumn, term.endColumn); break;
final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1); newFieldNode.setPositionIncrement(i); pq.add(newFieldNode);
case TERM: term = jj_consume_token(TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case REGEXPTERM: qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false);
final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1); children.add(new FieldQueryNode(field, term, -1, -1));
case TERM: term = jj_consume_token(TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case REGEXPTERM: qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false);
final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1);
case TERM: term = jj_consume_token(TERM); q = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(term.image), term.beginColumn, term.endColumn); break; case REGEXPTERM: qLower = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop1.image), goop1.beginColumn, goop1.endColumn); qUpper = new FieldQueryNode(field, EscapeQuerySyntaxImpl.discardEscapeChar(goop2.image), goop2.beginColumn, goop2.endColumn); q = new TermRangeQueryNode(qLower, qUpper, startInc ? true : false, endInc ? true : false); break;
@Test(expected=IllegalArgumentException.class) public void testTwigQueryNodeWithMoreThan2Children() throws Exception { final KeywordQueryParser parser = new KeywordQueryParser(); final QueryNodeProcessorPipeline pipeline = new QueryNodeProcessorPipeline(); pipeline.add(new QueryNodeProcessorImpl() { @Override protected List<QueryNode> setChildrenOrder(final List<QueryNode> children) throws QueryNodeException { return children; } @Override protected QueryNode preProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof TwigQueryNode) { node.add(new FieldQueryNode("field", "text", 0, 4)); } return node; } @Override protected QueryNode postProcessNode(final QueryNode node) throws QueryNodeException { return node; } }); parser.setQueryNodeProcessor(pipeline); parser.parse("a : b", SirenTestCase.DEFAULT_TEST_FIELD); }
@Test(expected=IllegalArgumentException.class) public void testTwigQueryNodeWithMoreThan2Children() throws Exception { final StandardExtendedKeywordQueryParser parser = new StandardExtendedKeywordQueryParser(); final QueryNodeProcessorPipeline pipeline = new QueryNodeProcessorPipeline(); pipeline.add(new QueryNodeProcessorImpl() { @Override protected List<QueryNode> setChildrenOrder(final List<QueryNode> children) throws QueryNodeException { return children; } @Override protected QueryNode preProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof TwigQueryNode) { node.add(new FieldQueryNode("field", "text", 0, 4)); } return node; } @Override protected QueryNode postProcessNode(final QueryNode node) throws QueryNodeException { return node; } }); parser.setQueryNodeProcessor(pipeline); parser.parse("a : b", SirenTestCase.DEFAULT_TEST_FIELD); }
@Test public void testTwigQueryNodeParent() throws Exception { final TwigQueryNode twig = new TwigQueryNode(new WildcardNodeQueryNode(), new WildcardNodeQueryNode()); final FieldQueryNode term = new FieldQueryNode("field", "term", 0, 4); assertTrue(term.getParent() == null); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); twig.setRoot(term); twig.setChild(term); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); }
@Test public void testTwigQueryNodeParent() throws Exception { final TwigQueryNode twig = new TwigQueryNode(new WildcardNodeQueryNode(), new WildcardNodeQueryNode()); final FieldQueryNode term = new FieldQueryNode("field", "term", 0, 4); assertTrue(term.getParent() == null); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); twig.setRoot(term); twig.setChild(term); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); }