예제 #1
0
 public DocumentChunkStream(Guid documentID, NetWorkSetting networkSetting)
 {
     this.documentID     = documentID;
     this.networkSetting = networkSetting;
 }
예제 #2
0
        private void UploadRequest(HubRequest request)
        {
            NetWorkSetting networkSetting = Configuration.Instance.GetNetworkSetting(request.NetworkId);

            _log.Info(String.Format("BackgroundProcess:  Processing query {0} (RequestId: {3}, DataMartId: {1}, NetworkId: {2})", request.Source.Identifier, request.DataMartId, networkSetting.NetworkId, request.Source.ID));

            try
            {
                string requestId = request.Source.ID.ToString();

                Lpp.Dns.DataMart.Model.Document[] responseDocuments = request.Processor.Response(requestId);
                Guid[] documentIds = DnsServiceManager.PostResponseDocuments(requestId, request.DataMartId, responseDocuments, networkSetting);
                _log.Info("Number of portal document ids returned by PostResponseDocuments: " + documentIds.Length);
                for (int i = 0; i < documentIds.Length; i++)
                {
                    _log.Info("About to post content for portal document id: " + documentIds[i] + " corresponding to response document id: " + responseDocuments[i].DocumentID);
                    Stream contentStream = null;
                    try
                    {
                        request.Processor.ResponseDocument(requestId, responseDocuments[i].DocumentID, out contentStream, 60000);
                        DnsServiceManager.PostResponseDocumentContent(documentIds[i], contentStream, networkSetting)
                        .LogExceptions(_log.Error)
                        .Catch()
                        .SubscribeOn(Scheduler.Default)
                        .LastOrDefault();
                    }
                    finally
                    {
                        contentStream.CallDispose();
                    }
                }

                if (request.RoutingStatus == Lpp.Dns.DTO.DataMartClient.Enums.DMCRoutingStatus.Failed)
                {
                    HubRequestStatus hubRequestStatus = DnsServiceManager.ConvertModelRequestStatus(request.Processor.Status(requestId));
                    hubRequestStatus.Message = request.Processor.Status(requestId).Message;
                    DnsServiceManager.SetRequestStatus(request, hubRequestStatus, request.Properties, networkSetting);
                    _log.Info(String.Format("The following query {0} (ID: {3}) failed to execute on behalf of {1}:\n\n{2}",
                                            request.Source.Identifier, networkSetting.Profile.Username, hubRequestStatus.Message, request.Source.ID));
                }
                else
                {
                    //MantisID:6331:Zero out low-cell counts if they exist.
                    //string strReason = request.Processor.Status(requestId).Code == RequestStatus.StatusCode.CompleteWithMessage ? request.Processor.Status(requestId).Message : string.Empty;
                    //DnsServiceManager.SetRequestStatus(request, new HubRequestStatus(Lpp.Dns.DTO.DataMartClient.Enums.DMCRoutingStatus.Completed), request.Properties, networkSetting);
                    //if (string.IsNullOrEmpty(strReason))
                    //{
                    //DnsServiceManager.SetRequestStatus(request, new HubRequestStatus(HubRequestStatus.StatusCode.Completed), request.Properties, networkSetting);
                    _log.Info(String.Format("The following query {0} (ID: {2}) was executed and results were uploaded automatically on behalf of {1}",
                                            request.Source.Identifier, networkSetting.Profile.Username, request.Source.ID));
                    //}
                    //else
                    //{
                    //    //DnsServiceManager.SetRequestStatus(request, new HubRequestStatus(HubRequestStatus.StatusCode.Completed, strReason), request.Properties, networkSetting);
                    //    _log.Info(String.Format("The following query {0} (ID: {3}) was executed and results were uploaded automatically on behalf of {1}:\n\n{2}",
                    //        request.Source.Identifier, networkSetting.Profile.Username, strReason, request.Source.ID));
                    //}
                }
            }
            catch (Exception ex)
            {
                string message = string.Format("An error occurred while attempting unattended processing of the following query {0} (ID: {1})", request.Source.Identifier, request.Source.ID);
                _log.Error(message, ex);
                DnsServiceManager.SetRequestStatus(request, new HubRequestStatus(Lpp.Dns.DTO.DataMartClient.Enums.DMCRoutingStatus.Failed, message), request.Properties, networkSetting);
            }

            _log.Info(String.Format("BackgroundProcess:  Finished Processing / Uploading results for query {0} (RequestID: {3}, DataMartId: {1}, NetworkId: {2})", request.Source.Identifier, request.DataMartId, networkSetting.NetworkId, request.Source.ID));
        }
