Esempio n. 1
0
        private Boolean CanNodeAdd(ISchemaBase item)
        {
            Enums.ObjectStatusType checkedStatus = Enums.ObjectStatusType.OriginalStatus;
            // OriginalStatus == 0, so have to treat differently
            if (item.Status == Enums.ObjectStatusType.OriginalStatus && ShowUnchangedItems)
            {
                return(true);
            }

            if (item.HasState(Enums.ObjectStatusType.DropStatus) && ShowMissingItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.DropStatus;

            if (item.HasState(Enums.ObjectStatusType.CreateStatus) && ShowNewItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.CreateStatus;

            if (item.HasState(Enums.ObjectStatusType.AlterStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.AlterStatus;

            if (item.HasState(Enums.ObjectStatusType.AlterWhitespaceStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.AlterWhitespaceStatus;

            if (item.HasState(Enums.ObjectStatusType.AlterBodyStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.AlterBodyStatus;

            if (item.HasState(Enums.ObjectStatusType.RebuildStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.RebuildStatus;

            if (item.HasState(Enums.ObjectStatusType.RebuildDependenciesStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.RebuildDependenciesStatus;

            if (item.HasState(Enums.ObjectStatusType.ChangeOwner) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.ChangeOwner;

            if (item.HasState(Enums.ObjectStatusType.DropOlderStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.DropOlderStatus;

            if (item.HasState(Enums.ObjectStatusType.BindStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.BindStatus;

            if (item.HasState(Enums.ObjectStatusType.PermissionSet) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.PermissionSet;

            if (item.HasState(Enums.ObjectStatusType.DisabledStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.DisabledStatus;

            if (item.HasState(Enums.ObjectStatusType.UpdateStatus) && ShowChangedItems)
            {
                return(true);
            }
            checkedStatus = checkedStatus | Enums.ObjectStatusType.UpdateStatus;


            // At the end, we should have check all possible statuses.
            Enums.ObjectStatusType expectedTotalStatus = Enums.ObjectStatusType.OriginalStatus;
            Enum.GetValues(typeof(Enums.ObjectStatusType)).Cast <Enums.ObjectStatusType>().ToList().ForEach((s) => expectedTotalStatus = expectedTotalStatus | s);

            if (expectedTotalStatus != checkedStatus)
            {
                throw new Exception(string.Format("The OjbectStatusType '{0:G}' wasn't implemented in the CanNodeAdd() method. Developer, please ensure that all values in the Enum are checked.", (Enums.ObjectStatusType)(expectedTotalStatus - checkedStatus)));
            }

            return(false);
        }