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 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 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; }
/** 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 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; }
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(); return isLike.getLiteral() != null ? factory.literal(isLike.getLiteral()) : null; return isLike.getWildCard(); return isLike.getSingleChar(); return isLike.getEscape(); return isLike.isMatchingCase();
public Object visit(PropertyIsLike filter, Object data) { filter.getExpression().accept(this, data); return found; }
/** {@inheritDoc} */ @Override public Object visit(PropertyIsLike filter, Object userData) { String propertyName = getPropertyName(filter.getExpression()); String finalName = parsePropertyName(propertyName, userData); String value = filter.getLiteral(); value = value.replaceAll("\\*", "%"); value = value.replaceAll("\\?", "_"); if (filter.isMatchingCase()) { return Restrictions.like(finalName, value); } else { return Restrictions.ilike(finalName, value); } }
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; }
public Object visit(PropertyIsLike filter, Object data) { data = filter.getExpression().accept(this, data); return data; }
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 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; }
/** * 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 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; } };
char esc = filter.getEscape().charAt(0); char multi = filter.getWildCard().charAt(0); char single = filter.getSingleChar().charAt(0); boolean matchCase = filter.isMatchingCase(); String literal = filter.getLiteral(); Expression att = filter.getExpression();
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; }
public LikeToRegexConverter(PropertyIsLike like) { String pattern = like.getLiteral(); String wildcardMulti = like.getWildCard(); String wildcardSingle = like.getSingleChar(); String escape = like.getEscape();
@Override public Object visit(PropertyIsLike filter, Object extraData) { PropertyIsLike clone = (PropertyIsLike) super.visit(filter, extraData); return guardAgainstNulls(filter, clone.getExpression()); }
null, "string", lf.getWildCard()); at.addAttribute( FilterSchema.NAMESPACE.toString(), null, "string", lf.getSingleChar()); at.addAttribute( FilterSchema.NAMESPACE.toString(), "escape", null, "string", lf.getEscape()); elems[0].getType().encode(elems[0], lf.getExpression(), output, hints); // PropertyName elems[1].getType().encode(elems[1], lf.getLiteral(), output, hints); // Literal output.endElement(element.getNamespace(), element.getName());