Exemple #1
0
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            String alias = "union_src_" + Guid.NewGuid().ToString().Substring(0, 5);

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("(");
            for (int i = 0, queriesLength = Queries.Length; i < queriesLength; i++)
            {
                ISelectionQuery query  = Queries[i];
                QueryBuildInfo  result = dbLayer.DataManipulate().ProcessQuery(buildInfo, query.Structure);
                if (i > 0)
                {
                    sqlBuilder.Append(" UNION ");
                    if (All)
                    {
                        sqlBuilder.Append(" ALL ");
                    }
                }
                sqlBuilder.Append(result.ExecInfo.Sql + " union_src_" + i);
            }

            sqlBuilder.Append(") ").Append(alias);
            buildInfo.AddUnionAlias(alias);

            return(sqlBuilder.ToString());
        }
        public ICollection <Object> Select(ISelectionQuery query, ITransaction tx)
        {
            IDataReader rs = null;

            try
            {
                var logSb     = new StringBuilder();
                var showQuery = Config.ShowQueries;
                var buildInfo = DbLayer.DataManipulate().ProcessQuery(null, query.Structure);
                var execInfo  = buildInfo.ExecInfo;

                if (showQuery)
                {
                    logSb.Append(execInfo.Sql);
                    foreach (var param in execInfo.Params)
                    {
                        logSb.Append(" ,").Append("Param").Append(param.Index).Append("=").Append(param.Value);
                    }
                    Logger.GetLogger(Config.LoggerName).Debug(logSb.ToString());
                }

                rs = DbLayer.DataManipulate().CreateResultSet(tx, execInfo);

                IList <Object> retList = new List <Object> ();
                ICollection <IQuerySelection> selections = query.Structure.SelectList;
                var selectionCount = selections.Count;

                while (rs.Read())
                {
                    int count = 0;

                    object rowObject = selectionCount > 1 ? new object[selectionCount] : null;
                    foreach (IQuerySelection selection in selections)
                    {
                        Object loaded = ((IAbstractSelection)selection).Retrieve(rs, tx, buildInfo);
                        if (selectionCount > 1)
                        {
                            ((object[])rowObject)[count++] = loaded;
                        }
                        else
                        {
                            rowObject = loaded;
                        }
                    }
                    retList.Add(rowObject);
                }

                return(retList);
            }
            catch (Exception e)
            {
                Logger.GetLogger(Config.LoggerName).Error(e.Message, e);
                throw new RetrievalException(e.Message, e);
            }
            finally
            {
                DbMgtUtility.Close(rs);
            }
        }
Exemple #3
0
        public static IQuerySelection Query(ISelectionQuery query, String alias)
        {
            var expressionSelection =
                (AbstractExpressionSelection)_factory.CreateSelection(QuerySelectionExpressionType.Expression);

            expressionSelection.Expr = SelectExpr.Build().Query(query, alias);
            return(expressionSelection);
        }
Exemple #4
0
        public static IQueryFrom Query(ISelectionQuery query, String alias)
        {
            var queryFromSub = (AbstractSubQueryFrom)_factory.CreateFrom(QueryFromExpressionType.Query);

            queryFromSub.Query = query;
            ;
            if (!string.IsNullOrEmpty(alias))
            {
                queryFromSub.Alias = alias;
            }
            return(queryFromSub);
        }
Exemple #5
0
 public ICollection <Object> Select(ISelectionQuery query, ITransaction tx)
 {
     return(_persistRetrievalLayer.Select(query, tx));
 }
Exemple #6
0
        protected T BaseQuery(ISelectionQuery query, string alias)
        {
            var segment = new QuerySegment(query, alias);

            return(AddSegment(segment));
        }
Exemple #7
0
 protected T BaseQuery(ISelectionQuery query)
 {
     return(BaseQuery(query, null));
 }
Exemple #8
0
 public ConditionExpr Query(ISelectionQuery query)
 {
     return(BaseQuery(query));
 }
Exemple #9
0
 public ICollection <Object> Select(ISelectionQuery query, ITransaction tx)
 {
     return(_retrievalOperationLayer.Select(query, tx));
 }
Exemple #10
0
 public void AddQueryAlias(string alias, ISelectionQuery query)
 {
     _aliases.Add(_currentQueryId + alias, query);
 }
Exemple #11
0
 public QuerySegment(ISelectionQuery query, string alias)
 {
     _query = query;
     _alias = alias;
 }
Exemple #12
0
 public SelectExpr Query(ISelectionQuery query, string alias)
 {
     return(BaseQuery(query, alias));
 }
Exemple #13
0
 public static IQueryFrom Query(ISelectionQuery query)
 {
     return(Query(query, null));
 }