Esempio n. 1
0
        internal static void Init()
        {
            if (_initialised)
            {
                return;
            }

            Assembly asm = Assembly.GetAssembly(typeof(Mission));

            Type[] alltypes = asm.GetTypes();
            _asm = asm;

            _initialised = true;

            _actionTypes        = new Dictionary <string, StatementObj>();
            _conditionTypes     = new Dictionary <string, StatementObj>();
            _eventListenerTypes = new Dictionary <string, StatementObj>();

            foreach (Type t in alltypes)
            {
                object[] target_attrs = t.GetCustomAttributes(typeof(StatementAttribute), false);

                if (target_attrs.Length == 0)
                {
                    continue;
                }

                StatementAttribute statment_attr = target_attrs[0] as StatementAttribute;

                if (t.IsSubclassOf(typeof(Action)))
                {
                    StatementObj so = new StatementObj();
                    so.className  = statment_attr.className;
                    so.type       = t;
                    so.recyclable = statment_attr.recyclable;
                    _actionTypes.Add(so.className, so);
                }
                else if (t.IsSubclassOf(typeof(Condition)))
                {
                    StatementObj so = new StatementObj();
                    so.className  = statment_attr.className;
                    so.type       = t;
                    so.recyclable = statment_attr.recyclable;
                    _conditionTypes.Add(so.className, so);
                }
                else if (t.IsSubclassOf(typeof(EventListener)))
                {
                    StatementObj so = new StatementObj();
                    so.className  = statment_attr.className;
                    so.type       = t;
                    so.recyclable = statment_attr.recyclable;
                    _eventListenerTypes.Add(so.className, so);
                }
            }
        }
Esempio n. 2
0
        public override bool Parse(string sql, out List <StatementObj> statements)
        {
            statements = new List <StatementObj>();
            try
            {
                TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMysql);
                sqlparser.SqlText.Text = sql;
                int ret = sqlparser.Parse();
                if (ret != 0)
                {
                    this.message = sqlparser.ErrorMessages;
                    return(false);
                }
                foreach (var statement in sqlparser.SqlStatements)
                {
                    StatementObj obj = new StatementObj();
                    obj.SqlText = statement.RawSqlText;
                    switch (statement.SqlStatementType)
                    {
                    case TSqlStatementType.sstSelect:
                    case TSqlStatementType.sstMySQLDescribe:
                    case TSqlStatementType.sstMySQLShow:
                        obj.SqlType = SqlType.eTable;
                        break;

                    default:
                        obj.SqlType = SqlType.eMsg;
                        break;
                    }
                    statements.Add(obj);
                }
                return(true);
            }
            catch (Exception ex)
            {
                this.message = ex.Message;
                LogHelper.Error(ex);
                return(false);
            }
        }