/** * Add to the statement a filter on a attribute. * * @param filter The filter on the attribute to apply in the statement. * @param index The last index used to associate the elements to the statement. * @param stat The statement where the filters are applied. * @return The last used index. * @throws SQLException In case of error. */ protected int addObjectSearchStatementBlock( EntitySearchFilter filter, int index, PreparedStatement stat) throws SQLException { if (filter.isAttributeFilter() && null != filter.getLangCode()) { stat.setString(++index, filter.getLangCode()); } return super.addObjectSearchStatementBlock(filter, index, stat); }
protected boolean addAttributeLangQueryBlock( String searchTableName, StringBuffer query, EntitySearchFilter filter, boolean hasAppendWhereClause) { if (filter.isAttributeFilter() && null != filter.getLangCode()) { hasAppendWhereClause = this.verifyWhereClauseAppend(query, hasAppendWhereClause); query.append(searchTableName).append(".langcode = ? "); } return hasAppendWhereClause; }
private boolean appendValuedAttributeFilterQueryBlocks( EntitySearchFilter filter, int index, StringBuffer query, boolean hasAppendWhereClause) { String searchTableNameAlias = this.getEntitySearchTableName() + index; hasAppendWhereClause = this.verifyWhereClauseAppend(query, hasAppendWhereClause); query.append(searchTableNameAlias).append(".attrname = ? "); hasAppendWhereClause = this.addAttributeLangQueryBlock(searchTableNameAlias, query, filter, hasAppendWhereClause); if (filter.isLikeOption() && this.isForceTextCaseSearch()) { return hasAppendWhereClause; } if (filter.getAllowedValues() != null && filter.getAllowedValues().size() > 0) { hasAppendWhereClause = this.verifyWhereClauseAppend(query, hasAppendWhereClause); List<Object> allowedValues = filter.getAllowedValues(); for (int j = 0; j < allowedValues.size(); j++) { Object allowedValue = allowedValues.get(j); if (j == 0) { query.append(" ( "); } else { query.append(" OR "); } String operator = filter.isLikeOption() ? this.getLikeClause() : "= ? "; query .append(searchTableNameAlias) .append(".") .append(this.getAttributeFieldColunm(allowedValue)) .append(" "); query.append(operator); if (j == (allowedValues.size() - 1)) { query.append(" ) "); } } } else if (filter.getValue() != null) { Object object = filter.getValue(); String operator = filter.isLikeOption() ? this.getLikeClause() : "= ? "; hasAppendWhereClause = this.addAttributeObjectSearchQueryBlock( searchTableNameAlias, query, object, operator, hasAppendWhereClause, filter.getLangCode()); } else { // creazione blocco selezione su tabella ricerca if (null != filter.getStart()) { hasAppendWhereClause = this.addAttributeObjectSearchQueryBlock( searchTableNameAlias, query, filter.getStart(), ">= ? ", hasAppendWhereClause, filter.getLangCode()); } if (null != filter.getEnd()) { hasAppendWhereClause = this.addAttributeObjectSearchQueryBlock( searchTableNameAlias, query, filter.getEnd(), "<= ? ", hasAppendWhereClause, filter.getLangCode()); } if (null == filter.getStart() && null == filter.getEnd()) { hasAppendWhereClause = this.verifyWhereClauseAppend(query, hasAppendWhereClause); query .append(" (") .append(searchTableNameAlias) .append(".datevalue IS NOT NULL OR ") .append(searchTableNameAlias) .append(".textvalue IS NOT NULL OR ") .append(searchTableNameAlias) .append(".numvalue IS NOT NULL) "); } } return hasAppendWhereClause; }