Exemple #1
0
        private void CollectQuerySettings()
        {
            this.querySettings.Clear();
            this.weights.Clear();

            int totalWeight = 0;

            for (int i = 0; i < this.tabControlQuery.TabCount; i++)
            {
                QuerySetting querySetting = new QuerySetting();
                {
                    TabPage page = this.tabControlQuery.TabPages[i];
                    querySetting.Index      = i;
                    querySetting.UseQuery   = (page.Controls[$"checkBoxUseQuery{i+1}"] as CheckBox).Checked;
                    querySetting.Query      = Config.Default[$"Query{i + 1}"].ToString();
                    querySetting.Arguments  = Config.Default[$"QueryArguments{i + 1}"].ToString();
                    querySetting.FetchSize  = long.Parse(Config.Default[$"FetchSize{i + 1}"].ToString());
                    querySetting.Weight     = int.Parse(Config.Default[$"Weight{i + 1}"].ToString());
                    querySetting.Connected  = (page.Controls.Find($"radioButtonConnectionModeConnected{i+1}", true)[0] as RadioButton).Checked;
                    querySetting.SelectRead = (page.Controls.Find($"radioButtonReadingModeSelectRead{i+1}", true)[0] as RadioButton).Checked;
                    this.querySettings.Add(querySetting);
                }

                if (querySetting.UseQuery)
                {
                    totalWeight += querySetting.Weight;
                    this.weights.Add(new Tuple <int, int>(i, totalWeight));
                }
            }
        }
 public DapperHelper()
 {
     if (_setting == null)
     {
         _setting = ObjectContainer.Resolve <Configuration>().GetSetting <QuerySetting>("QuerySetting");
     }
 }
Exemple #3
0
        private void ReadingTimerHandler(object sender, ElapsedEventArgs args)
        {
            var randomIndex = Enumerable.Range(0, this.mocks.Count).OrderBy(x => Guid.NewGuid()).ToList();

            int i = 0;

            while (this.readingCancellationToken != CancellationToken.None &&
                   !this.readingCancellationToken.IsCancellationRequested &&
                   i < randomIndex.Count)
            {
                MockClient mock = null;
                try
                {
                    QuerySetting querySetting = GetRandomQuerySetting();
                    this.stat.AddReadRequestCount(querySetting.Index, 1);
                    mock = this.mocks[randomIndex[i]];
                    Task.Factory.StartNew(() => ReadingJob(mock, querySetting, this.readingCancellationToken));
                }
                catch (Exception ex)
                {
                    AddLog($"OpeningTimerHandler, mock index = {randomIndex[i]}, {ex.ToString()}, {ex.Message}");
                    this.stat.AddErrorCount();
                }
                finally
                {
                    i++;
                }
            }
        }
        private QuerySetting GetQuerySetting()
        {
            string       strName        = "ReportQuery";
            string       strDescription = UFIDA.U8.UAP.Services.ReportResource.U8ResService.GetResStringEx("U8.UAP.Services.ReportData.ConvertDataToBO.报表数据源查询");
            QuerySetting querySetting   = null;

            if (this._IsSqlQuerist)
            {
                SQLScript sQLScript = new SQLScript();
                sQLScript.SelectPart = this._SqlScript;
                querySetting         = new SQLQuerySetting(strName, sQLScript, strDescription);
            }
            else
            {
                string dllType = string.Empty;
                if (this._bVB)
                {
                    dllType = "Com";
                }
                else
                {
                    dllType = "DotNet";
                }
                querySetting = new CustomQuerySetting(strName, dllType, this._dllInfor, strDescription);
            }

            FillColumnData(querySetting);

            return(querySetting);
        }
