/** * Adds the filter clause. * * @param property * the property * @param condition * the condition * @param value * the value * @param fieldName * the field name * @param ignoreCase * to ignore case in the filter */ public void addFilterClause(final String property, final String condition, final Object value, final String fieldName, final boolean ignoreCase) { if (property != null && condition != null) { FilterClause filterClause = new FilterClause(property.trim(), condition.trim(), value, fieldName); filterClause.setIgnoreCase(ignoreCase); filtersQueue.add(filterClause); } else { filtersQueue.add(property); } }
/** * Adds the discriminator clause. * * @param clauses * the clauses * @param entityType * the entity type */ private void addDiscriminatorClause(List<String> clauses, EntityType entityType) { if (((AbstractManagedType) entityType).isInherited()) { String discrColumn = ((AbstractManagedType) entityType).getDiscriminatorColumn(); String discrValue = ((AbstractManagedType) entityType).getDiscriminatorValue(); if (discrColumn != null && discrValue != null) { if (clauses != null && !clauses.isEmpty()) { filtersQueue.add("AND"); } FilterClause filterClause = new FilterClause(discrColumn, "=", discrValue, discrColumn); filtersQueue.add(filterClause); } } }
/** * 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; }
/** * 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; }
/** * Populate between filter. * * @param betweenExpression * the between expression * @param m * the m * @param entity * the entity * @return the filter builder */ private QueryBuilder populateBetweenFilter(BetweenExpression betweenExpression, EntityMetadata m) { String lowerBoundExpression = getBetweenBoundaryValues(betweenExpression.getLowerBoundExpression()); String upperBoundExpression = getBetweenBoundaryValues(betweenExpression.getUpperBoundExpression()); String field = getField(betweenExpression.getExpression().toParsedText()); log.debug("Between clause for field " + field + "with lower bound " + lowerBoundExpression + "and upper bound " + upperBoundExpression); return new AndQueryBuilder(getFilter(kunderaQuery.new FilterClause(field, Expression.GREATER_THAN_OR_EQUAL, lowerBoundExpression, field), m), getFilter(kunderaQuery.new FilterClause(field, Expression.LOWER_THAN_OR_EQUAL, upperBoundExpression,field), m)); }
/** * Populate filter clause. * * @param conditionalExpression * the conditional expression * @return the filter clause */ private FilterClause populateFilterClause(ComparisonExpression conditionalExpression) { String property = ((StateFieldPathExpression) conditionalExpression.getLeftExpression()).getPath(1); String condition = conditionalExpression.getComparisonOperator(); Expression rightExpression = conditionalExpression.getRightExpression(); Object value = (rightExpression instanceof InputParameter) ? kunderaQuery.getParametersMap().get( (rightExpression).toParsedText()) : rightExpression.toParsedText(); return (condition != null && property != null) ? kunderaQuery.new FilterClause(property, condition, value, property) : null; }
/** * Populate IN query filter. * * @param inExpression * the in expression * @param metadata * the metadata * @return the filter builder */ private QueryBuilder populateInQuery(InExpression inExpression, EntityMetadata metadata) { String property = getField(inExpression.getExpression().toParsedText()); Expression inItemsParameter = inExpression.getInItems(); log.debug("IN query parameters for field " + property + " is: " + inItemsParameter); Iterable inItemsIterable = getInValuesCollection(inItemsParameter); return getFilter(kunderaQuery.new FilterClause(property, Expression.IN, inItemsIterable, property), metadata); }
FilterClause filterClause = kunderaQuery.new FilterClause(columnName, equals, primaryKey, idField); kunderaQuery.setFilter(kunderaQuery.getEntityAlias() + "." + columnName + " = " + primaryKey); queue.clear();
/** * Populate between filter. * * @param betweenExpression * the between expression * @param m * the m * @param entity * the entity * @return the filter builder */ private QueryBuilder populateBetweenFilter(BetweenExpression betweenExpression, EntityMetadata m) { String lowerBoundExpression = getBetweenBoundaryValues(betweenExpression.getLowerBoundExpression()); String upperBoundExpression = getBetweenBoundaryValues(betweenExpression.getUpperBoundExpression()); String field = getField(betweenExpression.getExpression().toParsedText()); log.debug("Between clause for field " + field + "with lower bound " + lowerBoundExpression + "and upper bound " + upperBoundExpression); return new AndQueryBuilder(getFilter(kunderaQuery.new FilterClause(field, Expression.GREATER_THAN_OR_EQUAL, lowerBoundExpression, field), m), getFilter(kunderaQuery.new FilterClause(field, Expression.LOWER_THAN_OR_EQUAL, upperBoundExpression,field), m)); }
/** * Populate filter clause. * * @param conditionalExpression * the conditional expression * @return the filter clause */ private FilterClause populateFilterClause(ComparisonExpression conditionalExpression) { String property = ((StateFieldPathExpression) conditionalExpression.getLeftExpression()).getPath(1); String condition = conditionalExpression.getComparisonOperator(); Expression rightExpression = conditionalExpression.getRightExpression(); Object value = (rightExpression instanceof InputParameter) ? kunderaQuery.getParametersMap().get( (rightExpression).toParsedText()) : rightExpression.toParsedText(); return (condition != null && property != null) ? kunderaQuery.new FilterClause(property, condition, value, property) : null; }
/** * Populate IN query filter. * * @param inExpression * the in expression * @param metadata * the metadata * @return the filter builder */ private QueryBuilder populateInQuery(InExpression inExpression, EntityMetadata metadata) { String property = getField(inExpression.getExpression().toParsedText()); Expression inItemsParameter = inExpression.getInItems(); log.debug("IN query parameters for field " + property + " is: " + inItemsParameter); Iterable inItemsIterable = getInValuesCollection(inItemsParameter); return getFilter(kunderaQuery.new FilterClause(property, Expression.IN, inItemsIterable, property), metadata); }