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);
        }
Esempio n. 3
0
 protected override void AddEntityToContainer(LoadContainer databaseContainer, LoadEntity extractedEntity)
 {
     databaseContainer.AddChild(extractedEntity);
     base.AddEntityToContainer(databaseContainer, extractedEntity);
 }