Example #1
0
        //public void VisitMethodStart(DB_Type type, DB_Member member)
        //{
        //    //throw new NotImplementedException();
        //}

        //public void VisitMethodEnd(DB_Type type, DB_Member member)
        //{
        //    //throw new NotImplementedException();
        //}

        public void VisitType(DB_Type type)
        {
            foreach (var m in type.members.Values)
            {
                model.AcceptMemberVisitor(this, type, m);
            }
        }
Example #2
0
 public void VisitStatement(DB_Type type, DB_Member member, DB_ReturnStatementSyntax statement, DB_StatementSyntax outer)
 {
     if (statement.Expression != null)
     {
         model.VisitExp(this, type, member, statement, statement.Expression, null);
     }
 }
Example #3
0
 public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, IndifierExp exp, Exp outer)
 {
     Model.IndifierInfo info = model.GetIndifierInfo(exp.Name);
     if (info.type != null)
     {
         typeRef.Add(info.type.GetRefType());
     }
 }
Example #4
0
 public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, ElementAccessExp exp, Exp outer)
 {
     model.VisitExp(this, type, member, statement, exp.exp, exp);
     foreach (var e in exp.args)
     {
         model.VisitExp(this, type, member, statement, e, exp);
     }
 }
Example #5
0
 void VisitDeclareVairable(DB_Type type, DB_Member method, DB_StatementSyntax statement, VariableDeclarationSyntax Declaration)
 {
     foreach (var e in Declaration.Variables)
     {
         model.AddLocal(e.Identifier, model.Finder.FindType(Declaration.Type, model));
         model.VisitExp(this, type, method, statement, e.Initializer, null);
     }
 }
Example #6
0
        public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, ObjectCreateExp exp, Exp outer)
        {
            typeRef.Add(exp.Type);

            foreach (var a in exp.Args)
            {
                model.VisitExp(this, type, member, statement, a, exp);
            }
        }
Example #7
0
 public void VisitStatement(DB_Type type, DB_Member member, DB_BlockSyntax statement, DB_StatementSyntax outer)
 {
     model.EnterBlock();
     foreach (var s in statement.List)
     {
         model.VisitStatement(this, type, member, s, statement);
     }
     model.LeaveBlock();
 }
Example #8
0
 public void VisitStatement(DB_Type type, DB_Member member, DB_IfStatementSyntax statement, DB_StatementSyntax outer)
 {
     model.VisitExp(this, type, member, statement, statement.Condition, null);
     model.VisitStatement(this, type, member, statement.Statement, statement);
     if (statement.Else != null)
     {
         model.VisitStatement(this, type, member, statement.Else, statement);
     }
 }
Example #9
0
 public void VisitMember(DB_Type type, DB_Member member)
 {
     if (member.member_type == (int)Metadata.MemberTypes.Method)
     {
         if (member.method_body != null)
         {
             model.VisitStatement(this, type, member, member.method_body, null);
         }
     }
 }
Example #10
0
 public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, IndifierExp exp, Exp outer)
 {
     Model.IndifierInfo info = model.GetIndifierInfo(exp.Name);
     if (info.is_class_type_parameter)
     {
         Console.Error.Write("未处理的类型参数标识符 " + exp.Name);
     }
     //if (info.type != null)
     //    typeRef.Add(info.type.GetRefType());
 }
Example #11
0
        void VisitType(DB_Type type, ITypeVisitor visitor)
        {
            StartUsing(type.usingNamespace);
            EnterNamespace(type._namespace);
            EnterType(type);

            visitor.VisitType(type);

            LeaveType();
            LeaveNamespace();
            ClearUsing();
        }
        public NNTP_API(string dataPath)
        {
            m_DataPath      = dataPath;

            DataSet dsTmp = new DataSet();
            dsTmp.ReadXml(dataPath + "Settings.xml");

            DataRow dr = dsTmp.Tables["Settings"].Rows[0];
            m_NNTPStorePath = dr["NNTPRoot"].ToString();
            m_ConStr        = dr["ConnectionString"].ToString();
            m_DB_Type       = (DB_Type)Enum.Parse(typeof(DB_Type),dr["DataBaseType"].ToString());
        }
