private static List <SensitivityLabelModel> MergeSensitivityLabels( List <SensitivityLabelModel> existingLabels, List <SensitivityLabelModel> newLabels, InformationProtectionPolicy informationProtectionPolicy) { List <SensitivityLabelModel> mergedLabels = new List <SensitivityLabelModel>(); if (newLabels == null) { return(mergedLabels); } if (existingLabels == null) { return(newLabels); } IComparer <SensitivityLabelModel> comparer = new SortComparer(); existingLabels.Sort(comparer); newLabels.Sort(comparer); int existingLabelsIndex = 0; int existingLabelsCount = existingLabels.Count(); int newLabelsIndex = 0; int newLabelsCount = newLabels.Count(); while (existingLabelsIndex < existingLabelsCount && newLabelsIndex < newLabelsCount) { SensitivityLabelModel existingLabel = existingLabels.ElementAt(existingLabelsIndex); SensitivityLabelModel newLabel = newLabels.ElementAt(newLabelsIndex); int labelsCompared = comparer.Compare(existingLabel, newLabel); if (labelsCompared < 0) { existingLabelsIndex++; } else if (labelsCompared > 0) { mergedLabels.Add(newLabel); newLabelsIndex++; } else { existingLabel.ApplyModel(newLabel, informationProtectionPolicy); mergedLabels.Add(existingLabel); existingLabelsIndex++; newLabelsIndex++; } } while (newLabelsIndex < newLabelsCount) { mergedLabels.Add(newLabels.ElementAt(newLabelsIndex++)); } return(mergedLabels); }
internal void ApplyModel(SensitivityLabelModel sensitivityLabel, InformationProtectionPolicy informationProtectionPolicy) { ApplyInput(sensitivityLabel.InformationType, sensitivityLabel.SensitivityLabel, informationProtectionPolicy); }