private CodeMemberMethod ResetChartControls()
        {
            CodeMemberMethod ResetChartControls = null;

            try
            {
                ResetChartControls = new CodeMemberMethod
                {
                    Name       = "ResetChartControls",
                    Attributes = MemberAttributes.Public | MemberAttributes.Final,
                    ReturnType = new CodeTypeReference(typeof(bool)),
                };

                CodeParameterDeclarationExpression parameter = new CodeParameterDeclarationExpression();
                parameter.Name      = "cContextItemsChart";
                parameter.Type      = new CodeTypeReference(typeof(Dictionary <String, Object>));
                parameter.Direction = FieldDirection.Ref;

                ResetChartControls.Parameters.Add(parameter);

                CodeTryCatchFinallyStatement tryBlock = new CodeTryCatchFinallyStatement();
                foreach (string sChartName in _ilbo.Charts.Select(c => c.Name).Distinct())
                {
                    CodeConditionStatement ifKeyExists = IfCondition();
                    ifKeyExists.Condition = BinaryOpertorExpression(MethodInvocationExp(MethodInvocationExp(VariableReferenceExp("cContextItemsChart"), "ContainsKey").AddParameter(PrimitiveExpression(string.Format("ICT_ILBO_CHART_{0}", sChartName))), "ToString"), CodeBinaryOperatorType.IdentityEquality, PrimitiveExpression("True"));
                    ifKeyExists.TrueStatements.Add(MethodInvocationExp(VariableReferenceExp("cContextItemsChart"), "Remove").AddParameter(PrimitiveExpression(string.Format("ICT_ILBO_CHART_{0}", sChartName))));
                    tryBlock.AddStatement(ifKeyExists);
                }
                tryBlock.AddStatement(ReturnExpression(PrimitiveExpression(true)));

                CodeCatchClause catchBlock = AddCatchBlock(tryBlock, "e");
                catchBlock.AddStatement(MethodInvocationExp(TypeReferenceExp("Trace"), "WriteLineIf").AddParameters(new CodeExpression[] { PrimitiveExpression(false), PrimitiveExpression("ResetChartControls"), MethodInvocationExp(GetProperty("e", "Message"), "ToString") }));

                ResetChartControls.AddStatement(tryBlock);

                ResetChartControls.AddStatement(ReturnExpression(PrimitiveExpression(false)));

                return(ResetChartControls);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("ResetChartControls->{0}", ex.InnerException != null ? ex.InnerException.Message : ex.Message));
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private CodeMemberMethod Set_DefaultNodeConfig_Tree()
        {
            CodeMemberMethod           Set_DefaultNodeConfig_Tree = null;
            CodeMethodInvokeExpression MethodInvokation           = null;

            try
            {
                Set_DefaultNodeConfig_Tree = new CodeMemberMethod
                {
                    Name       = "Set_DefaultNodeConfig_Tree",
                    Attributes = MemberAttributes.Public | MemberAttributes.Final,
                    ReturnType = new CodeTypeReference(typeof(Object))
                };

                //try block
                CodeTryCatchFinallyStatement tryblock = AddTryBlock(Set_DefaultNodeConfig_Tree);

                IEnumerable <IGrouping <string, Tree> > treeGroups = _ilbo.Trees.GroupBy(t => t.Name);

                foreach (IGrouping <string, Tree> treeGrp in treeGroups)
                {
                    Tree tree = treeGrp.First();

                    foreach (TreeInfo treeinfo in tree.Info)
                    {
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.OpenImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_openimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.NotExpandedImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_notexpandedimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.ExpandableImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_expandableimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.ExpandedImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_expandedimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.CloseImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_closeimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.CheckImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_checkimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.UnCheckImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "vwt_uncheckimage") }));
                        tryblock.AddStatement(MethodInvocationExp(TypeReferenceExp("oDefaultNTConfig"), "Add").AddParameters(new Object[] { Convert.ToString(treeinfo.PartialCheckImage), string.Format("{0}~~{1}~~{2}", tree.Name, treeinfo.NodeType, "chkbox_parial_chkimg") }));
                    }
                }

                tryblock.TryStatements.Add(ReturnExpression(SnippetExpression("null")));

                //catch block
                CodeCatchClause catchblock = AddCatchBlock(tryblock);

                MethodInvokation = MethodInvocationExp(TypeReferenceExp("Trace"), "WriteLineIf");
                AddParameters(MethodInvokation, new Object[] { PrimitiveExpression(false), PrimitiveExpression("Set_DefaultNodeConfig_Tree"), SnippetExpression("e.Message.ToString()") });
                catchblock.Statements.Add(MethodInvokation);

                catchblock.Statements.Add(ReturnExpression(SnippetExpression("null")));
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("GenerateTreeClass.Set_DefaultNodeConfig_Tree()->{0}", !object.Equals(ex.InnerException, null) ? ex.InnerException.Message : ex.Message));
            }
            return(Set_DefaultNodeConfig_Tree);
        }
        public override void AddMemberFunctions(ref CodeTypeDeclaration classObj)
        {
            foreach (Method method in this._brMethods)
            {
                CodeMemberMethod codeMemberMethod = new CodeMemberMethod
                {
                    Name       = string.Format("{0}Ex", method.Name.ToLower()),
                    Attributes = MemberAttributes.Public | MemberAttributes.Final,
                    ReturnType = new CodeTypeReference(typeof(long))
                };

                #region parameter addition
                if (method.AccessDatabase)
                {
                    codeMemberMethod.Parameters.Add(ParameterDeclarationExp(typeof(string), "szConnectionString"));
                    //if (_ecrOptions.InTD)
                    codeMemberMethod.Parameters.Add(ParameterDeclarationExp(typeof(string), "szInTD"));
                }
                foreach (Parameter param in method.Parameters.Where(p => p.Seg != null &&
                                                                    p.DI != null
                                                                    ).OrderBy(p => int.Parse(p.SequenceNo)))
                {
                    string sParamType = param.CategorizedDataType;
                    Object oParamtype = null;
                    switch (sParamType)
                    {
                    case DataType.INT:
                        oParamtype = typeof(long);
                        break;

                    case DataType.STRING:
                    case DataType.TIMESTAMP:
                    case DataType.VARBINARY:
                        oParamtype = typeof(string);
                        break;

                    case DataType.DOUBLE:
                        oParamtype = typeof(double);
                        break;

                    default:
                        oParamtype = typeof(string);
                        break;
                    }

                    CodeParameterDeclarationExpression parameter = new CodeParameterDeclarationExpression();
                    parameter.Name = param.Name;
                    parameter.Type = new CodeTypeReference((Type)oParamtype);
                    if (param.FlowDirection == FlowAttribute.OUT || param.FlowDirection == FlowAttribute.INOUT)
                    {
                        parameter.Direction = FieldDirection.Ref;
                    }
                    codeMemberMethod.Parameters.Add(parameter);
                }
                #endregion

                #region varibale declaration
                codeMemberMethod.AddStatement(DeclareVariable(typeof(SqlConnection), "con"));
                codeMemberMethod.AddStatement(DeclareVariable(typeof(SqlCommand), "command"));

                CodeTryCatchFinallyStatement tryBlock = AddTryBlock(codeMemberMethod);
                tryBlock.AddStatement(SnippetStatement("using(con = new SqlConnection())"));
                tryBlock.AddStatement(SnippetStatement("{"));
                tryBlock.AddStatement(SnippetStatement("using(command = new SqlCommand())"));
                tryBlock.AddStatement(SnippetStatement("{"));
                tryBlock.AddStatement(AssignVariable(GetProperty(VariableReferenceExp("con"), "ConnectionString"), VariableReferenceExp("szConnectionString")));
                tryBlock.AddStatement(MethodInvocationExp(VariableReferenceExp("con"), "Open"));
                tryBlock.AddStatement(AssignVariable(GetProperty(VariableReferenceExp("command"), "Connection"), VariableReferenceExp("con")));
                tryBlock.AddStatement(AssignVariable(GetProperty(VariableReferenceExp("command"), "CommandType"), GetProperty(VariableReferenceExp("CommandType"), "StoredProcedure")));
                tryBlock.AddStatement(AssignVariable(GetProperty(VariableReferenceExp("command"), "CommandText"), PrimitiveExpression(method.Name.ToLower() + "_sp")));


                foreach (Parameter param in method.Parameters.Where(p => p.Seg != null &&
                                                                    p.DI != null
                                                                    ).OrderBy(p => int.Parse(p.SequenceNo)))
                {
                    string sParamType = param.CategorizedDataType;
                    Object oParamtype = null;

                    CodeMethodInvokeExpression methodInvokation = MethodInvocationExp(GetProperty("command", "Parameters"), "Add");
                    methodInvokation.AddParameter(PrimitiveExpression(param.Name.ToLower()));

                    switch (sParamType)
                    {
                    case DataType.INT:
                        oParamtype = typeof(long);
                        methodInvokation.AddParameter(GetProperty(TypeReferenceExp(typeof(SqlDbType)), "Int"));
                        break;

                    case DataType.STRING:
                    case DataType.TIMESTAMP:
                    case DataType.VARBINARY:
                        oParamtype = typeof(string);
                        methodInvokation.AddParameter(GetProperty(TypeReferenceExp(typeof(SqlDbType)), "VarChar"));
                        break;

                    case DataType.DOUBLE:
                        oParamtype = typeof(double);
                        methodInvokation.AddParameter(GetProperty(TypeReferenceExp(typeof(SqlDbType)), "BigInt"));
                        break;

                    default:
                        oParamtype = typeof(string);
                        methodInvokation.AddParameter(GetProperty(TypeReferenceExp(typeof(SqlDbType)), "VarChar"));
                        break;
                    }
                    //tryBlock.AddStatement(AssignVariable(GetProperty(MethodInvocationExp(GetProperty(VariableReferenceExp("command"), "Parameters"), "Add").
                    //                                        AddParameters(new CodeExpression[] {    PrimitiveExpression(param.Name.ToLower()),
                    //                                                                                GetProperty(TypeReferenceExp(typeof(SqlDbType)),(oParamtype == typeof(long)) ?"Int":"VarChar")
                    //                                                                            }),
                    //                                        "Value"),
                    //                                     VariableReferenceExp(param.Name)));

                    tryBlock.AddStatement(AssignVariable(GetProperty(methodInvokation, "Value"), VariableReferenceExp(param.Name)));
                }
                if (_ecrOptions.InTD)
                {
                    tryBlock.AddStatement(AssignVariable(GetProperty(MethodInvocationExp(GetProperty("command", "Parameters"), "Add").AddParameters(new CodeExpression[] { PrimitiveExpression("intd"), GetProperty("SqlDbType", "Text") }), "Value"), VariableReferenceExp("szInTD")));
                }
                tryBlock.AddStatement(MethodInvocationExp(VariableReferenceExp("command"), "ExecuteNonQuery"));
                tryBlock.AddStatement(SnippetStatement("}"));
                tryBlock.AddStatement(SnippetStatement("}"));
                tryBlock.AddStatement(ReturnExpression(PrimitiveExpression(0)));

                #region catch and finally block
                tryBlock.AddCatch();
                tryBlock.FinallyStatements.Add(AssignVariable(VariableReferenceExp("con"), SnippetExpression("null")));
                tryBlock.FinallyStatements.Add(AssignVariable(VariableReferenceExp("command"), SnippetExpression("null")));
                #endregion

                codeMemberMethod.AddStatement(ReturnExpression(PrimitiveExpression(0)));
                #endregion

                classObj.Members.Add(codeMemberMethod);
            }
            //throw new NotImplementedException();
        }