Ejemplo n.º 1
0
        public void PostProcess(string requestId)
        {
            if (_currentResponse == null)
            {
                return;
            }

            using (QueryComposer.IModelAdapter adapter = GetModelAdapter(true))
            {
                adapter.Initialize(Settings, requestId);

                adapter.PostProcess(_currentResponse);

                if (_currentResponse.RequestID == Guid.Empty)
                {
                    Guid id;
                    if (Guid.TryParse(requestId, out id))
                    {
                        _currentResponse.RequestID = id;
                    }
                }

                ////replace the current response with the post-processed response.
                _responseDocuments.Clear();
                _responseDocuments.AddRange(adapter.OutputDocuments());

                status.Code    = RequestStatus.StatusCode.Complete;
                status.Message = string.Empty;
            }
        }
Ejemplo n.º 2
0
        public void Start(string requestId, bool viewSQL = false)
        {
            if (_request == null && !IsDistributedRegressionRequest)
            {
                throw new NullReferenceException("The deserialized request is null, please make sure that RequestDocument is called first and that the request document is not null.");
            }

            using (QueryComposer.IModelAdapter adapter = GetModelAdapter(true))
            {
                adapter.Initialize(Settings, requestId);

                if (viewSQL && !adapter.CanViewSQL)
                {
                    throw new Exception("The adapter does not support providing the SQL of the query.");
                }

                if (IsDistributedRegressionRequest)
                {
                    var drAdapter = adapter as QueryComposer.Adapters.DistributedRegression.DistributedRegressionModelAdapter;
                    //DO DR Stuff here
                    try
                    {
                        DocumentEx[] outputDocuments = drAdapter.StartRequest(_drDocuments).ToArray();
                        if (outputDocuments != null && outputDocuments.Length > 0)
                        {
                            _responseDocuments.AddRange(outputDocuments);
                        }

                        //Message may become timeout values reached Error
                        string message = string.Empty;
                        status.PostProcess = false;
                        status.Message     = message;
                        status.Code        = RequestStatus.StatusCode.Complete;
                    }
                    catch (Exception ex)
                    {
                        status.Code    = RequestStatus.StatusCode.Error;
                        status.Message = ex.Message;
                    }
                }
                else
                {
                    var _tempResponse = adapter.Execute(_request, viewSQL);

                    var outputDocuments = adapter.OutputDocuments();

                    if (viewSQL)
                    {
                        var resultDocument = outputDocuments.First();
                        resultDocument.Document.DocumentID = SqlResponseDocumentID.ToString("D");
                        resultDocument.ID    = SqlResponseDocumentID;
                        _SqlResponseDocument = resultDocument;
                    }
                    else
                    {
                        _SqlResponseDocument = null;
                        _responseDocuments.Clear();
                        _responseDocuments.AddRange(outputDocuments);
                        _currentResponse = _tempResponse;
                    }
                    string message = string.Empty;
                    status.PostProcess = !viewSQL && adapter.CanPostProcess(_tempResponse, out message);
                    status.Message     = message;
                    //May have to alter this cause _currentResponse May be empty
                    if (_tempResponse.Errors != null && _tempResponse.Errors.Any())
                    {
                        status.Code    = RequestStatus.StatusCode.Error;
                        status.Message = string.Join(Environment.NewLine, _tempResponse.Errors.Select(err => err.Description));
                    }
                    else
                    {
                        status.Code = string.IsNullOrWhiteSpace(status.Message) ? RequestStatus.StatusCode.Complete : RequestStatus.StatusCode.CompleteWithMessage;
                    }
                }
            }
        }