Exemple #5
0
        private DynamicQuerySetting GetDynamicQuert4SqlQuerySetting(QuerySetting qs)
        {
            DynamicQuerySetting dynamicQuerySetting = new DynamicQuerySetting();
            string sourceSelectPart = this.GetSourceSelectPart(qs);
            string finalSelectPart  = string.Empty;

            if (!string.IsNullOrEmpty(this._filterString))
            {
                finalSelectPart = GetFinalSelectPartWhenHasFilter(sourceSelectPart);
                if (!ContainsUfWhereString(sourceSelectPart))
                {
                    this.SetFilterString(dynamicQuerySetting);
                }
            }
            else
            {
                finalSelectPart = GetFinalSelectPartWhenNoFilter(sourceSelectPart);
            }

            // 当sourceSelectPart不包含"{{UFWHERE}}"时,finalSelectPart
            // 必然为空,从而不会设置dynamicQuerySetting.SelectPart
            // 此时如果filterString不为空,会在以上的处理中设置在
            // dynamicQuerySetting.WherePart之中
            if (!string.IsNullOrEmpty(finalSelectPart))
            {
                dynamicQuerySetting.SelectPart = finalSelectPart;
            }
            return(dynamicQuerySetting);
        }
 private void FillColumnData(QuerySetting querySetting)
 {
     for (int i = 0; i < this._OldDataDataTable.Rows.Count; i++)
     {
         QueryResultColumn tc = new QueryResultColumn();
         tc.Name        = this._OldDataDataTable.Rows[i]["ColName"].ToString();
         tc.Description = this._OldDataDataTable.Rows[i]["ColDescription"].ToString();
         tc.DataType    = this.GetDataType(this._OldDataDataTable.Rows[i]["ColType"].ToString());
         querySetting.QueryResultTable.Columns.Add(tc);
     }
 }
Exemple #7
0
        private string GetSourceSelectPart(QuerySetting qs)
        {
            SQLQuerySetting sQLQuerySetting = qs as SQLQuerySetting;

            if (sQLQuerySetting != null &&
                sQLQuerySetting.Script == null)
            {
                throw new TempDBServiceException(
                          "从数据引擎获取的SQLQuerySetting对象为空",
                          "DataSourceId:" + this._dataSourceId);
            }
            return(sQLQuerySetting.Script.SelectPart);
        }
        void BasicOpt_Click(object sender, RoutedEventArgs e)
        {
            var btn = e.Source as Button;

            if (btn != null)
            {
                var optItem = btn.DataContext as OperationInfo;
                if (optItem != null)
                {
                    QuerySettingItems mCurrentQueryItem;
                    switch (optItem.ID)
                    {
                    case S3107Consts.WDE_QueryNew:
                        PopupPanel.Title     = CurrentApp.GetLanguageInfo("3107T00028", "QuerySetting");
                        S3107App.QueryModify = false;
                        QuerySetting querySetting = new QuerySetting();
                        querySetting.CurrentApp = CurrentApp;
                        querySetting.ParentPage = this;
                        PopupPanel.Content      = querySetting;
                        PopupPanel.IsOpen       = true;
                        break;

                    case S3107Consts.WDE_QueryUpdate:
                        S3107App.QueryModify = true;
                        PopupPanel.Title     = CurrentApp.GetLanguageInfo("3107T00028", "QuerySetting");
                        mCurrentQueryItem    = (QuerySettingItems)LvQueryCondition.SelectedItem;
                        if (mCurrentQueryItem == null)
                        {
                            CreatoptButtons();
                            return;
                        }
                        querySetting            = new QuerySetting();
                        querySetting.CurrentApp = CurrentApp;
                        querySetting.ParentPage = this;
                        querySetting.QueryItem  = mCurrentQueryItem;
                        PopupPanel.Content      = querySetting;
                        PopupPanel.IsOpen       = true;
                        break;

                    case S3107Consts.WDE_QueryDelete:
                        mCurrentQueryItem = (QuerySettingItems)LvQueryCondition.SelectedItem;
                        if (mCurrentQueryItem == null)
                        {
                            return;
                        }
                        DeleteDBO(mCurrentQueryItem);
                        break;
                    }
                }
            }
        }
Exemple #9
0
        private QuerySetting GetQuerySetting()
        {
            BusinessObject bo           = this.GetBOFromDataEngine();
            QueryFunction  qf           = this.GetQueryFunctionFrom(bo);
            QuerySetting   ruerySetting = qf.QuerySettings[0];

            if (ruerySetting == null)
            {
                throw new TempDBServiceException(
                          "从数据引擎获取的QuerySetting对象为空",
                          "DataSourceId:" + this._dataSourceId);
            }
            return(ruerySetting);
        }