Example #13
0
        //public IMethodVisitor GetMethodVisitor() { return this; }

        //public void VisitStatement(DB_Type type, DB_Member member, DB_BreakStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_BlockSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    EnterBlock();
        //    foreach (var s in statement.List)
        //    {
        //        VisitStatement(type, member,s, statement);
        //    }
        //    LeaveBlock();
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_DoStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    DB_DoStatementSyntax ss = statement as DB_DoStatementSyntax;
        //    VisitExp(type, member, statement, ss.Condition,null);
        //    VisitStatement(type, member, ss.Statement,ss);
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_ExpressionStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    VisitExp(type, member, statement, statement.Exp, null);
        //}


        //void VisitDeclareVairable(DB_Type type, DB_Member method, DB_StatementSyntax statement, VariableDeclarationSyntax Declaration)
        //{
        //    foreach (var e in Declaration.Variables)
        //    {
        //        AddLocal(e.Identifier, Finder.FindType(Declaration.Type));
        //        VisitExp(type, method, statement, e.Initializer,null);
        //    }
        //}

        //public void VisitStatement(DB_Type type, DB_Member member, DB_ForStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    EnterBlock();
        //    DB_ForStatementSyntax ss = statement as DB_ForStatementSyntax;
        //    if (ss.Declaration != null)
        //    {
        //        VisitDeclareVairable(type, member, statement, ss.Declaration);
        //    }
        //    VisitExp(type, member, statement, ss.Condition,null);
        //    foreach (var inc in ss.Incrementors)
        //        VisitExp(type, member, statement, inc,null);

        //    VisitStatement(type, member, ss.Statement,statement);

        //    LeaveBlock();
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_IfStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    DB_IfStatementSyntax ss = statement as DB_IfStatementSyntax;
        //    VisitExp(type, member, statement, ss.Condition,null);
        //    VisitStatement(type, member, ss.Statement,ss);
        //    if (ss.Else != null)
        //    {
        //        VisitStatement(type, member, ss.Else,ss);
        //    }
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_LocalDeclarationStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    DB_LocalDeclarationStatementSyntax ss = statement as DB_LocalDeclarationStatementSyntax;
        //    VisitDeclareVairable(type, member, statement, ss.Declaration);
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_ReturnStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    DB_ReturnStatementSyntax ss = statement as DB_ReturnStatementSyntax;
        //    if (ss.Expression != null)
        //    {
        //        VisitExp(type, member, ss, ss.Expression,null);
        //    }
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_SwitchStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    VisitExp(type, member, statement, statement.Expression,null);
        //    EnterBlock();
        //    foreach (var sec in statement.Sections)
        //    {
        //        foreach (var l in sec.Labels)
        //        {
        //            VisitExp(type, member, statement, l,null);
        //        }
        //        foreach (var s in sec.Statements)
        //        {
        //            VisitStatement(type, member, s, statement);
        //        }
        //    }
        //    LeaveBlock();
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_ThrowStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    VisitExp(type, member, statement, statement.Expression,null);
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_TryStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    DB_TryStatementSyntax ss = statement as DB_TryStatementSyntax;
        //    VisitStatement(type, member, ss.Block,statement);
        //    foreach (var c in ss.Catches)
        //    {
        //        VisitStatement(type, member, c.Block, statement);
        //    }
        //    if (ss.Finally != null)
        //        VisitStatement(type, member, ss.Finally.Block, statement);
        //}
        //public void VisitStatement(DB_Type type, DB_Member member, DB_WhileStatementSyntax statement, DB_StatementSyntax outer)
        //{
        //    methodVisitor.VisitStatement(type, member, statement, outer);
        //    VisitExp(type, member, statement, statement.Condition,null);
        //    VisitStatement(type, member, statement.Statement, statement);
        //}

        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.AssignmentExpressionSyntax exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.BaseExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.BinaryExpressionSyntax exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.ConstExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.FieldExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.MethodExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);

        //    VisitExp(type, member, statement, exp.Caller,exp);
        //    List<DB_Type> argTypes = new List<DB_Type>();
        //    foreach (var a in exp.Args)
        //    {
        //        VisitExp(type, member, statement, a,null);
        //    }
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.ObjectCreateExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);

        //    foreach (var a in exp.Args)
        //    {
        //        VisitExp(type, member, statement, a, exp);
        //    }

        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.ParenthesizedExpressionSyntax exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.PostfixUnaryExpressionSyntax exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.PrefixUnaryExpressionSyntax exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.ThisExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}
        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.ThrowExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}

        //public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, Expression.IndifierExp exp, Expression.Exp outer)
        //{
        //    methodVisitor.VisitExp(type, member, statement, exp, outer);
        //}

        public void VisitStatement(IMethodVisitor visitor, DB_Type type, DB_Member method, DB_StatementSyntax statement, DB_StatementSyntax outer)
        {
            if (statement is DB_BlockSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_BlockSyntax, outer);
            }
            else if (statement is DB_IfStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_IfStatementSyntax, outer);
            }
            else if (statement is DB_ForStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_ForStatementSyntax, outer);
            }
            else if (statement is DB_LocalDeclarationStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_LocalDeclarationStatementSyntax, outer);
            }
            else if (statement is DB_DoStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_DoStatementSyntax, outer);
            }
            else if (statement is DB_ExpressionStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_ExpressionStatementSyntax, outer);
            }
            else if (statement is DB_SwitchStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_SwitchStatementSyntax, outer);
            }
            else if (statement is DB_WhileStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_WhileStatementSyntax, outer);
            }
            else if (statement is DB_TryStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_TryStatementSyntax, outer);
            }
            else if (statement is DB_ThrowStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_ThrowStatementSyntax, outer);
            }
            else if (statement is DB_ReturnStatementSyntax)
            {
                visitor.VisitStatement(type, method, statement as DB_ReturnStatementSyntax, outer);
            }
            else
            {
                throw new NotSupportedException("不支持的语句 " + statement.GetType().Name);
            }
        }
