/** * @param expression * @param m * @param kunderaMetadata * @param kunderaQuery * @return */ public static Map<String, Object> onLikeExpression(Expression expression, EntityMetadata m, KunderaMetadata kunderaMetadata, KunderaQuery kunderaQuery) { LikeExpression likeExp = (LikeExpression) expression; Expression sfpExp = likeExp.getStringExpression(); Map<String, Object> map = KunderaQueryUtils.setFieldClazzAndColumnFamily(sfpExp, m, kunderaMetadata); kunderaQuery.addFilterClause( (String) map.get(Constants.COL_NAME), likeExp.getIdentifier(), likeExp.getPatternValue().toActualText(), (String) map.get(Constants.FIELD_NAME), (Boolean) map.get(Constants.IGNORE_CASE)); return map; }
/** * Populate like query. * * @param likeExpression * the like expression * @param metadata * the metadata * @return the filter builder */ private QueryBuilder populateLikeQuery(LikeExpression likeExpression, EntityMetadata metadata) { Expression patternValue = likeExpression.getPatternValue(); String field = likeExpression.getStringExpression().toString(); String likePattern = (patternValue instanceof InputParameter) ? kunderaQuery.getParametersMap() .get((patternValue).toParsedText()).toString() : patternValue.toParsedText().toString(); String jpaField = getField(field); log.debug("Pattern value for field " + field + " is: " + patternValue); QueryBuilder filterBuilder = getQueryBuilder(kunderaQuery.new FilterClause(jpaField, Expression.LIKE, likePattern, field), metadata); return filterBuilder; }
private Filter onLikeExpression(Expression expression, EntityMetadata m, String idColumn, Boolean isIdColumn) { Map<String, Object> map = KunderaQueryUtils.setFieldClazzAndColumnFamily( (StateFieldPathExpression) ((LikeExpression) expression).getStringExpression(), m, kunderaMetadata); Class fieldClazz = (Class) map.get(Constants.FIELD_CLAZZ); String colFamily = (String) map.get(Constants.COL_FAMILY); String columnName = (String) map.get(Constants.DB_COL_NAME); isIdColumn = idColumn.equalsIgnoreCase(columnName); Object value = KunderaQueryUtils.getValue(((LikeExpression) expression).getPatternValue(), fieldClazz, kunderaQuery); if (!isEmbeddable(map)) { byte[] valueInBytes = getValueInBytes(value, fieldClazz, isIdColumn, m); return createNewFilter(((LikeExpression) expression).getIdentifier(), Bytes.toBytes(colFamily), Bytes.toBytes(columnName), valueInBytes, isIdColumn); } else { return createFilterForEmbeddables(((LikeExpression) expression).getIdentifier(), isIdColumn, m, fieldClazz, value, columnName); } }
/** * {@inheritDoc} */ @Override protected void addChildrenTo(Collection<Expression> children) { children.add(getStringExpression()); children.add(getPatternValue()); children.add(getEscapeCharacter()); }
/** * {@inheritDoc} */ @Override protected void addChildrenTo(Collection<Expression> children) { children.add(getStringExpression()); children.add(getPatternValue()); children.add(getEscapeCharacter()); }
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { Expression patternValue = expression.getPatternValue(); Expression stringExpression = expression.getStringExpression(); Expression escapeCharacter = expression.getEscapeCharacter(); if (escapeCharacter.isAncestor(inputParameter)) { this.type = Character.class; } else if (patternValue.isAncestor(inputParameter)) { this.expression = expression.getStringExpression(); } else if (stringExpression.isAncestor(inputParameter)) { this.expression = expression; } // LIKE returns an integer value else { this.type = boolean.class; } }
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { Expression patternValue = expression.getPatternValue(); Expression stringExpression = expression.getStringExpression(); Expression escapeCharacter = expression.getEscapeCharacter(); if (escapeCharacter.isAncestor(inputParameter)) { this.type = Character.class; } else if (patternValue.isAncestor(inputParameter)) { this.expression = expression.getStringExpression(); } else if (stringExpression.isAncestor(inputParameter)) { this.expression = expression; } // LIKE returns an integer value else { this.type = boolean.class; } }
/** * Populate like query. * * @param likeExpression * the like expression * @param metadata * the metadata * @return the filter builder */ private QueryBuilder populateLikeQuery(LikeExpression likeExpression, EntityMetadata metadata) { Expression patternValue = likeExpression.getPatternValue(); String field = likeExpression.getStringExpression().toString(); String likePattern = (patternValue instanceof InputParameter) ? kunderaQuery.getParametersMap() .get((patternValue).toParsedText()).toString() : patternValue.toParsedText().toString(); String jpaField = getField(field); log.debug("Pattern value for field " + field + " is: " + patternValue); QueryBuilder filterBuilder = getQueryBuilder(kunderaQuery.new FilterClause(jpaField, Expression.LIKE, likePattern, field), metadata); return filterBuilder; }
/** * {@inheritDoc} */ public void acceptChildren(ExpressionVisitor visitor) { getStringExpression().accept(visitor); getPatternValue().accept(visitor); getEscapeCharacter().accept(visitor); }
/** * {@inheritDoc} */ public void acceptChildren(ExpressionVisitor visitor) { getStringExpression().accept(visitor); getPatternValue().accept(visitor); getEscapeCharacter().accept(visitor); }
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { expression.getStringExpression().accept(this); StateObject stringStateObject = stateObject; expression.getPatternValue().accept(this); StateObject patternValue = stateObject; LikeExpressionStateObject stateObject = new LikeExpressionStateObject( parent, stringStateObject, expression.hasNot(), patternValue, literal(expression.getEscapeCharacter(), LiteralType.STRING_LITERAL) ); stateObject.setExpression(expression); this.stateObject = stateObject; }
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { super.visit(expression); int position = queryPosition.getPosition(expression) - corrections.peek(); if (expression.hasStringExpression()) { int length = expression.getStringExpression().getLength() + SPACE_LENGTH; // Within "LIKE" or "NOT LIKE" if (isPositionWithin(position, length, expression.getIdentifier())) { proposals.addIdentifier(LIKE); proposals.addIdentifier(NOT_LIKE); } // After "LIKE " or "NOT LIKE " else if (expression.hasSpaceAfterLike()) { length += expression.getIdentifier().length() + SPACE_LENGTH; // After "<pattern value> " if (expression.hasPatternValue() && expression.hasSpaceAfterPatternValue()) { length += expression.getPatternValue().getLength() + SPACE_LENGTH; // Within "ESCAPE" if (isPositionWithin(position, length, ESCAPE)) { proposals.addIdentifier(ESCAPE); } } } } }
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { // Create the first expression expression.getStringExpression().accept(this); Expression firstExpression = queryExpression; // Create the expression for the pattern value expression.getPatternValue().accept(this); Expression patternValue = queryExpression; // Create the LIKE expression with the escape character if (expression.hasEscapeCharacter()) { expression.getEscapeCharacter().accept(this); queryExpression = firstExpression.like(patternValue, queryExpression); } // Create the LIKE expression with no escape character else { queryExpression = firstExpression.like(patternValue); } // Negate the expression if (expression.hasNot()) { queryExpression = queryExpression.not(); } // Set the expression type type[0] = Boolean.class; }
length(expression.getStringExpression()) + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + (expression.hasNot() ? 4 : 0) + length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) +
/** * {@inheritDoc} */ @Override public void visit(LikeExpression expression) { // Create the first expression expression.getStringExpression().accept(this); Expression firstExpression = queryExpression; // Create the expression for the pattern value expression.getPatternValue().accept(this); Expression patternValue = queryExpression; // Create the LIKE expression with the escape character if (expression.hasEscapeCharacter()) { expression.getEscapeCharacter().accept(this); queryExpression = firstExpression.like(patternValue, queryExpression); } // Create the LIKE expression with no escape character else { queryExpression = firstExpression.like(patternValue); } // Negate the expression if (expression.hasNot()) { queryExpression = queryExpression.not(); } // Set the expression type type[0] = Boolean.class; }
length(expression.getStringExpression()) + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + (expression.hasNot() ? 4 : 0) + length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) +
Expression stringExpression = expression.getStringExpression();
Expression stringExpression = expression.getStringExpression();
length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) +
length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + length(expression.getStringExpression()) + 4 /* LIKE */ + (expression.hasSpaceAfterStringExpression() ? 1 : 0) +