Exemple #1
0
 public IXmlCursor SelectChildren(
     IXmlKnownTypeMap knownTypes,
     IXmlNamespaceSource namespaces,
     CursorFlags flags
     )
 {
     throw new NotImplementedException();
 }
Exemple #2
0
 public IXmlCursor SelectChildren(
     IXmlKnownTypeMap knownTypes,
     IXmlNamespaceSource namespaces,
     CursorFlags flags
     )
 {
     return(new SysXmlCursor(this, knownTypes, namespaces, flags));
 }
        protected IXmlCursor Cursor(XPathNavigator parent, string pathText, CursorFlags flags)
        {
            var parentNode   = new XPathNode(parent, typeof(object), NamespaceSource.Instance);
            var compiledPath = XPathCompiler.Compile(pathText);

            compiledPath.SetContext(Context);
            return(Cursor(parentNode, compiledPath, IncludedTypes, flags));
        }
Exemple #4
0
 public IXmlCursor Select(
     CompiledXPath path,
     IXmlIncludedTypeMap knownTypes,
     IXmlNamespaceSource namespaces,
     CursorFlags flags
     )
 {
     return(node.Select(path, knownTypes, namespaces, flags));
 }
Exemple #5
0
 public IXmlCursor Select(
     CompiledXPath path,
     IXmlIncludedTypeMap includedTypes,
     IXmlNamespaceSource namespaces,
     CursorFlags flags
     )
 {
     throw new NotImplementedException();
 }
