예제 #1
0
        public override DbCommand CreateSelectRangeCommand(WhereClip where, string[] columns, int topCount, int skipCount, string identyColumn, bool identyColumnIsNumber)
        {
            //Check.Require(((object)where) != null && where.From != null, "expr and expr.From could not be null!");
            //Check.Require(columns != null && columns.Length > 0, "columns could not be null or empty!");
            //Check.Require(topCount > 0, "topCount must > 0!");

            if (string.IsNullOrEmpty(where.OrderBy) && identyColumn != null)
            {
                where.SetOrderBy(new KeyValuePair <string, bool>[] { new KeyValuePair <string, bool>(identyColumn, false) });
            }

            if (topCount == int.MaxValue && skipCount == 0)
            {
                return(CreateSelectCommand(where, columns));
            }
            else if (skipCount == 0)
            {
                return(CreateSelectTopCommand(where, columns, topCount));
            }
            else
            {
                //Check.Require(!string.IsNullOrEmpty(identyColumn), "identyColumn could not be null or empty!");

                identyColumn = ColumnFormatter.ValidColumnName(identyColumn);

                if (identyColumnIsNumber && where.OrderByStartsWith(identyColumn) && (string.IsNullOrEmpty(where.GroupBy) || where.GroupBy == identyColumn))
                {
                    return(CreateSelectRangeCommandForSortedRows(where, columns, topCount, skipCount, identyColumn, where.OrderByStartsWith(identyColumn + " DESC")));
                }
                else
                {
                    return(CreateSelectRangeCommandForUnsortedRows(where, columns, topCount, skipCount, identyColumn));
                }
            }
        }
예제 #2
0
        public static string RemoveQuotesForJavaScriptMethods(string input, GridView grid)
        {
            string str = input;

            foreach (Column column in grid.Columns)
            {
                if (((column.Formatter != null) && (column.Formatter.Count > 0)) && (column.Formatter[0] != null))
                {
                    ColumnFormatter formatter = column.Formatter[0];
                    if (formatter is CustomFormatter)
                    {
                        CustomFormatter formatter2 = (CustomFormatter)formatter;
                        string          oldValue   = string.Format("\"formatter\":\"{0}\"", formatter2.FormatFunction);
                        string          newValue   = string.Format("\"formatter\":{0}", formatter2.FormatFunction);
                        str      = str.Replace(oldValue, newValue);
                        oldValue = string.Format("\"unformat\":\"{0}\"", formatter2.UnFormatFunction);
                        newValue = string.Format("\"unformat\":{0}", formatter2.UnFormatFunction);
                        str      = str.Replace(oldValue, newValue);
                    }
                }
                foreach (EditClientSideValidator validator in column.EditClientSideValidators)
                {
                    if (validator is CustomValidator)
                    {
                        var    validator2 = (CustomValidator)validator;
                        string str4       = string.Format("\"custom_func\":\"{0}\"", validator2.ValidationFunction);
                        string str5       = string.Format("\"custom_func\":{0}", validator2.ValidationFunction);
                        str = str.Replace(str4, str5);
                    }
                }
            }
            return(str);
        }
