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);
        }
 private static SensitivityLabel ToSensitivityLabel(SensitivityLabelModel sensitivityLabelModel)
 {
     return(new SensitivityLabel
     {
         LabelName = sensitivityLabelModel.SensitivityLabel,
         LabelId = sensitivityLabelModel.SensitivityLabelId,
         InformationType = sensitivityLabelModel.InformationType,
         InformationTypeId = sensitivityLabelModel.InformationTypeId,
     });
 }
Beispiel #3
0
 internal void ApplyModel(SensitivityLabelModel sensitivityLabel, InformationProtectionPolicy informationProtectionPolicy)
 {
     ApplyInput(sensitivityLabel.InformationType, sensitivityLabel.SensitivityLabel, informationProtectionPolicy);
 }