示例#1
0
        public void Sort_ProvideTwoFilesAndSwapOrders_ReturnsDifferentOrder()
        {
            var sysIgnoredFileProvider = Substitute.For <ISysIgnoredFileProvider>();

            sysIgnoredFileProvider.GetIgnoredFiles().Returns(new List <string>());

            var selector = new SqlSelector(sysIgnoredFileProvider);
            var files    = new List <string>()
            {
                "file 1",
                "file 2"
            }.AsEnumerable();

            Assert.IsTrue(files.First() == "file 1");

            var order = new SqlOrderConfiguration()
            {
                FileOrder = new List <string>()
                {
                    "file 2"
                }
            };

            selector.Sort(order, ref files);

            Assert.IsTrue(files.First() == "file 2");
        }
示例#2
0
        protected override DataTable FetchRows(TkDbContext context, DataSet dataSet,
                                               IParamBuilder builder, int topCount)
        {
            SqlSelector selector = new SqlSelector(context, dataSet);

            using (selector)
            {
                IParamBuilder addBuilder = CreateAdditionCondition(context, fScheme);
                builder = ParamBuilder.CreateParamBuilder(builder, addBuilder);
                string whereSql;
                if (builder == null)
                {
                    whereSql = string.Empty;
                }
                else
                {
                    whereSql = "WHERE " + builder.Sql;
                }

                TableSchemeData schemeData = TableSchemeData.Create(context, fScheme);
                var             result     = context.ContextConfig.GetListSql(schemeData.SelectFields,
                                                                              GetTableName(context), schemeData.KeyFieldArray,
                                                                              whereSql, OrderBy, 0, topCount);
                ISimpleAdapter adapter = selector;
                adapter.SetSql(result.ListSql, builder);
                context.ContextConfig.SetListData(result, adapter, dataSet, 0, TopCount, EASYSEARCH_TABLE_NAME);

                return(dataSet.Tables[EASYSEARCH_TABLE_NAME]);
            }
        }
示例#3
0
        protected override DataTable FillDbData(TkDbContext context, DataSet dataSet)
        {
            using (SqlSelector selector = new SqlSelector(context, dataSet))
            {
                TableSchemeData       data      = new TableSchemeData(context, Scheme);
                ParamBuilderContainer container = new ParamBuilderContainer();
                if (FilterSql != null)
                {
                    string filter = Expression.Execute(FilterSql, selector);
                    container.Add(filter);
                }
                container.Add(CreateActiveFilter(context));

                string tableName = Scheme.TableName;
                string sql       = string.Format(ObjectUtil.SysCulture, "SELECT {0} FROM {1}",
                                                 data.SelectFields, context.EscapeName(tableName));
                string regName = RegName;
                selector.Select(regName, sql, container, OrderBy);
                DataTable dataTable = dataSet.Tables[regName];

                DataColumn idColumn = dataTable.Columns[fDisplay.Id.NickName];
                idColumn.ColumnName = DecoderConst.CODE_NICK_NAME;
                dataTable.Columns[fDisplay.Name.NickName].ColumnName = DecoderConst.NAME_NICK_NAME;

                if (NameExpression != "{Name}")
                {
                    foreach (DataRow row in dataTable.Rows)
                    {
                        row[DecoderConst.NAME_NICK_NAME] = InternalExpression.Execute(row);
                    }
                }
                return(dataTable);
            }
        }