예제 #3
0
        public SqlQueryBody Build(bool selectCount = false)
        {
            SqlQueryBody queryBody = new SqlQueryBody()
            {
                QueryMap = QueryMap
            };

            if (string.IsNullOrEmpty(alias))
            {
                alias          = tableName;
                queryBody.From = tableName;
            }
            else
            {
                queryBody.From = string.Format("{0} {1}", tableName, alias);
            }

            if (columnNames.Count < 1)
            {
                queryBody.ColumnEnumeration = "*";
            }
            else
            {
                queryBody.ColumnEnumeration = ColumnFormatter.Format(columnNames, alias);
            }

            if (selectCount)
            {
                var countFunction = dialect.GetFunction(FunctionNames.Count);
                var sql           = countFunction.ToSqlStatement(new QueryParam("*", null));
                queryBody.ColumnEnumeration = sql;
            }

            StringBuilder joinBuilder = new StringBuilder();

            if (joins.Count > 0)
            {
                string jtype = "JOIN";

                foreach (var join in joins.Values)
                {
                    switch (join.Type)
                    {
                    case JoinType.Inner:
                        jtype = "INNER JOIN";
                        break;

                    case JoinType.Left:
                        jtype = "LEFT JOIN";
                        break;

                    case JoinType.Right:
                        jtype = "RIGHT JOIN";
                        break;

                    case JoinType.Full:
                        jtype = "FULL JOIN";
                        break;
                    }

                    joinBuilder.AppendFormat("{0} {1} {2} ON ", jtype, join.JoinTableName, join.JoinTableAlias);

                    string leftSide = string.Format("{0}.{1}", join.JoinLeftTableAlias, join.JoinRightColumn);
                    if (join.JoinRightColumn.Contains("."))
                    {
                        leftSide = join.JoinRightColumn;
                    }

                    string rightSide = string.Format("{0}.{1}", join.JoinTableAlias, join.JoinLeftColumn);
                    if (join.JoinLeftColumn.Contains("."))
                    {
                        rightSide = join.JoinLeftColumn;
                    }

                    joinBuilder.AppendFormat("{0} = {1} ", leftSide, rightSide);
                }

                queryBody.JoinEnumeration = joinBuilder.ToString().Trim();
            }

            if (whereClauses.Count > 0)
            {
                var firstWhere = whereClauses[0];
                var sql        = firstWhere.BuildSqlString(dialect, 0);
                AddToParameterList(sql.Item2);
                StringBuilder wherebuilder = new StringBuilder();
                wherebuilder.AppendFormat("{0} ", sql.Item1);

                if (whereClauses.Count > 1)
                {
                    for (int i = 1; i < whereClauses.Count; i++)
                    {
                        var where = whereClauses[i].BuildSqlString(dialect, i);
                        AddToParameterList(where.Item2);

                        string prep = "AND";
                        if (whereClauses[i].PreOperator != SqlOperator.AND)
                        {
                            prep = "OR";
                        }

                        wherebuilder.AppendFormat("{0} {1} ", prep, where.Item1);
                    }
                }

                queryBody.WhereExpression = wherebuilder.ToString().Trim();
            }

            if (sortClauses.Count > 0)
            {
                queryBody.SortExpression = string.Join(", ", sortClauses);
            }

            return(queryBody);
        }
예제 #4
0
        public override DbCommand CreateSelectRangeCommand(WhereClip where, string[] columns, int topCount, int skipCount, string identyColumn, bool identyColumnIsNumber)
        {
            //Check.Require(((object)where) != null && where.From != null, "expr and expr.From could not be null!");
            //Check.Require(columns != null && columns.Length > 0, "columns could not be null or empty!");
            //Check.Require(topCount > 0, "topCount must > 0!");

            if (string.IsNullOrEmpty(where.OrderBy) && identyColumn != null)
            {
                where.SetOrderBy(new KeyValuePair <string, bool>[] { new KeyValuePair <string, bool>(identyColumn, false) });
            }

            if (topCount == int.MaxValue && skipCount == 0)
            {
                return(CreateSelectCommand(where, columns));
            }
            else
            {
                //Check.Require(!string.IsNullOrEmpty(identyColumn), "identyColumn could not be null or empty!");

                identyColumn = ColumnFormatter.ValidColumnName(identyColumn);

                //page split algorithm using ROW_NUMBER() in Oracle9+

                DbCommand cmd = fac.CreateCommand();
                cmd.CommandType = CommandType.Text;

                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT *");
                //for (int i = 0; i < columns.Length; ++i)
                //{
                //    sb.Append("[__T].[__C");
                //    sb.Append(i);
                //    sb.Append(']');

                //    if (i < columns.Length - 1)
                //    {
                //        sb.Append(',');
                //    }
                //}
                sb.Append(" FROM (");
                sb.Append("SELECT ");
                for (int i = 0; i < columns.Length; ++i)
                {
                    SqlQueryUtils.AppendColumnName(sb, columns[i]);

                    if (i < columns.Length - 1)
                    {
                        sb.Append(',');
                    }
                }
                sb.Append(",ROW_NUMBER() OVER (ORDER BY ");
                if (string.IsNullOrEmpty(where.OrderBy))
                {
                    sb.Append(identyColumn);
                }
                else
                {
                    sb.Append(where.OrderBy);
                }
                sb.Append(") AS [__Pos]");
                sb.Append(" FROM ");

                if (string.IsNullOrEmpty(where.OrderBy))
                {
                    sb.Append(where.ToString());
                }
                else
                {
                    lock (where)
                    {
                        string tempOrderBy = where.OrderBy;
                        where.OrderBy = null;
                        sb.Append(where.ToString());
                        where.OrderBy = tempOrderBy;
                    }
                }
                sb.Append(") [__T] WHERE [__T].[__Pos]>");
                sb.Append(skipCount);
                if (topCount < int.MaxValue && (int.MaxValue - topCount > skipCount))
                {
                    sb.Append(" AND [__T].[__Pos]<=");
                    sb.Append(topCount + skipCount);
                    sb.Append(' ');
                }

                AddExpressionParameters(where, cmd);

                cmd.CommandText = SqlQueryUtils.ReplaceDatabaseTokens(sb.ToString(), leftToken, rightToken, paramPrefixToken, wildcharToken, wildsinglecharToken);
                PrepareCommand(cmd);
                return(cmd);
            }
        }