예제 #3
0
 public void AddNetworkSetting(NetWorkSetting ns)
 {
     ns.NetworkId = FindUnusedNetworkId();
     NetworkSettingCollection.NetWorkSettings.Add(ns);
 }
예제 #4
0
        private void PopulateDataMarts(ref NetWorkSetting ns)
        {
            try
            {
                if (!DnsServiceManager.LogIn(ns))
                {
                    return;
                }

                // Find matching existing datamarts and update their info. Append new datamarts and remove deleted ones.
                var newDMs = ns.GetDataMartsByUser().EmptyIfNull();
                if ((dgvDataMarts.DataSource as IEnumerable <DataMartDescription>).NullOrEmpty())
                {
                    dgvDataMarts.DataSource = newDMs;
                }
                else
                {
                    (from oldDataMarts in dgvDataMarts.DataSource as IEnumerable <DataMartDescription>
                     join newDataMarts in newDMs on oldDataMarts.DataMartId equals newDataMarts.DataMartId
                     select new { oldDM = oldDataMarts, newDM = newDataMarts }).ForEach(d =>
                    {
                        // Append new datamarts.
                        // For each existing datamart, find matching existing model and update their info.
                        d.oldDM.DataMartName     = d.newDM.DataMartName;
                        d.oldDM.OrganizationId   = d.newDM.OrganizationId;
                        d.oldDM.OrganizationName = d.newDM.OrganizationName;

                        if (d.oldDM.ModelList != null && d.newDM.ModelList != null)
                        {
                            (from oldModel in d.oldDM.ModelList.Cast <ModelDescription>()
                             join newModel in d.newDM.ModelList.Cast <ModelDescription>() on oldModel.ModelId equals newModel.ModelId
                             select new { oldModel = oldModel, newModel = newModel }).ForEach(m =>
                            {
                                m.oldModel.ModelName        = m.newModel.ModelName;
                                m.oldModel.ModelDisplayName = m.newModel.ModelDisplayName;
                            });
                        }
                    });

                    var ds = new List <DataMartDescription>();
                    ds.AddRange(dgvDataMarts.DataSource as IEnumerable <DataMartDescription>);

                    ds.AddRange(from newDataMart in newDMs
                                where !ds.Any(es => (es.DataMartId == newDataMart.DataMartId))
                                select newDataMart);

                    ds.RemoveAll(r => !newDMs.Any(es => es.DataMartId == r.DataMartId));

                    dgvDataMarts.DataSource = ds;
                }

                dgvDataMarts.Refresh();
                if (ns.DataMartList != null && ns.DataMartList.Count > 0)
                {
                    Configuration.Instance.LoadModels(ns);

                    btnEdit.Enabled      = btnRefreshDMlist.Enabled = true;
                    btnApply.Enabled     = btnOk.Enabled = true;
                    dgvDataMarts.Enabled = true;
                }
                else
                {
                    dgvDataMarts.Enabled = false;
                    btnEdit.Enabled      = false;
                    MessageBox.Show("No network DataMart(s) found", Application.ProductName);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #5
0
 private void NetworkSettingChanged_EventHandler(object sender, NetWorkSetting ns)
 {
     LoadPage();
     ConfigurationChanged(sender, ns);
 }
 public void OnConfigurationChanged(NetWorkSetting updatedNetworkSetting)
 {
     Network = updatedNetworkSetting;
     AutoProcessor.UpdateNetworkSetting(Network);
     ReloadDatamarts();
 }
        public RequestListGridView(NetWorkSetting ns) : this()
        {
            Network = ns;

            AutoProcessor = new AutoProcessor(Network);
        }
예제 #8
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;

                // Get the network setting for this service url if it exists already.
                NetWorkSetting ns = null;
                try
                {
                    ns = (from n in Configuration.Instance.NetworkSettingCollection.NetWorkSettings.ToArray(typeof(NetWorkSetting)) as NetWorkSetting[]
                          where n.HubWebServiceUrl == txtServiceUrl.Text
                          select n).FirstOrDefault();
                }
                catch
                {
                    Configuration.CreateNewNetworkSettingsFile();
                }

                // If not, create one.
                if (ns == null)
                {
                    ns = new NetWorkSetting();
                    ns.HubWebServiceUrl = txtServiceUrl.Text;
                    Configuration.Instance.AddNetworkSetting(ns);
                }
                else
                {
                    if (MessageBox.Show("This will override your existing configuration for this network.\nAre you sure you want to do that?", "Override Network Configuration?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
                    {
                        this.Close();
                        return;
                    }
                }

                ns.Username          = txtUsername.Text;
                ns.EncryptedPassword = txtPassword.Text;
                ns.NetworkName       = txtNetworkname.Text;
                var selectedCert = cbCertificates.SelectedItem as Cert;
                ns.X509CertThumbprint = selectedCert == null ? null : selectedCert.Thumbprint;
                ns.GetDataMartsByUser();
                Configuration.Instance.LoadModels(ns);
                CredentialManager.SaveCredential(ns.CredentialKey, ns.Username, ns.Password);

                // Get the configuration for all models for all datamarts at this service url.
                var dmc = DnsServiceManager.GetDataMartModelConfigurations(ns);

                // Find the model processor in the existing network if exists. If not, create it.
                XmlSerializer serializer = new XmlSerializer(typeof(ModelProperties));
                foreach (var c in dmc)
                {
                    var d  = ns.DataMartList.FirstOrDefault(dm => dm.DataMartId == c.DataMartId);
                    var mp = d.ModelList.FirstOrDefault(m => m.ModelId == c.ModelId && m.ProcessorId == c.ModelProcessorId);

                    if (d != null && mp != null && !string.IsNullOrEmpty(c.Properties))
                    {
                        using (XmlTextReader reader = new XmlTextReader(new MemoryStream(new System.Text.UTF8Encoding().GetBytes(c.Properties))))
                        {
                            d.AllowUnattendedOperation             = c.UnattendedMode != Lpp.Dns.DataMart.Lib.Classes.UnattendedMode.NoUnattendedOperation;
                            d.NotifyOfNewQueries                   = c.UnattendedMode == Lpp.Dns.DataMart.Lib.Classes.UnattendedMode.NotifyOnly;
                            d.ProcessQueriesAndNotUpload           = c.UnattendedMode == Lpp.Dns.DataMart.Lib.Classes.UnattendedMode.ProcessNoUpload;
                            d.ProcessQueriesAndUploadAutomatically = c.UnattendedMode == Lpp.Dns.DataMart.Lib.Classes.UnattendedMode.ProcessAndUpload;
                            var p = new List <PropertyData>();
                            p.AddRange(((ModelProperties)serializer.Deserialize(reader)).Properties.Where(prop => prop.Name != "ConfirmPassword"));
                            mp.Properties = p;

                            if (mp.ProcessorId != Guid.Empty)
                            {
                                try
                                {
                                    //TODO: confirm the latest package exists for the model/processor combination

                                    var packageIdentifier = DnsServiceManager.GetRequestTypeIdentifier(ns, mp.ModelId, mp.ProcessorId);
                                    if (packageIdentifier != null && !File.Exists(Path.Combine(Configuration.PackagesFolderPath, packageIdentifier.Identifier + "." + packageIdentifier.Version + ".zip")))
                                    {
                                        DnsServiceManager.DownloadPackage(ns, packageIdentifier);
                                    }

                                    //string processorPath, className;
                                    //ProcessorManager.FindProcessor(mp.ModelId, mp.ProcessorId, out processorPath, out className);
                                    //mp.ProcessorPath = processorPath;
                                    //mp.ClassName = className;
                                }
                                catch (Exception ex)
                                {
                                    log.Error("Unable to load processor.", ex);
                                }
                            }
                        }
                    }
                }

                Configuration.SaveNetworkSettings();

                if (NetworkSettingChanged != null)
                {
                    NetworkSettingChanged(this, ns);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Update Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                this.Cursor = Cursors.Default;
                this.Close();
            }
        }
예제 #9
0
 public RequestListGridView(NetWorkSetting ns)
     : this()
 {
     Network = ns;
 }