internal static IEnumerable <PsComplianceRulePredicateBase> ConvertEngineConditionToTaskConditions(Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition condition) { List <PsComplianceRulePredicateBase> list = new List <PsComplianceRulePredicateBase>(); QueryPredicate queryPredicate = condition as QueryPredicate; if (queryPredicate != null) { AndCondition andCondition = queryPredicate.SubCondition as AndCondition; if (andCondition == null) { return(list); } using (List <Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition> .Enumerator enumerator = andCondition.SubConditions.GetEnumerator()) { while (enumerator.MoveNext()) { Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition condition2 = enumerator.Current; list.AddRange(PsHoldRule.ConvertEngineConditionToTaskConditions(condition2)); } return(list); } } if (condition is PredicateCondition) { PredicateCondition predicate = condition as PredicateCondition; list.Add(PsComplianceRulePredicateBase.FromEnginePredicate(predicate)); } else if (!(condition is TrueCondition)) { throw new UnexpectedConditionOrActionDetectedException(); } return(list); }
internal override void PopulateTaskProperties(Task task, IConfigurationSession configurationSession) { base.PopulateTaskProperties(task, configurationSession); if (!string.IsNullOrEmpty(base.RuleBlob)) { PolicyRule policyRuleFromRuleBlob = this.GetPolicyRuleFromRuleBlob(); if (policyRuleFromRuleBlob.IsTooAdvancedToParse) { base.ReadOnly = true; } else { this.SetTaskConditions(PsHoldRule.ConvertEngineConditionToTaskConditions(policyRuleFromRuleBlob.Condition)); this.SetTaskActions(PsHoldRule.ConvertEngineActionsToTaskActions(policyRuleFromRuleBlob.Actions)); } base.ResetChangeTracking(); } }