@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { return new RegexMatchExpression(toRelative(q.getField(), context), q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); }
private String regexFlags(RegexMatchExpression query) { StringBuilder bld=new StringBuilder(); if(query.isCaseInsensitive()) bld.append('i'); if(query.isMultiline()) bld.append('m'); return bld.toString(); }
@Override protected LookupSpec processRegexMatchExpression(RegexMatchExpression q) { return new PrefixLookupSpec(simpleKeySpec(findFieldInfo(q.getField(),q)),getPrefix(q.getRegex()),q.isCaseInsensitive()); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { fieldInfo.add(resolveField(q.getField(), context, q, true)); return q; }
/** * <pre> * var r0=new RegExp("pattern","options"); * var r1=false; * r1=r0.test(field); * return r1; * </pre> */ private Block translateRegexMatchExpression(Context ctx,RegexMatchExpression query) { FieldTreeNode fieldMd=ctx.contextNode.resolve(query.getField()); if(fieldMd.getType() instanceof StringType) { Name fieldName=ctx.varName(new Name(query.getField())); String regexVar=ctx.topLevel.newGlobal(ctx,String.format("new RegExp(\"%s\",\"%s\")", query.getRegex().replaceAll("\"","\\\""), regexFlags(query))); Block block=new Block(ctx.topLevel.newGlobalBoolean(ctx)); block.add(IfStatement.ifDefined(fieldName,new SimpleStatement("%s=%s.test(this.%s)", block.resultVar, regexVar, fieldName.toString()))); return block; } else throw Error.get(ERR_INVALID_COMPARISON,query.toString()); }
@Override protected T itrRegexMatchExpression(RegexMatchExpression q, Path context) { String pattern=q.getRegex(); if(pattern.length()>0 && pattern.charAt(0)=='^') { return processRegexMatchExpression(q); } else { return null; } }
public static RegexMatchExpression fromJson(ObjectNode node) { JsonNode x = node.get("field"); if (x != null) { Path field = new Path(x.asText()); x = node.get("regex"); if (x != null) { String regex = x.asText(); return new RegexMatchExpression(field, regex, asBoolean(node.get("caseInsensitive")), asBoolean(node.get("multiline")), asBoolean(node.get("extended")), asBoolean(node.get("dotall"))); } } throw Error.get(QueryConstants.ERR_INVALID_REGEX_EXPRESSION, node.toString()); }
@Override protected LookupSpec processRegexMatchExpression(RegexMatchExpression q) { return new PrefixLookupSpec(simpleKeySpec(findFieldInfo(q.getField(),q)),getPrefix(q.getRegex()),q.isCaseInsensitive()); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { fieldInfo.add(resolveField(q.getField(), context, q, true)); return q; }
@Override protected T itrRegexMatchExpression(RegexMatchExpression q, Path context) { String pattern=q.getRegex(); if(pattern.length()>0 && pattern.charAt(0)=='^') { return processRegexMatchExpression(q); } else { return null; } }
public static RegexMatchExpression fromJson(ObjectNode node) { JsonNode x = node.get("field"); if (x != null) { Path field = new Path(x.asText()); x = node.get("regex"); if (x != null) { String regex = x.asText(); return new RegexMatchExpression(field, regex, asBoolean(node.get("caseInsensitive")), asBoolean(node.get("multiline")), asBoolean(node.get("extended")), asBoolean(node.get("dotall"))); } } throw Error.get(QueryConstants.ERR_INVALID_REGEX_EXPRESSION, node.toString()); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { return new RegexMatchExpression(toRelative(q.getField(), context), q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); }
private static boolean isFieldQueried(Path field, RegexMatchExpression q, Path context) { LOGGER.debug("Checking if field {} is queried by regex {}", field, q); return isFieldQueried(field, q.getField(), context); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = rewrite(context, q.getField()); if (!p.equals(q.getField())) { return new RegexMatchExpression(p, q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }
private static boolean isFieldQueried(Path field, RegexMatchExpression q, Path context) { LOGGER.debug("Checking if field {} is queried by regex {}", field, q); return isFieldQueried(field, q.getField(), context); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = rewrite(context, q.getField()); if (!p.equals(q.getField())) { return new RegexMatchExpression(p, q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }
@Override protected KeySpec processRegexMatchExpression(RegexMatchExpression q) { return simpleKeySpec(findFieldInfo(q.getField(),q)); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = rewrite(context, q.getField()); if (!p.equals(q.getField())) { return new RegexMatchExpression(p, q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }
@Override protected KeySpec processRegexMatchExpression(RegexMatchExpression q) { return simpleKeySpec(findFieldInfo(q.getField(),q)); }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new RegexMatchExpression(removeContext(context, p, q.getField()), q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }