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