public override IDList SelectIDs(string query, CallContext context)
        {
            query = query.Replace("fast:", string.Empty);
            var items = Query.SelectItems(query, this.Database);

            return(items != null?IDList.Build(items.Select(i => i.ID).ToArray()) : new IDList());
        }
        /// <summary>
        ///     Determines what items are children of the item and returns a list of their IDs.
        /// </summary>
        /// <param name="itemDefinition">Used to identify the particular item</param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            IEnumerable <KeyValuePair <ID, SyncItem> > childItems =
                ItemsByParentId.Where(item => item.Key == itemDefinition.ID);

            return(IDList.Build(childItems.Select(item => ParseId(item.Value.ID)).ToArray()));
        }
示例#3
0
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            // TODO: Use prefecthing like the old one?
            var childIds = Provider.GetChildIds(itemDefinition.ID.ToGuid());

            return(IDList.Build(childIds.Select(guid => new ID(guid)).ToArray()));
        }
示例#4
0
        /// <summary>
        /// Determines what items are children of the item and returns a list of their IDs.
        /// </summary>
        /// <param name="itemDefinition">Used to identify the particular item</param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            QueryComplete query = Query.EQ("ParentID",
                                           itemDefinition.ID == JoinParentId
                    ? Guid.Empty
                    : itemDefinition.ID.ToGuid());

            return(IDList.Build(Items.FindAs <ItemBase>(query)
                                .Select(it => new ID(it._id)).ToArray()));
        }
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            var  results = new HashSet <ID>();
            bool unicornChildrenAreAuthoritative = false;

            foreach (var provider in UnicornDataProviders)
            {
                IEnumerable <ID> childrenResult;
                var providerResult = provider.GetChildIds(itemDefinition, context, out childrenResult);

                foreach (var result in childrenResult)
                {
                    if (!results.Contains(result))
                    {
                        results.Add(result);
                    }
                }

                if (providerResult)
                {
                    unicornChildrenAreAuthoritative = true;
                }
            }

            if (results.Count == 0 && !unicornChildrenAreAuthoritative)
            {
                // get database children
                var baseIds = base.GetChildIDs(itemDefinition, context);

                // get additional children from Unicorn providers
                // e.g. for TpSync if the root item of a tree is not in the database
                // this allows us to inject that root as a child of the DB item
                foreach (var provider in UnicornDataProviders)
                {
                    var providerResult = provider.GetAdditionalChildIds(itemDefinition, context);
                    foreach (var result in providerResult)
                    {
                        // if the db children returned null, we need to make a new list (because we DO have children)
                        if (baseIds == null)
                        {
                            baseIds = new IDList();
                        }

                        if (!baseIds.Contains(result))
                        {
                            baseIds.Add(result);
                        }
                    }
                }

                return(baseIds);
            }

            return(IDList.Build(results.ToArray()));
        }
        public override IDList GetPublishQueue(DateTime @from, DateTime to, CallContext context)
        {
            if (this.publishQueue.Value == null)
            {
                return(new IDList());
            }

            return(IDList.Build(
                       this.publishQueue.Value
                       .Where(i => i.Date >= @from && i.Date <= to)
                       .Select(i => i.ItemId)
                       .Distinct()
                       .ToArray()));
        }
示例#7
0
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            var results = new HashSet <ID>();

            foreach (var provider in UnicornDataProviders)
            {
                var providerResult = provider.GetChildIds(itemDefinition, context);
                foreach (var result in providerResult)
                {
                    if (!results.Contains(result))
                    {
                        results.Add(result);
                    }
                }
            }

            if (results.Count == 0)
            {
                // get database children
                var baseIds = base.GetChildIDs(itemDefinition, context);

                // get additional children from Unicorn providers
                // e.g. for TpSync if the root item of a tree is not in the database
                // this allows us to inject that root as a child of the DB item
                foreach (var provider in UnicornDataProviders)
                {
                    var providerResult = provider.GetAdditionalChildIds(itemDefinition, context);
                    foreach (var result in providerResult)
                    {
                        if (baseIds == null)
                        {
                            baseIds = new IDList();
                        }

                        if (!baseIds.Contains(result))
                        {
                            baseIds.Add(result);
                        }
                    }
                }

                return(baseIds);
            }

            return(IDList.Build(results.ToArray()));
        }
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            var results = new HashSet <ID>();

            foreach (var provider in UnicornDataProviders)
            {
                var providerResult = provider.GetChildIds(itemDefinition, context);
                foreach (var result in providerResult)
                {
                    if (!results.Contains(result))
                    {
                        results.Add(result);
                    }
                }
            }

            if (results.Count == 0)
            {
                return(base.GetChildIDs(itemDefinition, context));
            }

            return(IDList.Build(results.ToArray()));
        }