public void Add(long projectId, string name, string query) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } if (string.IsNullOrEmpty(query)) { throw new ArgumentNullException(nameof(query)); } if (_policyRuleRepository.Get(projectId, name).Any()) { return; } var policy = new PolicyRules { Added = _timeService.GetUtc(), Name = name, ProjectId = projectId, Query = query }; _policyRuleRepository.Insert(policy); _policyRuleRepository.Save(); }
void init() { PolicyRules = new PolicyRules(); RuleCommands = new List <DataGridCommandViewModel> { CommandHelper.GetControlCommands(this, appController, new List <int> { (int)ActionType.AddRule }).FirstOrDefault() }; }
public PolicyRule([NotNull] PolicyRuleExpr expression, [NotNull] PolicyRules rule) { if (expression == null) { throw new ArgumentNullException(nameof(expression)); } if (rule == null) { throw new ArgumentNullException(nameof(rule)); } Expression = expression; Rule = rule; }
public static XElement Create(DeployObject deploy, Component component) { HpsdPolicy hpsdPolicy = new HpsdPolicy(); // We can assume that there is only one System in the deploy doc DeploySystem system = deploy.Systems[0]; // PolicyIdentification <--> ConfigMgmt PolicyIdentification polID = new PolicyIdentification { PolicyName = system.FederateName, PolicyVersion = ConfigMgmt.VersionToString(deploy.ConfigMgmt.CurrentVersion), CreatedDate = deploy.ConfigMgmt.Created.date, ModifiedDate = deploy.ConfigMgmt.Changed[deploy.ConfigMgmt.Changed.Count - 1].date, Status = deploy.ConfigMgmt.DocReference.ToString(), Description = deploy.ConfigMgmt.Description }; // No POC information hpsdPolicy.PolicyIdentification = polID; // ======================================= // FomInformation <--> Federation, Extensions FomInformation fominfo = new FomInformation(); // List of fomModule in Federation module ModuleFederation fedModule = (ModuleFederation)findModule(component.Modules, Enums.ModuleType.federation); foreach (string file in fedModule.RTI.FomFile) { fominfo.FomModule.Add(file); } // InstanceIdAttributes are a Vendor extension ModuleExtension extModule = (ModuleExtension)findModule(component.Modules, Enums.ModuleType.extension); if (extModule.VendorName != "Pitch Technologies") { throw new ApplicationException("Pitch Technologies vendor extensions not found"); } foreach (KeyValuePair <string, string> p in extModule.Parameters) { // General format key = <identifier>:<parameterName> // we expect: key = instanceIdAttribute:<fully qualified attribute> string[] sa1 = p.Key.Split(':'); if (sa1[0] == "instanceIdAttribute") { string attribName = sa1[1].Split('.').Last(); string objclass = sa1[1].Substring(0, sa1[1].Length - (attribName.Length + 1)); // trailing '.' string encoding = p.Value; InstanceId instId = new InstanceId { ObjectClass = objclass, Attribute_Name = attribName, Attribute_Encoding = encoding }; fominfo.InstanceID.Add(instId); } } hpsdPolicy.FomInformation = fominfo; // ===================================================================================== // Federates <---> Export module Federates feds = new Federates(); // List of federates in Export module ModuleExport expModule = (ModuleExport)findModule(component.Modules, Enums.ModuleType.export); foreach (Source source in expModule.Sources) { feds.Federate.Add(source.FederateName); } hpsdPolicy.Federates = feds; // ===================================================================================== // PolicyRules <----> Export/Import module // Hack // Create an HlaObject tree to use when defining attribute lists StringReader ms = new StringReader(Properties.Resources.HLAfeatures); HlaObjectNode hlaObjectTree = TreeReader.CreateTree(ms); PolicyRules rules = new PolicyRules(); int ruleNumber = 0; if (component.ComponentName.ToUpper().Contains("HIGH")) { // Status message - session name = federateName SessionStatusReleaseRule sess = new SessionStatusReleaseRule { Condition_SessionName = system.FederateName, RuleName = ruleNumber++.ToString() }; rules.SessionStatus.Add(sess); // Object update/create foreach (Source source in expModule.Sources) { string federateName = source.FederateName; string entityID = ""; if (source.SourceType == Source.Type.Federate) { entityID = "*"; } else { entityID = source.EntityId; } foreach (HlaObject hlaObj in source.Objects) { ObjectReleaseReplaceRule obj = new ObjectReleaseReplaceRule() { Condition_ProducingFederate = federateName, Condition_InstanceID = entityID, RuleName = ruleNumber++.ToString(), Condition_ObjectClass = hlaObj.ObjectClassName.NoHlaRoot() }; // Hack if no attribs listed add all attribs from the TreeReader if (hlaObj.Attributes.Count == 0) { List <string> theworks = TreeReader.FindAttributes(hlaObjectTree, hlaObj.ObjectClassName); foreach (string attrib in theworks) { obj.Release_Attribute.Add(attrib); } rules.ObjectRelease.Add(obj); } else // Hack - read attributes from the object and add them; de-duplicate { List <string> temp = new List <string>(); foreach (HlaAttribute attrib in hlaObj.Attributes) { temp.Add(attrib.AttributeName); } obj.Release_Attribute = temp.Distinct().ToList(); rules.ObjectRelease.Add(obj); } } foreach (HlaInteraction hlaInt in source.Interactions) { InteractionReleaseReplaceRule intr = new InteractionReleaseReplaceRule() { Condition_ProducingFederate = federateName, RuleName = ruleNumber++.ToString(), Condition_InteractionClass = hlaInt.InteractionClassName.NoHlaRoot() }; List <string> temp = new List <string>(); foreach (HlaParameter para in hlaInt.Parameters) { temp.Add(para.ParameterName); } intr.Release_Parameter = temp.Distinct().ToList(); rules.InteractionRelease.Add(intr); } } } else { ModuleImport impModule = (ModuleImport)findModule(component.Modules, Enums.ModuleType.import); foreach (HlaObject hlaObj in impModule.Objects) { ObjectReleaseReplaceRule obj = new ObjectReleaseReplaceRule() { Condition_ProducingFederate = "*", Condition_InstanceID = "*", RuleName = ruleNumber++.ToString(), Condition_ObjectClass = hlaObj.ObjectClassName.NoHlaRoot() }; List <string> temp = new List <string>(); foreach (HlaAttribute attrib in hlaObj.Attributes) { temp.Add(attrib.AttributeName); } obj.Release_Attribute = temp.Distinct().ToList(); rules.ObjectRelease.Add(obj); } foreach (HlaInteraction hlaInt in impModule.Interactions) { InteractionReleaseReplaceRule intr = new InteractionReleaseReplaceRule() { Condition_ProducingFederate = "*", RuleName = ruleNumber++.ToString(), Condition_InteractionClass = hlaInt.InteractionClassName.NoHlaRoot() }; List <string> temp = new List <string>(); foreach (HlaParameter para in hlaInt.Parameters) { temp.Add(para.ParameterName); } intr.Release_Parameter = temp.Distinct().ToList(); rules.InteractionRelease.Add(intr); } } hpsdPolicy.PolicyRules = rules; return(hpsdPolicy.ToHPSD()); }
public IPolicyRule ParsePolicyRule(PolicyRules rule) { var expr = _dslParser.PolicyRuleExprParse(rule.Query); return(new PolicyRule(expr, rule)); }