コード例 #1
0
        /**
         * Creates a clone of the {@link SelectItem} for use within a cloned
         * {@link Query}.
         *
         * @param clonedQuery
         *            a new {@link Query} object that represents the clone-to-be of
         *            a query. It is expected that {@link FromItem}s have already
         *            been cloned in this {@link Query}.
         * @return
         */
        public SelectItem clone(Query clonedQuery)
        {
            SelectItem subQuerySelectItem = (_subQuerySelectItem == null ? null : _subQuerySelectItem.clone());
            FromItem   fromItem;

            if (_fromItem == null)
            {
                fromItem = null;
            }
            else if (clonedQuery != null && _query != null)
            {
                int indexOfFromItem = _query.getFromClause().indexOf(_fromItem);
                if (indexOfFromItem != -1)
                {
                    fromItem = clonedQuery.getFromClause().getItem(indexOfFromItem);
                }
                else
                {
                    fromItem = _fromItem.clone();
                }
            }
            else
            {
                fromItem = _fromItem.clone();
            }

            SelectItem s = new SelectItem(_column, fromItem, _function, _functionParameters, _expression,
                                          subQuerySelectItem, _alias, _functionApproximationAllowed);

            return(s);
        } // clone()
コード例 #2
0
        public FromItem clone()
        {
            FromItem f = new FromItem();

            f._alias      = _alias;
            f._join       = _join;
            f._table      = _table;
            f._expression = _expression;
            if (_subQuery != null)
            {
                f._subQuery = _subQuery.clone();
            }
            if (_leftOn != null && _leftSide != null && _rightOn != null && _rightSide != null)
            {
                f._leftSide  = _leftSide.clone();
                f._leftOn    = (SelectItem[])_leftOn.Clone();
                f._rightSide = _rightSide.clone();
                f._rightOn   = (SelectItem[])_rightOn.Clone();
            }
            return(f);
        } // clone()