private void replaceParametersInWhereClause(Object[] values, final AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { // creates a clone of the original query, but rebuilds a completely new // where clause based on parameter values final List<FilterItem> items = originalQuery.getWhereClause().getItems(); int i = 0; for (FilterItem filterItem : items) { final FilterItem newFilter = copyFilterItem(filterItem, values, parameterIndex); if (filterItem != newFilter) { newQuery.getWhereClause().removeItem(i); newQuery.getWhereClause().addItem(i, newFilter); } i++; } }
private void replaceParametersInWhereClause(Object[] values, final AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { // creates a clone of the original query, but rebuilds a completely new // where clause based on parameter values final List<FilterItem> items = originalQuery.getWhereClause().getItems(); int i = 0; for (FilterItem filterItem : items) { final FilterItem newFilter = copyFilterItem(filterItem, values, parameterIndex); if (filterItem != newFilter) { newQuery.getWhereClause().removeItem(i); newQuery.getWhereClause().addItem(i, newFilter); } i++; } }
private FilterItem copyFilterItem(FilterItem item, Object[] values, AtomicInteger parameterIndex) { if (item.isCompoundFilter()) { final FilterItem[] childItems = item.getChildItems(); final FilterItem[] newChildItems = new FilterItem[childItems.length]; for (int i = 0; i < childItems.length; i++) { final FilterItem childItem = childItems[i]; final FilterItem newChildItem = copyFilterItem(childItem, values, parameterIndex); newChildItems[i] = newChildItem; } final FilterItem newFilter = new FilterItem(item.getLogicalOperator(), newChildItems); return newFilter; } else { if (item.getOperand() instanceof QueryParameter) { final Object newOperand = values[parameterIndex.getAndIncrement()]; final FilterItem newFilter = new FilterItem(item.getSelectItem(), item.getOperator(), newOperand); return newFilter; } else { return item; } } }
private FilterItem copyFilterItem(FilterItem item, Object[] values, AtomicInteger parameterIndex) { if (item.isCompoundFilter()) { final FilterItem[] childItems = item.getChildItems(); final FilterItem[] newChildItems = new FilterItem[childItems.length]; for (int i = 0; i < childItems.length; i++) { final FilterItem childItem = childItems[i]; final FilterItem newChildItem = copyFilterItem(childItem, values, parameterIndex); newChildItems[i] = newChildItem; } final FilterItem newFilter = new FilterItem(item.getLogicalOperator(), newChildItems); return newFilter; } else { if (item.getOperand() instanceof QueryParameter) { final Object newOperand = values[parameterIndex.getAndIncrement()]; final FilterItem newFilter = new FilterItem(item.getSelectItem(), item.getOperator(), newOperand); return newFilter; } else { return item; } } }