protected override bool EvaluateMatch(Tuple <TransportRule, XDocument> rulePackDataObject, Func <string, CultureInfo, CompareOptions, bool> objectPropertyMatchOperator) { ExAssert.RetailAssert(rulePackDataObject != null && rulePackDataObject.Item1 != null && rulePackDataObject.Item2 != null, "The rule pack data object passed to the name matcher must not be null"); bool flag = false; DlpUtils.DataClassificationQueryContext dataClassificationQueryContext = new DlpUtils.DataClassificationQueryContext(rulePackDataObject.Item1.OrganizationId, ClassificationDefinitionsDiagnosticsReporter.Instance) { CurrentRuleCollectionTransportRuleObject = rulePackDataObject.Item1, CurrentRuleCollectionXDoc = rulePackDataObject.Item2 }; XElement operationArgument; if (!DlpUtils.TryExecuteOperation <XmlException, XDocument, XElement>(dataClassificationQueryContext, new Func <XDocument, XElement>(XmlProcessingUtils.GetRulePackageMetadataElement), dataClassificationQueryContext.CurrentRuleCollectionXDoc, out operationArgument)) { return(flag); } ClassificationRuleCollectionLocalizableDetails classificationRuleCollectionLocalizableDetails; if (!DlpUtils.TryExecuteOperation <XmlException, XElement, ClassificationRuleCollectionLocalizableDetails>(dataClassificationQueryContext, new Func <XElement, ClassificationRuleCollectionLocalizableDetails>(XmlProcessingUtils.ReadDefaultRulePackageMetadata), operationArgument, out classificationRuleCollectionLocalizableDetails)) { return(flag); } flag = objectPropertyMatchOperator(classificationRuleCollectionLocalizableDetails.Name, classificationRuleCollectionLocalizableDetails.Culture, CompareOptions.IgnoreCase); if (!flag) { Dictionary <CultureInfo, ClassificationRuleCollectionLocalizableDetails> source; if (!DlpUtils.TryExecuteOperation <XmlException, XElement, Dictionary <CultureInfo, ClassificationRuleCollectionLocalizableDetails> >(dataClassificationQueryContext, new Func <XElement, Dictionary <CultureInfo, ClassificationRuleCollectionLocalizableDetails> >(XmlProcessingUtils.ReadAllRulePackageMetadata), operationArgument, out source)) { return(flag); } flag = source.Any((KeyValuePair <CultureInfo, ClassificationRuleCollectionLocalizableDetails> localizedDetail) => objectPropertyMatchOperator(localizedDetail.Value.Name, localizedDetail.Key, CompareOptions.IgnoreCase)); } return(flag); }
private static bool CreateDataClassificationPresentationObject(DlpUtils.DataClassificationQueryContext operationContext, string ruleIdentifier, XElement ruleElement, XElement resourceElement, ClassificationRuleCollectionPresentationObject ruleCollectionPresentationObject, out DataClassificationPresentationObject dataClassificationPresentationObject) { return(DlpUtils.TryExecuteOperation <XmlException, object, object, DataClassificationPresentationObject>(operationContext, (object unusedStub1, object unusedStub2) => DataClassificationPresentationObject.Create(ruleIdentifier, ruleElement, resourceElement, ruleCollectionPresentationObject), null, null, out dataClassificationPresentationObject)); }
private static bool CreateClassificationRuleCollectionPresentationObject(DlpUtils.DataClassificationQueryContext operationContext, out ClassificationRuleCollectionPresentationObject presentationObject) { return(DlpUtils.TryExecuteOperation <XmlException, TransportRule, XDocument, ClassificationRuleCollectionPresentationObject>(operationContext, new Func <TransportRule, XDocument, ClassificationRuleCollectionPresentationObject>(ClassificationRuleCollectionPresentationObject.Create), operationContext.CurrentRuleCollectionTransportRuleObject, operationContext.CurrentRuleCollectionXDoc, out presentationObject)); }
private static bool GetIdQueryMatchResult(DlpUtils.DataClassificationQueryContext queryContext, IEnumerable <string> queriedIds, out IEnumerable <QueryMatchResult> idMatchResultsFromCurrentRulePack) { return(DlpUtils.TryExecuteOperation <XmlException, XDocument, IEnumerable <string>, IEnumerable <QueryMatchResult> >(queryContext, new Func <XDocument, IEnumerable <string>, IEnumerable <QueryMatchResult> >(XmlProcessingUtils.GetMatchingRulesById), queryContext.CurrentRuleCollectionXDoc, queriedIds, out idMatchResultsFromCurrentRulePack)); }
private static bool GetNameQueryMatchResult(DlpUtils.DataClassificationQueryContext queryContext, IEnumerable <string> queriedNames, out IEnumerable <QueryMatchResult> nameMatchResultsFromCurrentRulePack) { return(DlpUtils.TryExecuteOperation <XmlException, XDocument, IEnumerable <string>, IEnumerable <QueryMatchResult> >(queryContext, (XDocument rulePackXDoc, IEnumerable <string> queriedRuleNames) => XmlProcessingUtils.GetMatchingRulesByName(rulePackXDoc, queriedRuleNames, NameMatchingOptions.InvariantNameOrLocalizedNameMatch, true), queryContext.CurrentRuleCollectionXDoc, queriedNames, out nameMatchResultsFromCurrentRulePack)); }