/** Visits filter.getExpression() if an expression visitor was set. */ public Object visit(PropertyIsLike filter, Object data) { if (expressionVisitor != null) { if (filter.getExpression() != null) { filter.getExpression().accept(expressionVisitor, null); } } return filter; }
public Object visit(PropertyIsLike filter, Object data) { data = filter.getExpression().accept(this, data); return data; }
public Object visit(PropertyIsLike filter, Object data) { filter.getExpression().accept(this, data); return found; }
public Object visit(PropertyIsLike filter, Object data) { data = filter.getExpression().accept(this, data); return data; }
public Object visit(PropertyIsLike filter, Object notUsed) { if (original == null) original = filter; if (!fcs.supports(PropertyIsLike.class)) { postStack.push(filter); return null; } int i = postStack.size(); filter.getExpression().accept(this, null); if (i < postStack.size()) { postStack.pop(); postStack.push(filter); return null; } preStack.pop(); // value preStack.push(filter); return null; }
public Object visit(PropertyIsLike filter, Object notUsed) { if (original == null) original = filter; if (!fcs.supports(PropertyIsLike.class)) { // MongoDB can only encode like expressions using propertyName postStack.push(filter); return null; } if (!(filter.getExpression() instanceof PropertyName)) { // MongoDB can only encode like expressions using propertyName postStack.push(filter); return null; } int i = postStack.size(); filter.getExpression().accept(this, null); if (i < postStack.size()) { postStack.pop(); postStack.push(filter); return null; } preStack.pop(); // value preStack.push(filter); return null; } };
public Object visit(PropertyIsLike filter, Object notUsed) { if (original == null) original = filter; // if (!fcs.supports(PropertyIsLike.class)) { if (!fcs.supports(filter)) { postStack.push(filter); return null; } int i = postStack.size(); filter.getExpression().accept(this, null); if (i < postStack.size()) { postStack.pop(); postStack.push(filter); return null; } preStack.pop(); // value preStack.push(filter); return null; }
@Override public Object visit(PropertyIsLike filter, Object extraData) { PropertyIsLike clone = (PropertyIsLike) super.visit(filter, extraData); return guardAgainstNulls(filter, clone.getExpression()); }
public Object visit(PropertyIsLike filter, Object extraData) { checkLeftExpressionIsProperty(filter.getExpression()); return FilterToTextUtil.buildIsLike(filter, extraData); }
public Object getProperty(Object object, QName name) throws Exception { PropertyIsLike isLike = (PropertyIsLike) object; if (OGC.expression.equals(name) && !(isLike.getExpression() instanceof Literal)) { return isLike.getExpression(); return isLike.getExpression();
public static Object buildIsLike(PropertyIsLike filter, Object extraData) { StringBuilder output = asStringBuilder(extraData); final String pattern = filter.getLiteral(); Expression expr = filter.getExpression(); expr.accept(new ExpressionToText(), output); if (filter.isMatchingCase()) { output.append(" LIKE "); } else { output.append(" ILIKE "); } output.append("'"); output.append(pattern); output.append("'"); return output; }
@Override public Object visit(PropertyIsLike filter, Object extraData) { PropertyIsLike clone = (PropertyIsLike) super.visit(filter, extraData); if (isConstant(clone.getExpression())) { return staticFilterEvaluate(clone); } else { return clone; } }
public Object getProperty(Object object, QName name) throws Exception { PropertyIsLike isLike = (PropertyIsLike) object; if (FES.expression.equals(name)) { return new Object[] { isLike.getExpression(), isLike.getLiteral() != null ? factory.literal(isLike.getLiteral()) : null }; } return super.getProperty(object, name); } }
public Object visit(PropertyIsLike filter, Object extraData) { String wcm = filter.getWildCard(); String wcs = filter.getSingleChar(); String esc = filter.getEscape(); Expression expression = filter.getExpression(); AttributesImpl atts = new AttributesImpl(); atts.addAttribute("", "wildCard", "wildCard", "", wcm); atts.addAttribute("", "singleChar", "singleChar", "", wcs); atts.addAttribute("", "escape", "escape", "", esc); start("PropertyIsLike", atts); expression.accept(this, extraData); element("Literal", filter.getLiteral()); end("PropertyIsLike"); return extraData; }
public Object visit(PropertyIsLike filter, Object arg1) { Expression value = filter.getExpression(); List unrolledValues = (List) value.accept(this, null); String literal = filter.getLiteral(); String wildcard = filter.getWildCard(); String single = filter.getSingleChar(); String escape = filter.getEscape(); boolean matchCase = filter.isMatchingCase(); MatchAction matchAction = filter.getMatchAction(); List combined = new ArrayList(unrolledValues.size()); for (Iterator it = unrolledValues.iterator(); it.hasNext(); ) { Expression sourceValue = (Expression) it.next(); Filter newFilter = ff.like(sourceValue, literal, wildcard, single, escape, matchCase, matchAction); combined.add(newFilter); } Filter unrolled = combineOred(combined); return unrolled; }
/** * Encode LIKE using MongoDB Regex. * * <ul> * <li>filter.getWildCard() returns SQL-like '%' * <li>filter.getSingleChar() returns SQL-like '_' * </ul> * * As an example "foo_bar%" converts to foo.bar.* */ @Override public Object visit(PropertyIsLike filter, Object extraData) { BasicDBObject output = asDBObject(extraData); Expression filterExpression = filter.getExpression(); // Mongo's $regex operator only works on fields if (!(filterExpression instanceof PropertyName)) { throw new UnsupportedOperationException("LIKE only works with propertyName"); } String expr = convert(filterExpression.accept(this, null), String.class); String multi = filter.getWildCard(); String single = filter.getSingleChar(); int flags = (filter.isMatchingCase()) ? 0 : Pattern.CASE_INSENSITIVE; String regex = filter.getLiteral().replace(multi, ".*").replace(single, "."); // force full string match regex = "^" + regex + "$"; Pattern p = Pattern.compile(regex, flags); output.put((String) expr, p); return output; }
public Object visit(PropertyIsLike filter, Object extraData) { Expression expr = visit(filter.getExpression(), extraData); String pattern = filter.getLiteral(); String wildcard = filter.getWildCard(); String singleChar = filter.getSingleChar(); String escape = filter.getEscape(); boolean matchCase = filter.isMatchingCase(); return getFactory(extraData) .like( expr, pattern, wildcard, singleChar, escape, matchCase, filter.getMatchAction()); }
public void testParse() throws Exception { FilterMockData.propertyIsLike(document, document); PropertyIsLike isLike = (PropertyIsLike) parse(); assertNotNull(isLike.getExpression()); assertNotNull(isLike.getLiteral()); assertEquals("x", isLike.getWildCard()); assertEquals("y", isLike.getSingleChar()); assertEquals("z", isLike.getEscape()); }
public void testParse() throws Exception { FilterMockData.propertyIsLike(document, document); PropertyIsLike isLike = (PropertyIsLike) parse(); assertNotNull(isLike.getExpression()); assertNotNull(isLike.getLiteral()); assertEquals("x", isLike.getWildCard()); assertEquals("y", isLike.getSingleChar()); assertEquals("z", isLike.getEscape()); assertEquals(false, isLike.isMatchingCase()); }
@Test public void testLikeFilter() throws Exception { final String wildcard = "%"; final String single = "?"; final String escape = "\\"; PropertyIsLike like = ff.like( ff.property("/measurement/determinand_description"), "%n_1_1", wildcard, single, escape, true, MatchAction.ONE); PropertyIsLike unmapped = (PropertyIsLike) like.accept(visitor, null); assertEquals(like.getLiteral(), unmapped.getLiteral()); assertEquals(like.getWildCard(), unmapped.getWildCard()); assertEquals(like.getSingleChar(), unmapped.getSingleChar()); assertEquals(like.getEscape(), unmapped.getEscape()); assertEquals(like.isMatchingCase(), unmapped.isMatchingCase()); assertEquals(like.getMatchAction(), unmapped.getMatchAction()); Expression unmappedExpr = unmapped.getExpression(); assertTrue(unmappedExpr instanceof PropertyName); assertEquals("determinand_description", ((PropertyName) unmappedExpr).getPropertyName()); }