Ejemplo n.º 1
0
        internal void Save(XDocument rulePackXDoc)
        {
            ArgumentValidator.ThrowIfNull("rulePackXDoc", rulePackXDoc);
            if (this.Fingerprints == null || this.Fingerprints.Count <= 0)
            {
                throw new DataClassificationFingerprintsMissingException(this.Name);
            }
            if (this.Fingerprints.Count((Fingerprint fingerprint) => string.IsNullOrEmpty(fingerprint.Description)) > 0)
            {
                throw new DataClassificationFingerprintsDescriptionMissingException(this.Name);
            }
            if (this.Fingerprints.Distinct(Fingerprint.Comparer).Count <Fingerprint>() != this.Fingerprints.Count)
            {
                throw new DataClassificationFingerprintsDuplicatedException(this.Name);
            }
            DataClassificationObjectId dataClassificationObjectId = this.Identity as DataClassificationObjectId;

            foreach (Fingerprint fingerprint2 in this.Fingerprints)
            {
                if (string.IsNullOrEmpty(fingerprint2.Identity))
                {
                    fingerprint2.Identity = XmlProcessingUtils.AddFingerprintTextProcessor(rulePackXDoc, fingerprint2);
                }
            }
            XmlProcessingUtils.AddDataClassification(rulePackXDoc, dataClassificationObjectId.Name, this.MinEngineVersion.ToString(), this.GetRuleXElement());
            XmlProcessingUtils.AddLocalizedResource(rulePackXDoc, dataClassificationObjectId.Name, this.GetResourceXElement());
        }
        protected override bool EvaluateMatch(DataClassificationPresentationObject dataClassificationPresentationObject, Func <string, CultureInfo, CompareOptions, bool> objectPropertyMatchOperator)
        {
            ExAssert.RetailAssert(dataClassificationPresentationObject != null, "The data classification presentation object passed to the wilcard matcher must not be null");
            bool flag = false;
            DataClassificationObjectId dataClassificationObjectId = (DataClassificationObjectId)dataClassificationPresentationObject.Identity;

            if (dataClassificationObjectId != null && !string.IsNullOrEmpty(dataClassificationObjectId.Name))
            {
                flag = objectPropertyMatchOperator(dataClassificationObjectId.Name, DataClassificationIdentityMatcher.cultureInfoForMatchingGuidIdentity.Value, CompareOptions.OrdinalIgnoreCase);
            }
            if (!flag && !string.IsNullOrEmpty(dataClassificationPresentationObject.Name))
            {
                flag = objectPropertyMatchOperator(dataClassificationPresentationObject.Name, dataClassificationPresentationObject.DefaultCulture, CompareOptions.IgnoreCase);
            }
            if (!flag)
            {
                flag = dataClassificationPresentationObject.AllLocalizedNames.Any((KeyValuePair <CultureInfo, string> localizedNameDetails) => objectPropertyMatchOperator(localizedNameDetails.Value, localizedNameDetails.Key, CompareOptions.IgnoreCase));
            }
            return(flag);
        }