Example #14
0
 public void VisitType(DB_Type type)
 {
     if (!type.base_type.IsVoid)
     {
         result.Add(type.base_type);
     }
     foreach (var i in type.interfaces)
     {
         result.Add(i);
     }
     foreach (var m in type.members.Values)
     {
         model.AcceptMemberVisitor(this, type, m);
     }
 }
Example #15
0
 public void VisitStatement(DB_Type type, DB_Member member, DB_TryStatementSyntax statement, DB_StatementSyntax outer)
 {
     foreach (var c in statement.Catches)
     {
         typeRef.Add(c.Type);
     }
     foreach (var c in statement.Catches)
     {
         model.VisitStatement(this, type, member, c.Block, statement);
     }
     if (statement.Finally != null)
     {
         model.VisitStatement(this, type, member, statement.Finally.Block, statement);
     }
 }
Example #16
0
 public void VisitStatement(DB_Type type, DB_Member member, DB_SwitchStatementSyntax statement, DB_StatementSyntax outer)
 {
     model.VisitExp(this, type, member, statement, statement.Expression, null);
     foreach (var sec in statement.Sections)
     {
         foreach (var l in sec.Labels)
         {
             model.VisitExp(this, type, member, statement, l, null);
         }
         foreach (var s in sec.Statements)
         {
             model.VisitStatement(this, type, member, s, statement);
         }
     }
 }
Example #17
0
        public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, MethodExp exp, Exp outer)
        {
            foreach (var a in exp.Args)
            {
                model.VisitExp(this, type, member, statement, a, exp);
            }
            if (exp.Caller is IndifierExp)
            {
            }
            else
            {
                model.VisitExp(this, type, member, statement, exp.Caller, exp);
            }

            //DB_Type returnType = model.GetExpType(exp);
            //if (returnType != null)
            //    typeRef.Add(returnType.GetRefType());
        }
Example #18
0
        //public IMemberVisitor GetMemberVisitor() { return this; }

        public void AcceptMemberVisitor(IMemberVisitor visitor, DB_Type type, DB_Member member)
        {
            IMemberVisitor memberVisitor = visitor;

            if (memberVisitor != null)
            {
                if (member.member_type == (int)MemberTypes.Method)
                {
                    EnterMethod(member);
                    memberVisitor.VisitMember(type, member);
                    LeaveMethod();
                }
                else
                {
                    memberVisitor.VisitMember(type, member);
                }
            }
        }