Exemple #6
0
 public IXmlCursor Select(
     CompiledXPath path,
     IXmlIncludedTypeMap includedTypes,
     IXmlNamespaceSource namespaces,
     CursorFlags flags
     )
 {
     return(flags.SupportsMutation()
       ? (IXmlCursor) new XPathMutableCursor(this, path, includedTypes, namespaces, flags)
       : (IXmlCursor) new XPathReadOnlyCursor(this, path, includedTypes, namespaces, flags));
 }
        public DeclareCursorStatement(string cursorName, IEnumerable<CursorParameter> parameters, CursorFlags flags, SqlQueryExpression queryExpression)
        {
            if (queryExpression == null)
                throw new ArgumentNullException("queryExpression");
            if (String.IsNullOrEmpty(cursorName))
                throw new ArgumentNullException("cursorName");

            CursorName = cursorName;
            Parameters = parameters;
            Flags = flags;
            QueryExpression = queryExpression;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DBCursorOptions"/> class.
        /// </summary>
        /// <param name="collection">The collection to query against.</param>
        /// <param name="selector">The selector query.</param>
        /// <param name="returnFields">The fields to be returned.</param>
        /// <param name="orderBy">The field or fields to order the results by.</param>
        /// <param name="numberToSkip">The number of results to skip.</param>
        /// <param name="numberToReturn">The number to return in a given batch.</param>
        /// <param name="limit">If specified, only this many results are returned.</param>
        /// <param name="explain">if set to <c>true</c> a query explanation will be included.</param>
        /// <param name="snapshot">if set to <c>true</c> then execute against a data snapshot.</param>
        /// <param name="flags">The option flags.</param>
        /// <param name="explicitIndexHint">The explicit index hint.</param>
        public DBCursorOptions(IDBCollection collection,
            DBQuery selector = null,
            DBFieldSet returnFields = null,
            DBFieldSet orderBy = null,
            int? numberToSkip = null,
            int? numberToReturn = null,
            int? limit = null,
            bool explain = false,
            bool snapshot = false,
            CursorFlags flags = CursorFlags.None,
            IDBIndex explicitIndexHint = null)
        {
            Condition.Requires(snapshot, "snapshot")
                .Evaluate(!(snapshot && explicitIndexHint != null), "Snapshot is not allowed when there is an explicit hint")
                .Evaluate(!(snapshot && orderBy != null), "Snapshot is not allowed when there field set to order by");
            Condition.Requires(numberToReturn, "numberToReturn")
                .Evaluate(!(numberToReturn.HasValue && limit.HasValue), "You may not specify both numberToReturn AND limit. They are ways to set a common property. Choose one to set.");

            Collection = collection;
            Selector = selector ?? DBQuery.SelectAll;
            ReturnFields = returnFields;
            Explain = explain;
            Flags = flags;
            Hint = explicitIndexHint;
            OrderBy = orderBy;
            Snapshot = snapshot;

            if (numberToSkip.HasValue)
                NumberToSkip = numberToSkip;
            if (numberToReturn.HasValue)
                NumberToReturn = numberToReturn.Value;
            if (limit.HasValue)
                Limit = limit;

            //If we have special query details
            if (OrderBy != null && OrderBy.Keys.Any() ||
                Hint != null ||
                Explain)
            {
                //Push everything into a container
                DBQuery query = Selector;
                Selector = new DBQuery();
                Selector["query"] = query;
                if (OrderBy != null && OrderBy.Keys.Any())
                    Selector["orderby"] = OrderBy;
                if (Hint != null)
                    Selector["$hint"] = Hint.Name;
                if (Explain)
                    Selector["$explain"] = true;
                if (Snapshot)
                    Selector["$snapshot"] = true;
            }
        }
Exemple #9
0
 protected override IXmlCursor Cursor(
     IXmlNode parent,
     CompiledXPath path,
     IXmlIncludedTypeMap includedTypes,
     CursorFlags flags
     )
 {
     return(new XPathReadOnlyCursor(
                parent,
                path,
                includedTypes,
                NamespaceSource.Instance,
                flags
                ));
 }
		public XPathReadOnlyCursor(IXmlNode parent, CompiledXPath path,
			IXmlIncludedTypeMap includedTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
			: base(path, namespaces, parent)
		{
			if (parent == null)
				throw Error.ArgumentNull("parent");
			if (path == null)
				throw Error.ArgumentNull("path");
			if (includedTypes == null)
				throw Error.ArgumentNull("includedTypes");

			this.includedTypes = includedTypes;
			this.flags         = flags;

			Reset();
		}
Exemple #11
0
        public DeclareCursorStatement(string cursorName, IEnumerable <CursorParameter> parameters, CursorFlags flags, SqlQueryExpression queryExpression)
        {
            if (queryExpression == null)
            {
                throw new ArgumentNullException("queryExpression");
            }
            if (String.IsNullOrEmpty(cursorName))
            {
                throw new ArgumentNullException("cursorName");
            }

            CursorName      = cursorName;
            Parameters      = parameters;
            Flags           = flags;
            QueryExpression = queryExpression;
        }
Exemple #12
0
		public SysXmlCursor(IXmlNode parent, IXmlKnownTypeMap knownTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
			: base(namespaces, parent)
		{
			if (null == parent)
				throw Error.ArgumentNull("parent");
			if (null == knownTypes)
				throw Error.ArgumentNull("knownTypes");

			this.knownTypes = knownTypes;
			this.flags      = flags;
			this.index      = -1;

			var source = parent.RequireRealizable<XmlNode>();
			if (source.IsReal)
				node = source.Value;
		}
        public CursorInfo(string cursorName, CursorFlags flags, SqlQueryExpression queryExpression)
        {
            if (cursorName == null)
            {
                throw new ArgumentNullException("cursorName");
            }
            if (queryExpression == null)
            {
                throw new ArgumentNullException("queryExpression");
            }

            CursorName      = cursorName;
            QueryExpression = queryExpression;
            Parameters      = new ParameterCollection();

            Flags = flags;
        }
        protected override void BuildStatement(SqlCodeObjectBuilder builder)
        {
            var parameters = new List<CursorParameter>();
            if (Parameters != null) {
                foreach (var parameterNode in Parameters) {
                    var dataType = builder.BuildDataType(parameterNode.ParameterType);
                    parameters.Add(new CursorParameter(parameterNode.ParameterName, dataType));
                }
            }

            var flags = new CursorFlags();
            if (Insensitive)
                flags |= CursorFlags.Insensitive;
            if (Scroll)
                flags |= CursorFlags.Scroll;

            var queryExpression = (SqlQueryExpression) ExpressionBuilder.Build(QueryExpression);

            builder.AddObject(new DeclareCursorStatement(CursorName, parameters.ToArray(), flags, queryExpression));
        }
Exemple #15
0
        public XPathReadOnlyCursor(IXmlNode parent, CompiledXPath path,
                                   IXmlIncludedTypeMap includedTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
            : base(path, namespaces, parent)
        {
            if (parent == null)
            {
                throw Error.ArgumentNull("parent");
            }
            if (path == null)
            {
                throw Error.ArgumentNull("path");
            }
            if (includedTypes == null)
            {
                throw Error.ArgumentNull("includedTypes");
            }

            this.includedTypes = includedTypes;
            this.flags         = flags;

            Reset();
        }
Exemple #16
0
		public XPathMutableCursor(IXmlNode parent, CompiledXPath path,
			IXmlIncludedTypeMap knownTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
			: base(path, namespaces, parent)
		{
			if (null == parent)
				throw Error.ArgumentNull("parent");
			if (null == path)
				throw Error.ArgumentNull("path");
			if (null == knownTypes)
				throw Error.ArgumentNull("knownTypes");
			if (!path.IsCreatable)
				throw Error.XPathNotCreatable(path);

			this.step       = path.FirstStep;
			this.knownTypes = knownTypes;
			this.flags      = flags;

			var source = parent.RequireRealizable<XPathNavigator>();
			if (source.IsReal)
				iterator = new XPathBufferedNodeIterator(
					source.Value.Select(path.FirstStep.Path));
		}
Exemple #17
0
        public SysXmlCursor(IXmlNode parent, IXmlKnownTypeMap knownTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
            : base(namespaces, parent)
        {
            if (null == parent)
            {
                throw Error.ArgumentNull("parent");
            }
            if (null == knownTypes)
            {
                throw Error.ArgumentNull("knownTypes");
            }

            this.knownTypes = knownTypes;
            this.flags      = flags;
            this.index      = -1;

            var source = parent.RequireRealizable <XmlNode>();

            if (source.IsReal)
            {
                node = source.Value;
            }
        }
Exemple #18
0
        public XPathMutableCursor(
            IXmlNode parent,
            CompiledXPath path,
            IXmlIncludedTypeMap knownTypes,
            IXmlNamespaceSource namespaces,
            CursorFlags flags
            ) : base(path, namespaces, parent)
        {
            if (null == parent)
            {
                throw Error.ArgumentNull(nameof(parent));
            }
            if (null == path)
            {
                throw Error.ArgumentNull(nameof(path));
            }
            if (null == knownTypes)
            {
                throw Error.ArgumentNull(nameof(knownTypes));
            }
            if (!path.IsCreatable)
            {
                throw Error.XPathNotCreatable(path);
            }

            this.step       = path.FirstStep;
            this.knownTypes = knownTypes;
            this.flags      = flags;

            var source = parent.RequireRealizable <XPathNavigator>();

            if (source.IsReal)
            {
                iterator = new XPathBufferedNodeIterator(source.Value.Select(path.FirstStep.Path));
            }
        }
Exemple #19
0
 public static bool AllowsMultipleItems(this CursorFlags flags)
 {
     return(0 != (flags & CursorFlags.Multiple));
 }
Exemple #20
0
        public IXmlCursor SelectChildren(IXmlKnownTypeMap knownTypes, IXmlNamespaceSource namespaces, CursorFlags flags)
        {
#if !SILVERLIGHT
            return(new SysXmlCursor(this, knownTypes, namespaces, flags));
#else
            // TODO: XNode-based
#endif
        }
 public DeclareCursorStatement(string cursorName, CursorFlags flags, SqlQueryExpression queryExpression)
     : this(cursorName, null, flags, queryExpression)
 {
 }
Exemple #22
0
 public DeclareCursorStatement(string cursorName, CursorFlags flags, SqlQueryExpression queryExpression)
     : this(cursorName, null, flags, queryExpression)
 {
 }
Exemple #23
0
 public static bool IncludesAttributes(this CursorFlags flags)
 {
     return(0 != (flags & CursorFlags.Attributes));
 }
Exemple #24
0
 public static bool IncludesElements(this CursorFlags flags)
 {
     return(0 != (flags & CursorFlags.Elements));
 }
Exemple #25
0
		protected static SysXmlCursor Cursor(SysXmlNode node, CursorFlags flags)
		{
			return new SysXmlCursor(node, KnownTypes, NamespaceSource.Instance, flags);
		}
Exemple #26
0
 protected abstract IXmlCursor Cursor(
     IXmlNode parent,
     CompiledXPath path,
     IXmlIncludedTypeMap includedTypes,
     CursorFlags flags
     );
 public static void DeclareCursor(this IRequest request, string cursorName, CursorFlags flags, SqlQueryExpression query)
 {
     DeclareCursor(request, cursorName, new CursorParameter[0], flags, query);
 }
		protected abstract IXmlCursor Cursor(IXmlNode parent, CompiledXPath path, IXmlIncludedTypeMap includedTypes, CursorFlags flags);
Exemple #29
0
        private void BuildDeclareCursor(DeclareCursorNode node)
        {
            var parameters = new List<CursorParameter>();
            if (node.Parameters != null) {
                foreach (var parameterNode in node.Parameters) {
                    var dataType = BuildDataType(parameterNode.ParameterType);
                    parameters.Add(new CursorParameter(parameterNode.ParameterName, dataType));
                }
            }

            var flags = new CursorFlags();
            if (node.Insensitive)
                flags |= CursorFlags.Insensitive;
            if (node.Scroll)
                flags |= CursorFlags.Scroll;

            var queryExpression = (SqlQueryExpression) ExpressionBuilder.Build(node.QueryExpression);

            statements.Add(new DeclareCursorStatement(node.CursorName, parameters.ToArray(), flags, queryExpression));
        }
 public static void DeclareCursor(this IRequest request, string cursorName, CursorParameter[] parameters, CursorFlags flags, SqlQueryExpression query)
 {
     request.ExecuteStatement(new DeclareCursorStatement(cursorName, parameters, flags, query));
 }
Exemple #31
0
 public static void DeclareCursor(this IContext context, string cursorName, CursorFlags flags, SqlQueryExpression query)
 {
     context.DeclareCursor(new CursorInfo(cursorName, flags, query));
 }
Exemple #32
0
 protected static SysXmlCursor Cursor(SysXmlNode node, CursorFlags flags)
 {
     return(new SysXmlCursor(node, KnownTypes, NamespaceSource.Instance, flags));
 }
		protected override IXmlCursor Cursor(IXmlNode parent, CompiledXPath path, IXmlIncludedTypeMap includedTypes, CursorFlags flags)
		{
			return new XPathMutableCursor(parent, path, includedTypes, NamespaceSource.Instance, flags);
		}
Exemple #34
0
 public static CursorFlags MutableIf(this CursorFlags flags, bool mutable)
 {
     return(mutable ? (flags | CursorFlags.Mutable) : flags);
 }
Exemple #35
0
 public static bool SupportsMutation(this CursorFlags flags)
 {
     return(0 != (flags & CursorFlags.Mutable));
 }
 public static void DeclareCursor(this IRequest context, string cursorName, CursorFlags flags, SqlQueryExpression query)
 {
     context.DeclareCursor(new CursorInfo(cursorName, flags, query));
 }
		protected IXmlCursor Cursor(XPathNavigator parent, string pathText, CursorFlags flags)
		{
			var parentNode = new XPathNode(parent, typeof(object), NamespaceSource.Instance);
			var compiledPath = XPathCompiler.Compile(pathText);
			compiledPath.SetContext(Context);
			return Cursor(parentNode, compiledPath, IncludedTypes, flags);
		}