Exemple #10
0
        /// <summary>
        /// 1.this._filterString为空;
        ///	原始的selectPart含有{{UFWHERE}},则把{{UFWHERE}}替换成where
        /// 2.this._filterString不为空,则把this._filterString包装成where字句并替换{{UFWHERE}};
        ///  A.原始的selectPart含有{{UFWHERE}}:
        ///    则把this._filterString包装成where字句并替换{{UFWHERE}},
        ///    此时不设置DynamicQuerySetting.WherePart
        ///  B.原始的selectPart不含有{{UFWHERE}}:
        ///    此时仅仅设置DynamicQuerySetting.WherePart = " AND " + this._filterString
        /// </summary>
        /// <returns>
        /// 返回值为一个动态设置好sql信息的数据引擎定义的对象。 注意:
        /// DynamicQuerySetting对象是数据引擎允许在代码中动态设置sql
        /// 的实现方式,因此设置此对象之后原来在UAP中预置的selectpart
        /// 将被忽略,所以需要将原来设置的selectpart相应信息转移到
        /// DynamicQuerySetting对象中
        /// </returns>
        private DynamicQuerySetting GetDynamicQuerySetting()
        {
            QuerySetting qs = this.GetQuerySetting();

            if (qs is SQLQuerySetting)
            {
                return(this.GetDynamicQuert4SqlQuerySetting(qs));
            }
            DynamicQuerySetting dynamicQuerySetting = new DynamicQuerySetting();

            this.SetFilterString(dynamicQuerySetting);

            if (!string.IsNullOrEmpty(this._extendingDataSourceTempDBName))
            {
                dynamicQuerySetting.ChildQueryTmpTables[this._extendingDataSourceTempDBName] = this._extendingDataSourceTempDBName;
            }
            return(dynamicQuerySetting);
        }
