Exemplo n.º 1
0
        protected DataProviderBase(string targetDatabaseName, string rootTemplateId, string itemTemplateId,
                                   string idTablePrefix, string rootItemId)
        {
            Assert.ArgumentNotNullOrEmpty(targetDatabaseName, "targetDatabaseName");
            Assert.ArgumentNotNullOrEmpty(rootTemplateId, "rootTemplateId");
            Assert.ArgumentNotNullOrEmpty(itemTemplateId, "itemTemplateId");
            Assert.ArgumentNotNullOrEmpty(idTablePrefix, "idTablePrefix");

            TargetDatabaseName = targetDatabaseName;
            IdTablePrefix      = idTablePrefix;

            if (!ID.TryParse(rootTemplateId, out RootTemplateId))
            {
                throw new InvalidOperationException(string.Format("Invalid root template ID {0}", rootTemplateId));
            }

            if (!ID.TryParse(itemTemplateId, out ItemTemplateId))
            {
                throw new InvalidOperationException(string.Format("Invalid template ID {0}", itemTemplateId));
            }

            if (!ID.TryParse(rootItemId, out RootItemId))
            {
                throw new InvalidOperationException(string.Format("Invalid rootItem ID {0}", rootItemId));
            }

            InMemoryIdTable = new InMemoryIdTable("master");

            ExternalItems = LoadExternalItems();
        }
Exemplo n.º 2
0
        public IEnumerable <T> Children <T>(ItemDefinition parentItem, string idTablePrefix, IEnumerable <T> externalItems, ID rootItemId, InMemoryIdTable inMemoryIdTable)
            where T : StructuredItem, new()
        {
            var idTableEntries = inMemoryIdTable.GetKeys(idTablePrefix, parentItem.ID);

            if (parentItem.ID == rootItemId)
            {
                return(externalItems.Where(a => a.ParentId == null));
            }

            if (idTableEntries.Any())
            {
                var parentKey = idTableEntries.FirstOrDefault();

                return(externalItems.Where(a => a.ParentId == parentKey.Key));
            }

            return(new T[0]);
        }