Example #19
0
        /// <summary>
        /// Exporting a SQL server database table to the local CSV file.
        /// </summary>
        public void MakeAddressbookCSVsample(DB_Type db_type)
        {
            cDatabase sqlDB = new cDatabase(db_type);

            try
            {
                sqlDB.OpenConnection();

                Console.WriteLine("Connection opened");

                sqlDB.Table2Csv(@"Data/CSV/addressbook v4.csv", "addressbook_v4", true);
                Console.WriteLine("The file addressbook v4.csv was created.");
            }
            catch (Exception ex) { Console.WriteLine("Making of a addressbook csv file failed!.. " + ex.Message); }
            finally
            {
                sqlDB.CloseConnection();
            }
        }
        /// <summary>
        /// Uploading CSV file to the SQL server database table.
        /// </summary>
        public void UploadCsvToOrders(DB_Type db_type)
        {
            cDatabase sqlDB = new cDatabase(db_type);

            try
            {
                sqlDB.OpenConnection();

                Console.WriteLine("Connection opened");

                sqlDB.Csv2Table(@"Data/CSV/orders 1000 with order id.csv", "orders", "order_id", 10, true);

                Console.WriteLine("The orders CSV file was uploaded to the SQL server.");
            }
            catch (Exception ex) { Console.WriteLine("Uploading of the CSV file to the SQL server failed!.. " + ex.Message); }
            finally
            {
                sqlDB.CloseConnection();
            }
        }
        /// <summary>
        /// Uploading JSON orders file to the SQL server's database table.
        /// </summary>
        public void UploadOrdersJSONtoSQL(DB_Type db_type)
        {
            cDatabase sqlDB = new cDatabase(db_type);

            try
            {
                sqlDB.OpenConnection();

                Console.WriteLine("Connection opened");

                sqlDB.Json2Table(@"Data/JSON/get orders RESPONSE.json", "orders", "id", R4M_DataType.Order);

                Console.WriteLine("The JSON file was uploaded to the SQL server.");
            }
            catch (Exception ex) { Console.WriteLine("Uploading of the JSON file to the SQL server failed!.. " + ex.Message); }
            finally
            {
                sqlDB.CloseConnection();
            }
        }
        /// <summary>
        /// Uploading CSV file to the SQL server's database table.
        /// </summary>
        public void UploadCsvToAddressbookV4(DB_Type db_type)
        {
            cDatabase sqlDB = new cDatabase(db_type);

            try
            {
                sqlDB.OpenConnection();

                Console.WriteLine("Connection opened");

                sqlDB.Csv2Table(@"Data/CSV/Route4Me Address Book 03-09-2017.csv", "addressbook_v4", "id", 33, true);

                Console.WriteLine("The file orders.csv was uploaded to the SQL server.");
            }
            catch (Exception ex) { Console.WriteLine("Uploading of the CSV file to the SQL server failed!.. " + ex.Message); }
            finally
            {
                sqlDB.CloseConnection();
            }
        }
        public cDatabase(DB_Type db_type)
        {
            switch (db_type)
            {
            case DB_Type.MySQL:
                _conStngInstitute = ConfigurationManager.ConnectionStrings["conMySQL"];
                break;

            case DB_Type.MSSQL:
                _conStngInstitute = ConfigurationManager.ConnectionStrings["conMSSQL"];
                break;

            case DB_Type.SQLCE:
                _conStngInstitute = ConfigurationManager.ConnectionStrings["conSQLCE"];
                break;

            case DB_Type.PostgreSQL:
                _conStngInstitute = ConfigurationManager.ConnectionStrings["conPostgreSQL"];
                break;

            case DB_Type.SQLite:
                //_conStngInstitute = ConfigurationManager.ConnectionStrings["conInstitute"];
                break;

            case DB_Type.MS_Access:
                _conStngInstitute = ConfigurationManager.ConnectionStrings["conOLEDB"];
                break;
            }

            _factory = DbProviderFactories.GetFactory(_conStngInstitute.ProviderName);

            _con = _factory.CreateConnection();
            _con.ConnectionString = _conStngInstitute.ConnectionString;
            _cmd = _con.CreateCommand();

            _adapter = _factory.CreateDataAdapter();

            _isDisposed = false;

            sStartupFolder = AppDomain.CurrentDomain.BaseDirectory;
        }
Example #24
0
        public void VisitStatement(DB_Type type, DB_Member member, DB_ForStatementSyntax statement, DB_StatementSyntax outer)
        {
            typeRef.Add(statement.Declaration.Type);

            model.EnterBlock();
            DB_ForStatementSyntax ss = statement as DB_ForStatementSyntax;

            if (ss.Declaration != null)
            {
                VisitDeclareVairable(type, member, statement, ss.Declaration);
            }
            model.VisitExp(this, type, member, statement, ss.Condition, null);
            foreach (var inc in ss.Incrementors)
            {
                model.VisitExp(this, type, member, statement, inc, null);
            }

            model.VisitStatement(this, type, member, ss.Statement, statement);

            model.LeaveBlock();
        }
