@Override public CompiledQuery compileQuery(final Query query) throws MetaModelException { return new DefaultCompiledQuery(query); }
private List<QueryParameter> createParameterList() { final List<QueryParameter> parameters = new ArrayList<QueryParameter>(); buildParameterListInFromClause(parameters, _query); buildParameterListInWhereClause(parameters, _query); return parameters; }
public DefaultCompiledQuery(Query query) { _query = query; _parameters = createParameterList(); }
private void replaceParametersInQuery(Object[] values, AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { replaceParametersInFromClause(values, parameterIndex, originalQuery, newQuery); replaceParametersInWhereClause(values, parameterIndex, originalQuery, newQuery); }
private void buildParameterListInWhereClause(List<QueryParameter> parameters, Query query) { List<FilterItem> items = query.getWhereClause().getItems(); for (FilterItem item : items) { buildParameterFromFilterItem(parameters, item); } }
/** * Clones the query while replacing query parameters with corresponding * values. * * @param values * @return */ public Query cloneWithParameterValues(Object[] values) { final AtomicInteger parameterIndex = new AtomicInteger(0); final Query clonedQuery = _query.clone(); replaceParametersInQuery(values, parameterIndex, _query, clonedQuery); return clonedQuery; }
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++; } }
@Override public DataSet executeQuery(CompiledQuery compiledQuery, Object... values) { assert compiledQuery instanceof DefaultCompiledQuery; final DefaultCompiledQuery defaultCompiledQuery = (DefaultCompiledQuery) compiledQuery; final Query query = defaultCompiledQuery.cloneWithParameterValues(values); return executeQuery(query); }
private void replaceParametersInQuery(Object[] values, AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { replaceParametersInFromClause(values, parameterIndex, originalQuery, newQuery); replaceParametersInWhereClause(values, parameterIndex, originalQuery, newQuery); }
private void buildParameterListInWhereClause(List<QueryParameter> parameters, Query query) { List<FilterItem> items = query.getWhereClause().getItems(); for (FilterItem item : items) { buildParameterFromFilterItem(parameters, item); } }
/** * Clones the query while replacing query parameters with corresponding * values. * * @param values * @return */ public Query cloneWithParameterValues(Object[] values) { final AtomicInteger parameterIndex = new AtomicInteger(0); final Query clonedQuery = _query.clone(); replaceParametersInQuery(values, parameterIndex, _query, clonedQuery); return clonedQuery; }
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++; } }
@Override public DataSet executeQuery(CompiledQuery compiledQuery, Object... values) { assert compiledQuery instanceof DefaultCompiledQuery; final DefaultCompiledQuery defaultCompiledQuery = (DefaultCompiledQuery) compiledQuery; final Query query = defaultCompiledQuery.cloneWithParameterValues(values); return executeQuery(query); }
private List<QueryParameter> createParameterList() { final List<QueryParameter> parameters = new ArrayList<QueryParameter>(); buildParameterListInFromClause(parameters, _query); buildParameterListInWhereClause(parameters, _query); return parameters; }
private void buildParameterFromFilterItem(List<QueryParameter> parameters, FilterItem item) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); for (FilterItem childItem : childItems) { buildParameterFromFilterItem(parameters, childItem); } } else { if (item.getOperand() instanceof QueryParameter) { parameters.add((QueryParameter) item.getOperand()); } } }
private void replaceParametersInFromClause(Object[] values, AtomicInteger parameterIndex, Query originalQuery, Query newQuery) { final List<FromItem> fromItems = originalQuery.getFromClause().getItems(); int i = 0; for (FromItem fromItem : fromItems) { final Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { final Query newSubQuery = newQuery.getFromClause().getItem(i).getSubQuery(); replaceParametersInQuery(values, parameterIndex, subQuery, newSubQuery); newQuery.getFromClause().removeItem(i); newQuery.getFromClause().addItem(i, new FromItem(newSubQuery).setAlias(fromItem.getAlias())); } 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; } } }
@Override public CompiledQuery compileQuery(final Query query) throws MetaModelException { return new DefaultCompiledQuery(query); }
public DefaultCompiledQuery(Query query) { _query = query; _parameters = createParameterList(); }
private void buildParameterListInFromClause(List<QueryParameter> parameters, Query query) { List<FromItem> fromItems = query.getFromClause().getItems(); for (FromItem fromItem : fromItems) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { buildParameterListInFromClause(parameters, subQuery); buildParameterListInWhereClause(parameters, subQuery); } } }