Ejemplo n.º 1
0
        /// <summary>
        /// 绑定Grid数据
        /// </summary>
        private void BindTreeList()
        {
            treeList1.Nodes.Clear();
            StructureRule rule = new StructureRule();
            //DataTable dt =rule.RShow(" ORDER BY ParentID,Code", ProcessTreeList.GetQueryField(treeList1));
            DataTable dt = SysUtils.Fill("EXEC USP1_Data_Stucture_Get");

            ProcessTreeList.BindTreeList(dt, treeList1, "ID", "ParentID", 7, true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtCode.Text.Trim() == "")
                {
                    this.ShowMessage("请输入编码");
                    txtCode.Focus();
                    return;
                }

                if (txtName.Text.Trim() == "")
                {
                    this.ShowMessage("请输入名称");
                    txtName.Focus();
                    return;
                }
                StructureRule rule   = new StructureRule();
                Structure     entity = new Structure();
                if (m_StructureID > 0)
                {
                    entity.ID = m_StructureID;
                    entity.SelectByID();
                }
                entity.Code = txtCode.Text.Trim();
                entity.Name = txtName.Text.Trim();
                switch (m_StructureTypeID)
                {
                case 1:
                    rule.RAdd(entity);
                    StructureID = entity.ID;
                    break;

                case 2:
                    entity.ParentID = m_ParentID;
                    rule.RAdd(entity);
                    StructureID = entity.ID;
                    break;

                case 3:
                    rule.RUpdate(entity);
                    break;
                }
                this.ShowInfoMessage("设置成功!");
                this.Close();
            }
            catch (Exception E)
            {
                this.ShowMessage(E.Message);
            }
        }
Ejemplo n.º 3
0
        public BaseStructure GetStructures(CodeBlock block, out ParseError error)
        {
            StructureRule rule = Rules.Find(p => p.Target == block.ParentDirective.Target);

            if (!rule.AllowedInnerInstructions && block.RawLines.Count != 0)
            {
                error = new ParseError(ParseErrorType.Directives_InnerInstructionsAreNotAllowed,
                                       block.ParentDirective.LineIndex, block.ParentDirective.FileName);
                return(null);
            }

            AccessModifier       accessModifier = AccessModifier.Default;
            List <Modifier>      modifiers      = new List <Modifier>();
            List <BaseStructure> childs         = null;

            if (block.ParentDirective.Parameters != null)
            {
                foreach (var modifier in block.ParentDirective.Parameters)
                {
                    var modifierParts = modifier.Split(':');

                    var modifierName  = modifierParts[0];
                    var modifierValue = string.Join(":", modifierParts.Skip(1));

                    Modifier Modifier = rule.Modifiers.Find(p => p.Name == modifierName);

                    if (Modifier == null && !AccessModifiers.Contains(modifier))
                    {
                        error = new ParseError(ParseErrorType.Directives_UnknownModifier,
                                               block.ParentDirective.LineIndex, block.ParentDirective.FileName);
                        return(null);
                    }

                    if (AccessModifiers.Contains(modifier))
                    {
                        if (rule.AvailableAccsessModifiersStrings.Contains(modifier))
                        {
                            accessModifier = rule.AvailableAccsessModifiers.Find(
                                p => p.ToString().ToLower() == modifier);
                        }
                        else
                        {
                            error = new ParseError(ParseErrorType.Directives_NotAllowedAccessModifier,
                                                   block.ParentDirective.LineIndex, block.ParentDirective.FileName);
                            return(null);
                        }

                        continue;
                    }

                    if (Modifier.ValueRequired && string.IsNullOrEmpty(modifierValue))
                    {
                        error = new ParseError(ParseErrorType.Directives_ModifierValueRequired,
                                               block.ParentDirective.LineIndex, block.ParentDirective.FileName);
                        return(null);
                    }

                    modifiers.Add(new Modifier(Modifier, modifierValue));
                }
            }

            if (!rule.Modifiers.FindAll(p => p.IsRequired).All(p => modifiers.Exists(j => j.Name == p.Name)))
            {
                error = new ParseError(ParseErrorType.Directives_SomeRequiredModifiersAreMissing,
                                       block.ParentDirective.LineIndex, block.ParentDirective.FileName);
                return(null);
            }

            childs = new List <BaseStructure>();
            foreach (var child in block.ChildBlocks)
            {
                if (!rule.AllowedChilds.Contains(child.ParentDirective.Target))
                {
                    error = new ParseError(ParseErrorType.Directives_WrongChildTarget,
                                           child.ParentDirective.LineIndex, child.ParentDirective.FileName);
                    return(null);
                }

                childs.Add(GetStructures(child, out error));
                if (error != null)
                {
                    return(null);
                }
            }

            error = null;
            return(new BaseStructure()
            {
                Name = block.ParentDirective.Name,
                AccessModifier = accessModifier,
                Modifiers = modifiers,
                Childs = childs,
                RawLines = block.RawLines,
                Target = rule.Target,
                Directive = block.ParentDirective
            }.Cast());
        }