Exemple #11
0
        public JsonResult GetProduct(int?id)
        {
            if (id != null)
            {
                var product = db.products.Include(c => c.ProductCategories).FirstOrDefault(e => e.ProductID == id);

                if (product != null)
                {
                    SqlParameter sqlParameter = new SqlParameter("@ProductID", id);
                    var          stockStatus  = db.Database.SqlQuery <SPGetProductStockStatus>("SPGetProductStockStatus @ProductID", sqlParameter).FirstOrDefault();

                    var totalStock = stockStatus == null ? product.StockQuantity : stockStatus.RemainStock;

                    var details = new
                    {
                        id                 = product.ProductID,
                        is_publish         = (product.IsPublish == 1) ? "Yes" : "No",
                        name               = product.ProductName,
                        description        = product.ProductDescription,
                        category           = product.ProductCategories.CategoryName,
                        price              = product.Price.ToString("C"),
                        discounted_price   = product.DiscountedPrice.ToString("C"),
                        sales_period_start = product.SalesPeriodStartAt.ToString(string.Format("yyyy-MM-dd")),
                        sales_period_end   = product.SalesPeriodEndAt.ToString(string.Format("yyyy-MM-dd")),
                        stock              = (totalStock >= max_quantity_value) ? max_quantity_value : totalStock,
                        file_path          = "/Uploads/" + product.FilePath
                    };

                    var responseObj = new
                    {
                        product = details
                    };

                    var getRelatedProduct = Request["related"];

                    if (getRelatedProduct == "true")
                    {
                        var relatedProducts = db.products.Where(p => p.CategoryID == product.CategoryID)
                                              .Where(p => p.ProductID != id)
                                              .Where(p => p.IsPublish == 1)
                                              .Where(p => p.SalesPeriodStartAt <= DateTime.Now && p.SalesPeriodEndAt >= DateTime.Now)
                                              .Take(4)
                                              .ToList();

                        if (relatedProducts != null)
                        {
                            var related = new ArrayList();

                            foreach (var item in relatedProducts)
                            {
                                var relatedProductDetails = new
                                {
                                    id               = item.ProductID,
                                    name             = item.ProductName,
                                    price            = item.Price.ToString("C"),
                                    discounted_price = item.DiscountedPrice.ToString("C"),
                                    discount         = item.DiscountedPrice > 0 ? true : false,
                                    stock            = (item.StockQuantity > 0) ? "In stock" : "Out of stock",
                                    file_path        = "/Uploads/" + item.FilePath
                                };

                                related.Add(relatedProductDetails);
                            }

                            Response.StatusCode = (int)HttpStatusCode.OK;
                            return(Json(new { product = details, related_product = related }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        Response.StatusCode = (int)HttpStatusCode.OK;
                        return(Json(new { product = details }, JsonRequestBehavior.AllowGet));
                    }
                }

                Response.StatusCode = (int)HttpStatusCode.NotFound;

                return(Json(new { Message = "Record With ID " + id.ToString() + " not found" }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                var products = new ArrayList();
                var keyword  = Request["keyword"];

                int.TryParse(Request["categoryId"], out int categoryId);

                QuerySetting querySetting = new QuerySetting
                {
                    is_admin          = IsAdmin(),
                    admin_as_user     = false,
                    query_by_category = false,
                    query_by_keyword  = false,
                    keywords          = "",
                    category_id       = 0,
                    is_admin_panel    = (Request["is_admin_panel"] != null && Request["is_admin_panel"] == "true") ? true : false
                };

                if (keyword != null)
                {
                    querySetting.query_by_keyword = true;
                    querySetting.keywords         = keyword;
                }
                else if (categoryId > 0)
                {
                    querySetting.query_by_category = true;
                    querySetting.category_id       = categoryId;
                }

                SqlParameter[] productParams =
                {
                    new SqlParameter("@IS_ADMIN",          querySetting.is_admin),
                    new SqlParameter("@ADMIN_AS_USER",     querySetting.admin_as_user),
                    new SqlParameter("@QUERY_BY_KEYWORD",  querySetting.query_by_keyword),
                    new SqlParameter("@QUERY_BY_CATEGORY", querySetting.query_by_category),
                    new SqlParameter("@KEYWORDS",          querySetting.keywords),
                    new SqlParameter("@CATEGORY_ID",       querySetting.category_id),
                    new SqlParameter("@IS_ADMIN_PANEL",    querySetting.is_admin_panel),
                };

                var entity = db.Database.SqlQuery <SPGetProducts>("SPGetProducts @IS_ADMIN, @ADMIN_AS_USER, @QUERY_BY_KEYWORD, @QUERY_BY_CATEGORY, @KEYWORDS, @CATEGORY_ID, @IS_ADMIN_PANEL", productParams).ToList();

                if (entity != null)
                {
                    foreach (var item in entity)
                    {
                        var product = new
                        {
                            product_id          = item.ProductID,
                            product_name        = item.ProductName,
                            product_description = item.ProductDescription,
                            category_id         = item.CategoryID,
                            category_name       = item.CategoryName,
                            price             = item.Price.ToString("C"),
                            discounted_price  = item.DiscountedPrice.ToString("C"),
                            stock             = item.StockQuantity,
                            file_path         = "/Uploads/" + item.FilePath,
                            discount          = item.DiscountedPrice > 0 ? true : false,
                            last_modifited_at = item.LastModifiedAt.ToString("dddd, MMMM d, yyyy HH:mm:ss")
                        };

                        products.Add(product);
                    }
                }

                Response.StatusCode = (int)HttpStatusCode.OK;
                return(Json(new { products }, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #12
0
        private void ButtonCBT_Click(object sender, EventArgs e)
        {
            AddLog("ButtonCBT_Click, started.");

            CollectQuerySettings();
            QuerySetting querySetting = GetCurrentQuerySetting();

            try
            {
                string connectionString = GenerateConnectionString(Config.Default.ServerIp, Config.Default.ServerPort, Config.Default.DatabaseName, Config.Default.UserId, Config.Default.UserPassword);
                using (OracleConnection conn = new OracleConnection(connectionString))
                {
                    conn.Open();
                    if (conn.State == ConnectionState.Open)
                    {
                        AddLog("ButtonCBT_Click, opened.");
                        using (OracleCommand cmd = new OracleCommand())
                        {
                            cmd.Connection = conn;
                            if (GenerateOracleCommand(cmd, querySetting.Query, querySetting.Arguments))
                            {
                                if (querySetting.Connected)
                                {
                                    using (OracleDataReader reader = cmd.ExecuteReader())
                                    {
                                        if (querySetting.SelectRead)
                                        {
                                            reader.FetchSize = querySetting.FetchSize;
                                            int rows   = 0;
                                            int fields = 0;
                                            while (reader.Read())
                                            {
                                                rows++;
                                                fields = reader.FieldCount;
                                            }
                                            AddLog($"ButtonCBT_Click, OracleDataReader, row count = {rows}, fields = {fields}");
                                        }
                                        else
                                        {
                                            AddLog($"ButtonCBT_Click, OracleDataReader, has rows = {reader.HasRows}");
                                        }
                                    }
                                }
                                else
                                {
                                    using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))
                                    {
                                        if (querySetting.SelectRead)
                                        {
                                            DataTable dataTable = new DataTable();
                                            adapter.Fill(dataTable);
                                            AddLog($"ButtonCBT_Click, OracleDataAdapter, row count = {dataTable.Rows.Count}, columns = {dataTable.Columns.Count}");
                                        }
                                        else
                                        {
                                            AddLog($"ButtonCBT_Click, OracleDataAdapter, done.");
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        AddLog($"ButtonCBT_Click, open failed, connection state = {conn.State.ToString()}");
                    }
                }
            }
            catch (OracleException ex)
            {
                AddLog($"ButtonCBT_Click, OracleException, {ex.Message}");
            }
            catch (Exception ex)
            {
                AddLog($"ButtonCBT_Click, {ex.ToString()}, {ex.Message}");
            }
            finally
            {
                AddLog("ButtonCBT_Click, ended.");
            }
        }
Exemple #13
0
        private void ReadingJob(MockClient mock, QuerySetting querySetting, CancellationToken cancellationToken)
        {
            try
            {
                if (CanRead(mock.Connection.State) && Interlocked.Exchange(ref mock.IsBusy, 1) == 0)
                {
                    try
                    {
                        using (OracleCommand cmd = new OracleCommand())
                        {
                            cmd.Connection = mock.Connection;
                            if (GenerateOracleCommand(cmd, querySetting.Query, querySetting.Arguments))
                            {
                                if (this.radioButtonConnectionModeConnected1.Checked)
                                {
                                    using (OracleDataReader reader = cmd.ExecuteReader())
                                    {
                                        this.stat.AddReadCount(querySetting.Index, 1);
                                        if (this.radioButtonReadingModeSelectRead1.Checked)
                                        {
                                            reader.FetchSize = querySetting.FetchSize;
                                            while (reader.Read() && !cancellationToken.IsCancellationRequested)
                                            {
                                                this.stat.AddRowCount(querySetting.Index, 1);
                                                this.stat.AddBytes(querySetting.Index, reader.RowSize);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))
                                    {
                                        this.stat.AddReadCount(querySetting.Index, 1);
                                        if (this.radioButtonReadingModeSelectRead1.Checked)
                                        {
                                            DataTable dataTable = new DataTable();
                                            adapter.Fill(dataTable);
                                            this.stat.AddRowCount(querySetting.Index, 1);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    finally
                    {
                        Interlocked.Exchange(ref mock.IsBusy, 0);
                    }
                }
            }
            catch (OperationCanceledException ex)
            {
                // Operation cancelled
            }
            catch (Exception ex)
            {
                AddLog($"ReadingJob, mock index = {mock.SerialNumber}, {ex.ToString()}, {ex.Message}");
                this.stat.AddErrorCount();
            }

            bool CanRead(ConnectionState state)
            {
                bool result = false;

                switch (state)
                {
                case ConnectionState.Open:
                    result = true;
                    break;

                default:
                    result = false;
                    break;
                }
                return(result);
            }
        }