示例#1
0
 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()
示例#2
0
 public InferentialColumnBuilder(String columnName)
 {
     _name               = columnName;
     _columnTypes        = new HashSet <ColumnType>();
     _observationCounter = new NAtomicInteger(0);
     _nulls              = false;
 }
示例#3
0
        } // 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()
示例#4
0
        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++;
            }
        }
示例#5
0
        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++;
            }
        }
示例#6
0
        } // 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