Exemplo n.º 1
0
 private RoleUpgrader.EntryComparisonState AnalyzeEntries(RoleEntry curOld, RoleEntry curNew)
 {
     RoleUpgrader.EntryComparisonState entryComparisonState = RoleUpgrader.EntryComparisonState.NoEntriesFound;
     if (curOld != null)
     {
         entryComparisonState |= RoleUpgrader.EntryComparisonState.OnlyExistsInOld;
     }
     if (curNew != null)
     {
         entryComparisonState |= RoleUpgrader.EntryComparisonState.OnlyExistsInNew;
     }
     if (entryComparisonState == RoleUpgrader.EntryComparisonState.ExistsInBoth)
     {
         int num = RoleEntry.NameComparer.Compare(curOld, curNew);
         if (num < 0)
         {
             entryComparisonState = RoleUpgrader.EntryComparisonState.OnlyExistsInOld;
         }
         else if (num > 0)
         {
             entryComparisonState = RoleUpgrader.EntryComparisonState.OnlyExistsInNew;
         }
     }
     return(entryComparisonState);
 }
Exemplo n.º 2
0
        protected MultiValuedProperty <RoleEntry> CalculateUpdatedRoleEntries(ExchangeRole cannedRole, RoleEntry[] sortedOldRoleEntries)
        {
            List <RoleEntry> list = new List <RoleEntry>();

            RoleEntry[] array = cannedRole.RoleEntries.ToArray();
            Array.Sort <RoleEntry>(array, RoleEntryComparer.Instance);
            int num  = 0;
            int num2 = 0;

            for (;;)
            {
                RoleEntry roleEntry  = (num2 < sortedOldRoleEntries.Length) ? sortedOldRoleEntries[num2] : null;
                RoleEntry roleEntry2 = (num < array.Length) ? array[num] : null;
                RoleUpgrader.EntryComparisonState entryComparisonState = this.AnalyzeEntries(roleEntry, roleEntry2);
                switch (entryComparisonState)
                {
                case RoleUpgrader.EntryComparisonState.NoEntriesFound:
                    goto IL_102;

                case RoleUpgrader.EntryComparisonState.OnlyExistsInOld:
                {
                    RoleEntry roleEntry3 = roleEntry.FindAndRemoveMatchingParameters(this.settings.AvailableRoleEntries);
                    if (!(roleEntry3 == null))
                    {
                        list.Add(roleEntry3);
                    }
                    num2++;
                    goto IL_102;
                }

                case RoleUpgrader.EntryComparisonState.OnlyExistsInNew:
                    list.Add(roleEntry2);
                    num++;
                    goto IL_102;

                case RoleUpgrader.EntryComparisonState.ExistsInBoth:
                {
                    RoleEntry item       = roleEntry2;
                    RoleEntry roleEntry4 = roleEntry.FindAndRemoveMatchingParameters(this.settings.AvailableRoleEntries);
                    if (roleEntry4 != null)
                    {
                        item = RoleEntry.MergeParameters(new RoleEntry[]
                            {
                                roleEntry2,
                                roleEntry4
                            });
                    }
                    list.Add(item);
                    num2++;
                    num++;
                    goto IL_102;
                }
                }
                break;
IL_102:
                if (entryComparisonState == RoleUpgrader.EntryComparisonState.NoEntriesFound)
                {
                    goto Block_6;
                }
            }
            throw new ArgumentOutOfRangeException("entryComparisonState");
Block_6:
            return(new MultiValuedProperty <RoleEntry>(list));
        }