Example #25
0
        public DB_Type FindTypeInNamespace(string name, string ns)
        {
            do
            {
                DB_Type type = Finder.FindType(ns + "." + name);
                if (type != null)
                {
                    return(type);
                }
                if (ns.Contains("."))
                {
                    ns = ns.Substring(0, ns.LastIndexOf('.'));
                }
                else
                {
                    break;
                }
            }while (ns != null);

            return(null);
        }
        /// <summary>
        /// Uploading JSON addressbook file to the SQL server's database table.
        /// </summary>
        public void UploadAddressbookJSONtoSQL(DB_Type db_type)
        {
            cDatabase sqlDB = new cDatabase(db_type);

            try
            {
                sqlDB.OpenConnection();

                Console.WriteLine("Connection opened");

                sqlDB.Json2Table(@"Data/JSON/Addressbook Get Contacts RESPONSE.json", "addressbook_v4", "id", R4M_DataType.Addressbook);

                Console.WriteLine("The file 'Addressbook Get Contacts RESPONSE.json' was uploaded to the SQL server.");
            }
            catch (Exception ex) { Console.WriteLine("Uploading of the JSON file to the SQL server failed!.. " + ex.Message); }
            finally
            {
                sqlDB.CloseConnection();
            }


        }
Example #27
0
 public void VisitMember(DB_Type type, DB_Member m)
 {
     if (m.member_type == (int)Metadata.MemberTypes.Field)
     {
         result.Add(m.type);
     }
     else if (m.member_type == (int)Metadata.MemberTypes.Method)
     {
         if (!m.type.IsVoid)
         {
             result.Add(m.type);
         }
         foreach (var a in m.method_args)
         {
             result.Add(a.type);
         }
     }
     else if (m.member_type == (int)Metadata.MemberTypes.Property)
     {
         result.Add(m.type);
     }
 }
Example #28
0
        public void VisitExp(DB_Type type, DB_Member member, DB_StatementSyntax statement, FieldExp exp, Exp outer)
        {
            //DB_Type caller = model.GetExpType(exp.Caller);
            //typeRef.Add(caller.GetRefType());


            //if (caller.members.ContainsKey(exp.Name))
            //{
            //    typeRef.Add(caller.members[exp.Name].typeName);
            //}
            //else
            //{
            //    List<DB_Member> methods = caller.FindMethod(exp.Name, model);
            //    if(methods.Count>0)
            //    {
            //        //typeRef.Add(caller.members[exp.Name].typeName);
            //    }
            //}


            model.VisitExp(this, type, member, statement, exp.Caller, exp);
        }
Example #29
0
        public void VisitMember(DB_Type type, DB_Member member)
        {
            if (member.member_type == (int)Metadata.MemberTypes.Method)
            {
                if (member.method_body != null)
                {
                    model.VisitStatement(this, type, member, member.method_body, null);
                }

                if (member.method_args != null)
                {
                    foreach (var t in member.method_args)
                    {
                        t.type = ReplaceType(type, t.type);
                    }
                }
            }

            if (!member.type.IsVoid)
            {
                member.type = ReplaceType(type, member.type);
            }
        }
Example #30
0
        //public HashSet<Expression.TypeSyntax> typeRef = new HashSet<Expression.TypeSyntax>();

        //将oldTs替换为DB_Type的真实泛型参数
        TypeSyntax ReplaceType(DB_Type type, TypeSyntax oldTs)
        {
            if (oldTs.isGenericParameter)
            {
                for (int i = 0; i < type.generic_parameter_definitions.Count; i++)
                {
                    if (type.generic_parameter_definitions[i].type_name == oldTs.Name)
                    {
                        return(type.generic_parameters[i]);
                    }
                }
            }

            //替换泛型参数
            if (oldTs.isGenericType)
            {
                for (int i = 0; i < oldTs.args.Length; i++)
                {
                    oldTs.args[i] = ReplaceType(type, oldTs.args[i]);
                }
            }

            return(oldTs);
        }
