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; }
return isLike.getLiteral() != null ? factory.literal(isLike.getLiteral()) : null;
public LikeToRegexConverter(PropertyIsLike like) { String pattern = like.getLiteral(); String wildcardMulti = like.getWildCard(); String wildcardSingle = like.getSingleChar();
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; }
boolean matchCase = filter.isMatchingCase(); String literal = filter.getLiteral(); Expression att = filter.getExpression();
/** * 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; }
elems[1].getType().encode(elems[1], lf.getLiteral(), output, hints); // Literal output.endElement(element.getNamespace(), element.getName());
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()); }
@Override public Object visit(PropertyIsLike filter, Object extraData) { checkExpressionIsProperty(filter.getExpression()); StringWriter output = asStringWriter(extraData); String pattern = escapeSpecialCharacters(filter.getLiteral(), filter.getEscape()); pattern = pattern.replace(filter.getWildCard(), ".*"); pattern = pattern.replace(filter.getSingleChar(), ".{1,1}"); Expression expr = filter.getExpression(); ExpressionToSolr visitor = new ExpressionToSolr(); expr.accept(visitor, output); output.append(":/"); output.append(pattern); output.append("/ "); return output; }
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; }
/** {@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); } }
@Override public Object visit(PropertyIsLike filter, Object extraData) { Expression expr = (Expression) filter.getExpression().accept(this, extraData); String pattern = filter.getLiteral(); String wildcard = filter.getWildCard(); String singleChar = filter.getSingleChar(); String escape = filter.getEscape(); return getFactory(extraData).like(expr, pattern, wildcard, singleChar, escape, false); } }
@Override public Object visit(PropertyIsLike filter, Object extraData) { Expression expr = (Expression) filter.getExpression().accept(this, extraData); String pattern = filter.getLiteral(); String wildcard = filter.getWildCard(); String singleChar = filter.getSingleChar(); String escape = filter.getEscape(); return getFactory(extraData).like(expr, pattern, wildcard, singleChar, escape, false); } }
public Object visit(PropertyIsLike filter, Object extraData) { Expression expr=(Expression) filter.getExpression().accept(this, extraData); String pattern=filter.getLiteral(); String wildcard=filter.getWildCard(); String singleChar=filter.getSingleChar(); String escape=filter.getEscape(); return getFactory(extraData).like(expr, pattern, wildcard, singleChar, escape); }
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); }