示例#1
0
        private void loadPolicySet(int idx, string title, PolicyLinkEntity ple, XmlNode node)
        {
            ple.Policy.Set = true;

            loadPolicyBase(idx, title, ple.Policy, node);

            int policyCount    = 0;
            int policySetCount = 0;

            foreach (XmlNode kid in node.ChildNodes)
            {
                if (kid.LocalName != "policy" && kid.LocalName != "policy-set")
                {
                    continue;
                }

                PolicyLinkEntity pleKid = new PolicyLinkEntity();
                pleKid.Order            = policyCount + policySetCount;
                pleKid.Parent           = ple;
                pleKid.Policy           = new PolicyEntity();
                pleKid.Policy.LibraryId = ple.Policy.LibraryId;

                if (kid.NodeType == XmlNodeType.Element && kid.LocalName == "policy")
                {
                    loadPolicy(++policyCount, ple.Policy.Description, pleKid, kid);
                }
                else if (kid.NodeType == XmlNodeType.Element && kid.LocalName == "policy-set")
                {
                    loadPolicySet(++policySetCount, ple.Policy.Description, pleKid, kid);
                }
            }
        }
        /// <summary>Creates a new, empty PolicyLinkEntity object.</summary>
        /// <returns>A new, empty PolicyLinkEntity object.</returns>
        public override IEntity Create()
        {
            IEntity toReturn = new PolicyLinkEntity();

            // __LLBLGENPRO_USER_CODE_REGION_START CreateNewPolicyLink
            // __LLBLGENPRO_USER_CODE_REGION_END
            return(toReturn);
        }
示例#3
0
        static private void DeletePolicyDoc(PolicyDocumentEntity pde)
        {
            PolicyLinkEntity policyLink = pde.PolicyLink;

            pde.Delete();

            if (!policyLink.IsNew)
            {
                DeletePolicyLink(policyLink);
            }
        }
示例#4
0
        static private void DeletePolicyLink(PolicyLinkEntity ple)
        {
            foreach (PolicyLinkEntity child in ple.Children)
            {
                DeletePolicyLink(child);
            }

            PolicyEntity delPolicy = ple.Policy;

            ple.Delete();

            DeletePolicy(delPolicy);
        }
示例#5
0
        private void loadPolicy(int idx, string title, PolicyLinkEntity ple, XmlNode node)
        {
            loadPolicyBase(idx, title, ple.Policy, node);

            XmlNodeList rules   = node.SelectNodes("rule");
            int         ruleIdx = 0;

            foreach (XmlNode rule in rules)
            {
                loadRule(ruleIdx, ple.Policy, rule);
                ruleIdx++;
            }
        }
示例#6
0
        private PolicyDocumentEntity importFile(baseData vData, string title, string filepath)
        {
            AttributeCollection acoll = new AttributeCollection();

            acoll.GetMulti(AttributeFields.Name == "Literal");
            if (acoll.Count == 0)
            {
                throw new Exception("can't find literal attribute");
            }
            m_literalAttribute = acoll[0];

            XmlDocument doc = new XmlDocument();

            doc.Load(filepath);

            PolicyDocumentEntity pde = new PolicyDocumentEntity();

            pde.LibraryId = vData.Library.Id;
            pde.Name      = title;

            PolicyLinkEntity ple = new PolicyLinkEntity();

            ple.Policy           = new PolicyEntity();
            ple.Policy.LibraryId = pde.LibraryId;
            pde.PolicyLink       = ple;

            XmlNode policySet = doc.SelectSingleNode("policy-set");

            if (policySet != null)
            {
                loadPolicySet(1, title, ple, policySet);
            }
            else
            {
                XmlNode policy = doc.SelectSingleNode("policy");
                loadPolicy(1, title, ple, policy);
            }

            pde.Save(true);

            return(pde);
        }
示例#7
0
        public ActionResult PolicyOrder(policyData vData, int id, FormCollection collection)
        {
            PolicyLinkEntity     policyLink = new PolicyLinkEntity(id);
            PolicyLinkCollection coll       = new PolicyLinkCollection();

            PredicateExpression pe = new PredicateExpression(PolicyLinkFields.Id != policyLink.Id);

            pe.Add(PolicyLinkFields.ParentId == policyLink.ParentId);
            SortExpression se = null;

            if (collection["up"] != null)
            {
                // Find all categories with display index less than ours.
                pe.Add(PolicyLinkFields.Order <= policyLink.Order);

                // Order by display index, highest first.
                se = new SortExpression(PolicyLinkFields.Order | SortOperator.Descending);
            }
            else
            {
                // Find all categories with display index greater than ours.
                pe.Add(PolicyLinkFields.Order >= policyLink.Order);

                // Order by display index, lowest first.
                se = new SortExpression(PolicyLinkFields.Order | SortOperator.Ascending);
            }

            // Swap with closest one.
            if (coll.GetMulti(pe, 1, se) && coll.Count > 0)
            {
                int temp = coll[0].Order;
                coll[0].Order    = policyLink.Order;
                policyLink.Order = temp;

                policyLink.Save();
                coll.SaveMulti();
            }

            return(RedirectToAction("EditPolicySet", new { id = policyLink.ParentId }));
        }
        private void generate(StringBuilder sb, PolicyLinkEntity policyLink)
        {
            newLine(sb);

            if (policyLink.Policy.Set)
            {
                sb.AppendFormat("<policy-set combine=\"{0}\" id=\"{1}\">", policyLink.Policy.CombineMode.Name, policyLink.Policy.Uid.ToString());
                generate(sb, policyLink.Policy.Target);

                policyLink.Children.Sort(PolicyLinkFields.Order.FieldIndex, System.ComponentModel.ListSortDirection.Ascending);
                foreach (PolicyLinkEntity ple in policyLink.Children)
                {
                    m_indent++;
                    generate(sb, ple);
                    m_indent--;
                }

                newLine(sb);
                sb.Append("</policy-set>");
            }
            else
            {
                sb.AppendFormat("<policy combine=\"{0}\" id=\"{1}\" description=\"{2}\">", policyLink.Policy.CombineMode.Name, policyLink.Policy.Uid.ToString(), HttpUtility.HtmlAttributeEncode(policyLink.Policy.Description));
                generate(sb, policyLink.Policy.Target);

                policyLink.Policy.Rule.Sort(RuleFields.Order.FieldIndex, System.ComponentModel.ListSortDirection.Ascending);
                foreach (RuleEntity re in policyLink.Policy.Rule)
                {
                    m_indent++;
                    generate(sb, re);
                    m_indent--;
                }

                newLine(sb);
                sb.Append("</policy>");
            }
        }