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); }