示例#4
0
        public ToolsDocumentSource()
        {
            OrderBy      = "ORDER BY DOC_ORGIN_DATE DESC";
            SortQuery    = true;
            Context      = DbContextUtil.CreateDbContext("Tools");
            MainResolver = new TaxDocumentResolver(this);
            Operators    = new ListOperators();

            using (var idSource = new EmptyDbDataSource())
            {
                SqlSelector.Select(idSource.Context, idSource.DataSet, "Document",
                                   "SELECT DISTINCT DOC_SOURCE_ID FROM CS_DOCUMENT WHERE DOC_SOURCE_ID IS NOT NULL");
                DataTable table = idSource.DataSet.Tables["Document"];
                if (table == null || table.Rows.Count == 0)
                {
                    FilterSql = new MarcoConfigItem(false, false, "DOC_VERIFY_FLAG > 0");
                }
                else
                {
                    var ids = from row in table.AsEnumerable()
                              select row["DOC_SOURCE_ID"].ToString();
                    string sql = string.Format(ObjectUtil.SysCulture,
                                               "DOC_VERIFY_FLAG > 0 AND DOC_DOC_ID NOT IN ({0})", string.Join(",", ids));
                    FilterSql = new MarcoConfigItem(false, false, sql);
                }
            }
        }
示例#5
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            TkDbContext context;

            if (string.IsNullOrEmpty(ContextName))
            {
                context = DbContextUtil.CreateDefault();
            }
            else
            {
                context = DbContextUtil.CreateDbContext(ContextName);
            }
            using (EmptyDbDataSource source = new EmptyDbDataSource())
            {
                source.Context = context;
                string sql = Expression.Execute(Sql, source);
                SqlSelector.Select(source.Context, source.DataSet, TABLE_NAME, sql);
                DataTable table = source.DataSet.Tables[TABLE_NAME];
                if (table.Rows.Count == 0)
                {
                    TextSendMessage result = new TextSendMessage(message, EmptyMessage);
                    return(result);
                }
                else
                {
                    NewsSendMessage result = new NewsSendMessage(message);
                    int             count  = 0;
                    if (fFirstArticles.Count > 0)
                    {
                        foreach (var article in fFirstArticles)
                        {
                            result.Add(article);
                            ++count;
                        }
                    }

                    int maxCount = MAX_COUNT;
                    if (FootArticle != null)
                    {
                        maxCount--;
                    }
                    foreach (DataRow row in table.Rows)
                    {
                        if (++count > maxCount)
                        {
                            break;
                        }
                        Article article = DataRowArticle.CreateArticle(source, row, message);
                        result.Add(article);
                    }

                    if (FootArticle != null)
                    {
                        result.Add(FootArticle);
                    }

                    return(result);
                }
            }
        }
示例#6
0
        private void SetDataSet(object userId)
        {
            fDataSet = new DataSet {
                Locale = CultureInfo.CurrentCulture
            };
            TkDbContext context = DbContextUtil.CreateDefault();

            using (context)
            {
                IParamBuilder builder = SqlParamBuilder.CreateEqualSql(context, "USER_ID", TkDataType.String, userId);
                fAdmin = DbUtil.ExecuteScalar("SELECT USER_ADMIN FROM UR_USERS", context, builder).ToString() == "1";
                SqlSelector selector = new SqlSelector(context, fDataSet);
                using (selector)
                {
                    string userIdName = context.GetSqlParamName("USER_ID");
                    string sql        = string.Format(ObjectUtil.SysCulture, FUNC_SQL, userIdName,
                                                      context.ContextConfig.GetFunction("LENGTH", "FN_TREE_LAYER"));
                    selector.Select("SYS_FUNCTION", sql, builder.Parameters);

                    Dictionary <int, FunctionItem> idFunctions = new Dictionary <int, FunctionItem>();

                    DataTable table = fDataSet.Tables["SYS_FUNCTION"];
                    foreach (DataRow row in table.Rows)
                    {
                        FunctionItem item = new FunctionItem(row);
                        if (item.IsLeaf)
                        {
                            try
                            {
                                idFunctions.Add(item.Id, item);
                                fFunctions.Add(item.Key, item);
                            }
                            catch
                            {
                            }
                        }
                    }

                    sql = string.Format(ObjectUtil.SysCulture, SUB_FUNC_SQL, userIdName);
                    selector.Select("SYS_SUB_FUNC", sql, builder.Parameters);
                    table = fDataSet.Tables["SYS_SUB_FUNC"];
                    var group = from item in table.AsEnumerable()
                                group item by item.Field <int>("FnId");

                    foreach (var groupItem in group)
                    {
                        FunctionItem item;
                        if (idFunctions.TryGetValue(groupItem.Key, out item))
                        {
                            item.AddSubFunctions(groupItem);
                        }
                    }
                }
            }
        }
