Ejemplo n.º 1
0
        protected virtual ResponseItem DoProcessRequestItem(RequestItem requestItem)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug("요청 Id=[{0}], Method=[{1}], Query=[{2}]에 대한 작업 처리를 시작합니다.",
                          requestItem.Id, requestItem.Method, requestItem.Query);
            }

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            var responseItem = new ResponseItem(requestItem);

            if (requestItem.Query.IsWhiteSpace())
            {
                return(responseItem);
            }

            try {
                ExecuteQueries(requestItem.PreQueries);

                var adoParams = requestItem.BuildAdoParameters().ToArray();

                if (requestItem.ResponseFormat == ResponseFormatKind.ResultSet)
                {
                    OpenQuery(requestItem, responseItem, adoParams);
                }
                else
                {
                    ExecuteQuery(requestItem, responseItem, adoParams);
                }

                ExecuteQueries(requestItem.PostQueries);
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.ErrorException("쿼리문 수행에 실패했습니다. Query=" + requestItem.Query, ex);
                }

                responseItem.Errors.Add(new ErrorMessage(ex));
            }

            stopwatch.Stop();
            responseItem.ExecutionTime = stopwatch.Elapsed;

            if (log.IsDebugEnabled)
            {
                log.Debug("요청 Id=[{0}], Method=[{1}], Query=[{2}]에 대한 작업 처리를 완료했습니다!!! 수행시간=[{3}]",
                          requestItem.Id, requestItem.Method, requestItem.Query, responseItem.ExecutionTime);
            }

            return(responseItem);
        }