Exemple #1
0
        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);
 }