private void ExtractConstraintSetHierarchy(LoadContainer databaseContainer) { DirectoryDatabase directoryDatabase = (DirectoryDatabase)base.DirectoryObject; Dictionary <string, LoadContainer> dictionary = new Dictionary <string, LoadContainer>(); foreach (DirectoryMailbox directoryMailbox in directoryDatabase.GetMailboxes()) { TopologyExtractor extractor = base.ExtractorFactory.GetExtractor(directoryMailbox); IMailboxProvisioningConstraints mailboxProvisioningConstraints = directoryMailbox.MailboxProvisioningConstraints; string text = null; if (mailboxProvisioningConstraints != null) { text = mailboxProvisioningConstraints.HardConstraint.Value; } text = (text ?? string.Empty); if (!dictionary.ContainsKey(text)) { DirectoryIdentity identity = new DirectoryIdentity(DirectoryObjectType.ConstraintSet, Guid.NewGuid(), text, directoryMailbox.Identity.OrganizationId); DirectoryObject directoryObject = new DirectoryObject(base.DirectoryObject.Directory, identity); LoadContainer value = new LoadContainer(directoryObject, ContainerType.ConstraintSet); dictionary.Add(text, value); databaseContainer.AddChild(dictionary[text]); } LoadEntity extractedEntity = extractor.ExtractEntity(); this.AddEntityToContainer(dictionary[text], extractedEntity); } }
private LoadContainer CopyForConstraint(LoadContainer root, string constraint) { List <LoadContainer> list = new List <LoadContainer>(); foreach (LoadEntity loadEntity in root.Children) { LoadContainer root2 = (LoadContainer)loadEntity; LoadContainer loadContainer = this.CopyForConstraint(root2, constraint); if (loadContainer != null) { list.Add(loadContainer); } } bool flag = this.ShouldCullNode(root, list, constraint); if (flag) { return(null); } LoadContainer shallowCopy = root.GetShallowCopy(); foreach (LoadContainer child in list) { shallowCopy.AddChild(child); } return(shallowCopy); }
protected override void AddEntityToContainer(LoadContainer databaseContainer, LoadEntity extractedEntity) { databaseContainer.AddChild(extractedEntity); base.AddEntityToContainer(databaseContainer, extractedEntity); }