예제 #5
0
 private void ApplyFormatterOptions(Column column)
 {
     if ((column.Formatter.Count > 0) && (column.Formatter[0] != null))
     {
         ColumnFormatter formatter = column.Formatter[0];
         Hashtable       hashtable = new Hashtable();
         if (formatter is LinkFormatter)
         {
             LinkFormatter formatter2 = (LinkFormatter)formatter;
             _jsonValues["formatter"] = "link";
             if (!string.IsNullOrEmpty(formatter2.Target))
             {
                 hashtable["target"] = formatter2.Target;
             }
         }
         if (formatter is EmailFormatter)
         {
             _jsonValues["formatter"] = "email";
         }
         if (formatter is IntegerFormatter)
         {
             IntegerFormatter formatter3 = (IntegerFormatter)formatter;
             _jsonValues["formatter"] = "integer";
             if (!string.IsNullOrEmpty(formatter3.ThousandsSeparator))
             {
                 hashtable["thousandsSeparator"] = formatter3.ThousandsSeparator;
             }
             if (!string.IsNullOrEmpty(formatter3.DefaultValue))
             {
                 hashtable["defaultValue"] = formatter3.DefaultValue;
             }
         }
         if (formatter is NumberFormatter)
         {
             NumberFormatter formatter4 = (NumberFormatter)formatter;
             _jsonValues["formatter"] = "integer";
             if (!string.IsNullOrEmpty(formatter4.ThousandsSeparator))
             {
                 hashtable["thousandsSeparator"] = formatter4.ThousandsSeparator;
             }
             if (!string.IsNullOrEmpty(formatter4.DefaultValue))
             {
                 hashtable["defaultValue"] = formatter4.DefaultValue;
             }
             if (!string.IsNullOrEmpty(formatter4.DecimalSeparator))
             {
                 hashtable["decimalSeparator"] = formatter4.DecimalSeparator;
             }
             if (formatter4.DecimalPlaces != -1)
             {
                 hashtable["decimalPlaces"] = formatter4.DecimalPlaces;
             }
         }
         if (formatter is CurrencyFormatter)
         {
             CurrencyFormatter formatter5 = (CurrencyFormatter)formatter;
             _jsonValues["formatter"] = "currency";
             if (!string.IsNullOrEmpty(formatter5.ThousandsSeparator))
             {
                 hashtable["thousandsSeparator"] = formatter5.ThousandsSeparator;
             }
             if (!string.IsNullOrEmpty(formatter5.DefaultValue))
             {
                 hashtable["defaultValue"] = formatter5.DefaultValue;
             }
             if (!string.IsNullOrEmpty(formatter5.DecimalSeparator))
             {
                 hashtable["decimalSeparator"] = formatter5.DecimalSeparator;
             }
             if (formatter5.DecimalPlaces != -1)
             {
                 hashtable["decimalPlaces"] = formatter5.DecimalPlaces;
             }
             if (!string.IsNullOrEmpty(formatter5.Prefix))
             {
                 hashtable["prefix"] = formatter5.Prefix;
             }
             if (!string.IsNullOrEmpty(formatter5.Prefix))
             {
                 hashtable["suffix"] = formatter5.Suffix;
             }
         }
         if (formatter is CheckBoxFormatter)
         {
             CheckBoxFormatter formatter6 = (CheckBoxFormatter)formatter;
             _jsonValues["formatter"] = "checkbox";
             if (formatter6.Enabled)
             {
                 hashtable["disabled"] = false;
             }
         }
         if (formatter is CustomFormatter)
         {
             CustomFormatter formatter7 = (CustomFormatter)formatter;
             if (!string.IsNullOrEmpty(formatter7.FormatFunction))
             {
                 _jsonValues["formatter"] = formatter7.FormatFunction;
             }
             if (!string.IsNullOrEmpty(formatter7.UnFormatFunction))
             {
                 _jsonValues["unformat"] = formatter7.UnFormatFunction;
             }
         }
         if (hashtable.Count > 0)
         {
             _jsonValues["formatoptions"] = hashtable;
         }
     }
 }