示例#7
0
        protected override DataRow FetchRow(string code, TkDbContext context, DataSet dataSet)
        {
            SqlSelector selector = new SqlSelector(context, dataSet);

            using (selector)
            {
                IParamBuilder builder = SqlParamBuilder.CreateEqualSql(context, ValueField, code);
                String        sql     = string.Format("SELECT {0} FROM ({1}) {2}", fSelectFields, fSql, TABLE_NAME);
                return(selector.TrySelectRow(TABLE_NAME, sql, builder));
            }
        }
示例#8
0
        protected override DataTable FillDbData(TkDbContext context, DataSet dataSet)
        {
            using (SqlSelector selector = new SqlSelector(context, dataSet))
            {
                BasePlugInAttribute attr = Attribute;
                TkDebug.AssertNotNull(attr, "需要设置CodeAttribute", this);
                string regName = attr.GetRegName(GetType());
                string sql     = Expression.Execute(Sql, selector);
                selector.Select(regName, sql);
                DataTable dataTable = dataSet.Tables[regName];

                return(dataTable);
            }
        }
        private void SetDataSet(object userId)
        {
            fDataSet = new DataSet { Locale = CultureInfo.CurrentCulture };
            TkDbContext context = DbContextUtil.CreateDefault();
            using (context)
            {

                IParamBuilder builder = SqlParamBuilder.CreateEqualSql(context, "USER_ID", TkDataType.String, userId);
                fAdmin = DbUtil.ExecuteScalar("SELECT USER_ADMIN FROM UR_USERS", context, builder).ToString() == "1";
                SqlSelector selector = new SqlSelector(context, fDataSet);
                using (selector)
                {
                    string userIdName = context.GetSqlParamName("USER_ID");
                    string sql = string.Format(ObjectUtil.SysCulture, FUNC_SQL, userIdName,
                        context.ContextConfig.GetFunction("LENGTH", "FN_TREE_LAYER"));
                    selector.Select("SYS_FUNCTION", sql, builder.Parameters);

                    Dictionary<int, FunctionItem> idFunctions = new Dictionary<int, FunctionItem>();

                    DataTable table = fDataSet.Tables["SYS_FUNCTION"];
                    foreach (DataRow row in table.Rows)
                    {
                        FunctionItem item = new FunctionItem(row);
                        if (item.IsLeaf)
                        {
                            try
                            {
                                idFunctions.Add(item.Id, item);
                                fFunctions.Add(item.Key, item);
                            }
                            catch
                            {
                            }
                        }
                    }

                    sql = string.Format(ObjectUtil.SysCulture, SUB_FUNC_SQL, userIdName);
                    selector.Select("SYS_SUB_FUNC", sql, builder.Parameters);
                    table = fDataSet.Tables["SYS_SUB_FUNC"];
                    var group = from item in table.AsEnumerable()
                                group item by item.Field<int>("SF_FN_ID");
                    foreach (var groupItem in group)
                    {
                        FunctionItem item;
                        if (idFunctions.TryGetValue(groupItem.Key, out item))
                            item.AddSubFunctions(groupItem);
                    }
                }
            }
        }
示例#10
0
        public void Exclude_IncludingSysIgnoredFile_RetunsWithoutit()
        {
            var sysIgnoredFileProvider = Substitute.For <ISysIgnoredFileProvider>();

            sysIgnoredFileProvider.GetIgnoredFiles().Returns(new List <string>()
            {
                "file 1"
            });

            var selector = new SqlSelector(sysIgnoredFileProvider);
            var files    = new List <string>()
            {
                "file 1",
                "file 2"
            }.AsEnumerable();
            var ignore = new SqlIgnoreConfiguration()
            {
                IgnoredFile = new List <string>()
            };

            selector.Exclude(ignore, ref files);

            Assert.IsTrue(!files.Contains("file 1"));
        }