Ejemplo n.º 1
0
        internal static DataClassificationPresentationObject Create(string ruleIdentifier, DataClassificationLocalizableDetails defaultRuleDetails, XElement ruleElement, XElement resourceElement, ClassificationRuleCollectionPresentationObject rulePackPresentationObject)
        {
            ArgumentValidator.ThrowIfNullOrEmpty("ruleIdentifier", ruleIdentifier);
            ArgumentValidator.ThrowIfNull("defaultRuleDetails", defaultRuleDetails);
            ArgumentValidator.ThrowIfNull("ruleElement", ruleElement);
            ArgumentValidator.ThrowIfNull("resourceElement", resourceElement);
            ArgumentValidator.ThrowIfNull("rulePackPresentationObject", rulePackPresentationObject);
            MultiValuedProperty <Fingerprint> multiValuedProperty = null;

            if (rulePackPresentationObject.IsFingerprintRuleCollection && ruleElement.Document != null)
            {
                multiValuedProperty = XmlProcessingUtils.ReadAllReferredFingerprints(ruleElement);
            }
            return(new DataClassificationPresentationObject
            {
                defaultDetails = defaultRuleDetails,
                localizedNames = XmlProcessingUtils.ReadAllRuleNames(resourceElement),
                localizedDescriptions = XmlProcessingUtils.ReadAllRuleDescriptions(resourceElement),
                fingerprints = multiValuedProperty,
                Identity = DataClassificationPresentationObject.CreateDataClassificationIdentifier(ruleIdentifier, rulePackPresentationObject),
                ClassificationType = (rulePackPresentationObject.IsFingerprintRuleCollection ? ClassificationTypeEnum.Fingerprint : DataClassificationPresentationObject.Parse(ruleElement.Name.LocalName)),
                ClassificationRuleCollection = rulePackPresentationObject,
                RecommendedConfidence = XmlProcessingUtils.ReadRuleRecommendedConfidence(ruleElement),
                MinEngineVersion = XmlProcessingUtils.GetRulePackElementVersion(ruleElement)
            });
        }
Ejemplo n.º 2
0
        private static int GetInvariantOrLocalizedNameHitIndex(List <string> ruleNameQueriesList, XElement currentResourceElement, CultureInfo mainThreadCulture, bool ignoreCase)
        {
            DataClassificationLocalizableDetails dataClassificationLocalizableDetails = XmlProcessingUtils.ReadDefaultRuleMetadata(currentResourceElement);
            int num = ruleNameQueriesList.BinarySearch(dataClassificationLocalizableDetails.Name, StringComparer.Create(dataClassificationLocalizableDetails.Culture, ignoreCase));

            if (num < 0 && !dataClassificationLocalizableDetails.Culture.Equals(mainThreadCulture))
            {
                Dictionary <CultureInfo, string> dictionary = XmlProcessingUtils.ReadAllRuleNames(currentResourceElement);
                CultureInfo cultureInfo = mainThreadCulture;
                string      text        = null;
                while (!cultureInfo.Equals(CultureInfo.InvariantCulture) && !dictionary.TryGetValue(cultureInfo, out text))
                {
                    cultureInfo = cultureInfo.Parent;
                }
                if (text != null && !cultureInfo.Equals(CultureInfo.InvariantCulture))
                {
                    num = ruleNameQueriesList.BinarySearch(text, StringComparer.Create(cultureInfo, ignoreCase));
                }
            }
            return(num);
        }