private FilterItem copyFilterItem(FilterItem item, Object[] values, NAtomicInteger parameterIndex) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); FilterItem[] newChildItems = new FilterItem[childItems.Length]; for (int i = 0; i < childItems.Length; i++) { FilterItem childItem = childItems[i]; FilterItem newChildItem = copyFilterItem(childItem, values, parameterIndex); newChildItems[i] = newChildItem; } NList <FilterItem> elements = new NList <FilterItem>(); foreach (FilterItem element in newChildItems) { elements.Add(element); } FilterItem newFilter = new FilterItem(item.getLogicalOperator(), elements); return(newFilter); } else { if (item.getOperand() is QueryParameter) { Object newOperand = values[parameterIndex.getAndIncrement()]; FilterItem newFilter = new FilterItem(item.getSelectItem(), item.getOperator(), newOperand); return(newFilter); } else { return(item); } } } // copyFilterItem()
public InferentialColumnBuilder(String columnName) { _name = columnName; _columnTypes = new HashSet <ColumnType>(); _observationCounter = new NAtomicInteger(0); _nulls = false; }
} // constructor /** * Clones the query while replacing query parameters with corresponding * values. * * @param values * @return */ public Query cloneWithParameterValues(Object[] values) { NAtomicInteger parameterIndex = new NAtomicInteger(0); Query clonedQuery = _query.clone(); replaceParametersInQuery(values, parameterIndex, _query, clonedQuery); return(clonedQuery); } // cloneWithParameterValues()
private void replaceParametersInFromClause(Object[] values, NAtomicInteger parameterIndex, Query originalQuery, Query newQuery) { List <FromItem> fromItems = originalQuery.getFromClause().getItems(); int i = 0; foreach (FromItem fromItem in fromItems) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { 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 void replaceParametersInWhereClause(Object[] values, NAtomicInteger parameterIndex, Query originalQuery, Query newQuery) { // creates a clone of the original query, but rebuilds a completely new // where clause based on parameter values List <FilterItem> items = originalQuery.getWhereClause().getItems(); int i = 0; foreach (FilterItem filterItem in items) { FilterItem newFilter = copyFilterItem(filterItem, values, parameterIndex); if (filterItem != newFilter) { newQuery.getWhereClause().removeItem(i); newQuery.getWhereClause().addItem(i, newFilter); } i++; } }
} // cloneWithParameterValues() private void replaceParametersInQuery(Object[] values, NAtomicInteger parameterIndex, Query originalQuery, Query newQuery) { replaceParametersInFromClause(values, parameterIndex, originalQuery, newQuery); replaceParametersInWhereClause(values, parameterIndex, originalQuery, newQuery); }
public InferentialTableBuilder(String tableName) { _tableName = tableName; _columnBuilders = new Dictionary <String, InferentialColumnBuilder>(); _observationCounter = new NAtomicInteger(0); } // constructor