Example #31
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="valueObj"></param>
        /// <param name="dbType">0:SQL;1:Oracle;2:Access</param>
        /// <returns></returns>
        private static Hashtable setPara(object valueObj, DB_Type dbType, Manual_Type manualType, out string fieldStr)
        {
            string flag = ":";

            if (dbType == DB_Type.SQLServer || dbType == DB_Type.Access)
            {
                flag = "@";
            }
            fieldStr = "";
            string    vals   = "";
            Hashtable result = new Hashtable();
            int       i      = 0;

            foreach (PropertyInfo p in valueObj.GetType().GetProperties())
            {
                if (getObjValue(p.Name, valueObj) != null)
                {
                    result.Add(flag + p.Name, getObjValue(p.Name, valueObj));
                    if (i == 0)
                    {
                        i++;
                    }
                    else
                    {
                        fieldStr += ",";
                        vals     += ",";
                    }
                    if (manualType == Manual_Type.Insert)
                    {
                        vals     += p.Name;
                        fieldStr += flag + p.Name;
                    }
                    else if (manualType == Manual_Type.Update)
                    {
                        fieldStr += " " + p.Name + "=" + flag + p.Name;
                    }
                }
            }
            if (dbType == DB_Type.Access)
            {
                vals     = "";
                fieldStr = "";
                int j = 0;
                foreach (string str in result.Keys)
                {
                    if (j == 0)
                    {
                        j++;
                    }
                    else
                    {
                        fieldStr += ",";
                        vals     += ",";
                    }
                    if (manualType == Manual_Type.Insert)
                    {
                        vals     += str.Replace(flag, "");
                        fieldStr += str;
                    }
                    else if (manualType == Manual_Type.Update)
                    {
                        fieldStr += " " + str.Replace(flag, "") + "=" + str;
                    }
                }
            }
            if (manualType == Manual_Type.Insert)
            {
                fieldStr = "(" + vals + ") values (" + fieldStr + ") ";
            }
            return(result);
        }
        private void LoadSettings()
        {
            try
            {
                lock(this)
                {
                    dsSettings = m_API.GetSettings();

                    DataRow dr = dsSettings.Tables["Settings"].Rows[0];
                    m_connStr             = dr["ConnectionString"].ToString();
                    m_DB_Type             = (DB_Type)Enum.Parse(typeof(DB_Type),dr["DataBaseType"].ToString());
                    string nntpStorePath  = dr["NNTPRoot"].ToString();
                    if(!nntpStorePath.EndsWith("\\"))
                    {
                        nntpStorePath += "\\";
                    }
                    if(nntpStorePath.Length < 3)
                    {
                        nntpStorePath = m_StartUpPath + "NNTPStore\\";
                    }
                    m_NNTPStorePath = nntpStorePath;

                    m_PullInterval               = Convert.ToInt32(dr["PullInterval"]);

                    //------- NNTP Settings ---------------------------------------------//
                    m_pServer.IpAddress          = dr["NNTP_IPAddress"].ToString();
                    m_pServer.Port               = Convert.ToInt32(dr["NNTP_Port"]);
                    m_pServer.Threads            = Convert.ToInt32(dr["NNTP_Threads"]);
                    m_pServer.SessionIdleTimeOut = Convert.ToInt32(dr["NNTP_SessionIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    m_pServer.CommandIdleTimeOut = Convert.ToInt32(dr["NNTP_CommandIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    m_pServer.MaxMessageSize     = Convert.ToInt32(dr["MaxMessageSize"]) * 1000000;       // Mb to byte.
                    m_pServer.MaxBadCommands     = Convert.ToInt32(dr["NNTP_MaxBadCommands"]);
                    m_pServer.Enabled            = Convert.ToBoolean(dr["NNTP_Enabled"]);

                }
            }
            catch(Exception x)
            {
                Error.DumpError(x,new System.Diagnostics.StackTrace());
            }
        }
        /// <summary>
        /// For administration only.
        /// </summary>
        /// <param name="dataPath"></param>
        /// <param name="webServicesUrl"></param>
        /// <param name="webServicesUser"></param>
        /// <param name="webServicesPwd"></param>
        public ServerAPI(string dataPath,string webServicesUrl,string webServicesUser,string webServicesPwd)
        {
            m_WebServicesUrl  = webServicesUrl;
            m_WebServicesUser = webServicesUser;
            m_WebServicesPwd  = webServicesPwd;

            m_DB_Type         = DB_Type.WebServices;
        }
        /// <summary>
        /// Sets Settings.xml specified Database type.
        /// </summary>
        public void DatabaseTypeChanged()
        {
            DataSet dsTmp = new DataSet();
            dsTmp.ReadXml(m_DataPath + "Settings.xml");

            DataRow dr = dsTmp.Tables["Settings"].Rows[0];
            m_MailStorePath = dr["MailRoot"].ToString();
            m_ConStr        = dr["ConnectionString"].ToString();
            m_DB_Type       = (DB_Type)Enum.Parse(typeof(DB_Type),dr["DataBaseType"].ToString());

            dsUsers    = new DataSet();
            dsAliases  = new DataSet();
            dsDomains  = new DataSet();
            dsRouting  = new DataSet();
            dsSecurity = new DataSet();
            dsFilters  = new DataSet();

            // We need to load all stuff to memory for XML
            if(m_DB_Type == DB_Type.XML){
                LoadUsers();
                LoadAliases();
                LoadRouting();
                LoadDomains();
                LoadSecurity();
            }

            LoadFilters();
        }
        /// <summary>
        /// Checks if database connection is ok.
        /// </summary>
        /// <param name="dataPath"></param>
        /// <param name="conStr"></param>
        /// <param name="dbType"></param>
        /// <returns></returns>
        public static bool IsConnection(string dataPath,string conStr,DB_Type dbType)
        {
            try
            {
                switch(dbType)
                {
                    case DB_Type.XML:
                        return Directory.Exists(dataPath);

                    case DB_Type.MSSQL:
                        using(WSqlCommand sqlCmd = new WSqlCommand(conStr,"lspr_CheckConnection")){
                            sqlCmd.Execute();
                        }
                        return true;
                }
            }
            catch{
            }

            return false;
        }
        private void LoadSettings()
        {
            try
            {
                lock(this){
                    m_pAPI.DatabaseTypeChanged();

                    dsSettings = m_pAPI.GetSettings();
                    m_SettingsDate = File.GetLastWriteTime(m_SartUpPath + "\\Settings\\Settings.xml");

                    DataRow dr = dsSettings.Tables["Settings"].Rows[0];
                    m_connStr             = dr["ConnectionString"].ToString();
                    m_DB_Type             = (DB_Type)Enum.Parse(typeof(DB_Type),dr["DataBaseType"].ToString());
                    string mailStorePath  = dr["MailRoot"].ToString();
                    if(!mailStorePath.EndsWith("\\")){
                        mailStorePath += "\\";
                    }
                    if(mailStorePath.Length < 3){
                        mailStorePath = m_SartUpPath + "MailStore\\";
                    }
                    m_MailStorePath = mailStorePath;

                    //------- SMTP Settings ---------------------------------------------//
                    SMTP_Server.IpAddress          = dr["SMTP_IPAddress"].ToString();
                    SMTP_Server.Port               = Convert.ToInt32(dr["SMTP_Port"]);
                    SMTP_Server.Threads            = Convert.ToInt32(dr["SMTP_Threads"]);
                    SMTP_Server.SessionIdleTimeOut = Convert.ToInt32(dr["SMTP_SessionIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    SMTP_Server.CommandIdleTimeOut = Convert.ToInt32(dr["SMTP_CommandIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    SMTP_Server.MaxMessageSize     = Convert.ToInt32(dr["MaxMessageSize"]) * 1000000;       // Mb to byte.
                    SMTP_Server.MaxRecipients      = Convert.ToInt32(dr["MaxRecipients"]);
                    SMTP_Server.MaxBadCommands     = Convert.ToInt32(dr["SMTP_MaxBadCommands"]);
                    SMTP_Server.Enabled            = Convert.ToBoolean(dr["SMTP_Enabled"]);

                    m_DefaultDomain   = dr["SMTP_DefaultDomain"].ToString();
                    //-------------------------------------------------------------------//

                    //------- POP3 Settings -------------------------------------//
                    POP3_Server.IpAddress          = dr["POP3_IPAddress"].ToString();
                    POP3_Server.Port               = Convert.ToInt32(dr["POP3_Port"]);
                    POP3_Server.Threads            = Convert.ToInt32(dr["POP3_Threads"]);
                    POP3_Server.SessionIdleTimeOut = Convert.ToInt32(dr["POP3_SessionIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    POP3_Server.CommandIdleTimeOut = Convert.ToInt32(dr["POP3_CommandIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    POP3_Server.MaxBadCommands     = Convert.ToInt32(dr["POP3_MaxBadCommands"]);
                    POP3_Server.Enabled            = Convert.ToBoolean(dr["POP3_Enabled"]);
                    //-----------------------------------------------------------//

                    //------- IMAP Settings -------------------------------------//
                    IMAP_Server.IpAddress          = dr["IMAP_IPAddress"].ToString();
                    IMAP_Server.Port               = Convert.ToInt32(dr["IMAP_Port"]);
                    IMAP_Server.Threads            = Convert.ToInt32(dr["IMAP_Threads"]);
                    IMAP_Server.SessionIdleTimeOut = Convert.ToInt32(dr["IMAP_SessionIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    IMAP_Server.CommandIdleTimeOut = Convert.ToInt32(dr["IMAP_CommandIdleTimeOut"]) * 1000; // Seconds to milliseconds
                    IMAP_Server.MaxBadCommands     = Convert.ToInt32(dr["IMAP_MaxBadCommands"]);
                    IMAP_Server.Enabled            = Convert.ToBoolean(dr["IMAP_Enabled"]);
                    //-----------------------------------------------------------//

                    //------- Delivery ------------------------------------------//
                    Relay.SmartHost                = dr["SmartHost"].ToString();
                    Relay.UseSmartHost             = Convert.ToBoolean(dr["UseSmartHost"]);
                    Relay.Dns1                     = dr["Dns1"].ToString();
                    Relay.Dns2                     = dr["Dns2"].ToString();
                    Relay.RelayInterval            = Convert.ToInt32(dr["RelayInterval"]);
                    Relay.RelayRetryInterval       = Convert.ToInt32(dr["RelayRetryInterval"]);
                    Relay.RelayUndelWarning        = Convert.ToInt32(dr["RelayUndeliveredWarning"]);
                    Relay.RelayUndelivered         = Convert.ToInt32(dr["RelayUndelivered"]);
                    Relay.MaxRelayThreads          = Convert.ToInt32(dr["MaxRelayThreads"]);
                    Relay.UndeliveredTemplate      = dr["UndeliveredTemplate"].ToString();
                    Relay.UndelWarningTemplate     = dr["UndeliveredWarningTemplate"].ToString();
                    Relay.StoreUndeliveredMessages = Convert.ToBoolean(dr["StoreUndeliveredMessages"]);
                    //-----------------------------------------------------------//

                    //----- Logging settings -------------------------------------//
                    SMTP_Server.LogCommands = Convert.ToBoolean(dr["LogSMTPCmds"]);
                    POP3_Server.LogCommands = Convert.ToBoolean(dr["LogPOP3Cmds"]);
                    IMAP_Server.LogCommands = Convert.ToBoolean(dr["LogIMAPCmds"]);

                    m_SMTP_LogPath   = dr["SMTP_LogPath"].ToString()   + "\\";
                    m_POP3_LogPath   = dr["POP3_LogPath"].ToString()   + "\\";
                    m_IMAP_LogPath   = dr["IMAP_LogPath"].ToString()   + "\\";
                    m_Server_LogPath = dr["Server_LogPath"].ToString() + "\\";

                    //----- If no log path, use default ----------------
                    if(dr["SMTP_LogPath"].ToString().Trim().Length == 0){
                        m_SMTP_LogPath = m_SartUpPath + "Logs\\SMTP\\";
                    }
                    if(dr["POP3_LogPath"].ToString().Trim().Length == 0){
                        m_POP3_LogPath = m_SartUpPath + "Logs\\POP3\\";
                    }
                    if(dr["IMAP_LogPath"].ToString().Trim().Length == 0){
                        m_IMAP_LogPath = m_SartUpPath + "Logs\\IMAP\\";
                    }
                    if(dr["Server_LogPath"].ToString().Trim().Length == 0){
                        m_Server_LogPath = m_SartUpPath + "Logs\\Server\\";
                    }
                    //------------------------------------------------------------//

                    SCore.WriteLog(m_Server_LogPath + "server.log","//---- Server settings loaded " + DateTime.Now);
                }
            }
            catch(Exception x)
            {
                Error.DumpError(x,new System.Diagnostics.StackTrace());
            }
        }