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(); }
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]); }