Example #1
0
        private void GetDataFromBloomberg(ref XmlDocument xdocNewInvestmentData, ref XmlDocument xdocPartial, ref int countSuccess, ref int countFailed, DataTable dtKickouts)
        {
            log.InfoFormat(job.KeyCode, "Preparing for Bloomberg SOAP call.");

            XmlDocument xdocBbDataPartialResponse = new XmlDocument();
            XmlNode investmentsPartialResponse = xdocBbDataPartialResponse.CreateNode(XmlNodeType.Element, "Investments", "");
            xdocBbDataPartialResponse.AppendChild(investmentsPartialResponse);

            XmlDocument xdocBbDataFailedResponse = new XmlDocument();
            XmlNode investmentsFailedResponse = xdocBbDataFailedResponse.CreateNode(XmlNodeType.Element, "Investments", "");
            xdocBbDataFailedResponse.AppendChild(investmentsFailedResponse);

            SecMasterDataRetrieve bbWebService = new SecMasterDataRetrieve(this);
            GetDataService service = bbWebService.ConnectToBloombergService(certPath);

            try
            {
                bbWebService.DeleteView(service);
            }
            catch { }

            ifRetry = true;
            bool isContingency = false;
            DateTime runStartTime = DateTime.Now;

            DataTable dtEquities = Filter(dtKickouts, "Equity");  //includes options
            DataTable dtBonds = Filter(dtKickouts, "Bond");
            DataTable dtFutures = Filter(dtKickouts, "Future");

            if (dtEquities.Rows.Count > 0)
                GetDataFromBloombergInvestmentType("Equity", ref xdocNewInvestmentData, xdocPartial, ref countSuccess, ref countFailed, dtKickouts, ref xdocBbDataPartialResponse, ref xdocBbDataFailedResponse, bbWebService, service, ref isContingency, ref runStartTime);

            if (dtBonds.Rows.Count > 0)
                GetDataFromBloombergInvestmentType("Bond", ref xdocNewInvestmentData, xdocPartial, ref countSuccess, ref countFailed, dtKickouts, ref xdocBbDataPartialResponse, ref xdocBbDataFailedResponse, bbWebService, service, ref isContingency, ref runStartTime);

            if (dtFutures.Rows.Count > 0)
                GetDataFromBloombergInvestmentType("Future", ref xdocNewInvestmentData, xdocPartial, ref countSuccess, ref countFailed, dtKickouts, ref xdocBbDataPartialResponse, ref xdocBbDataFailedResponse, bbWebService, service, ref isContingency, ref runStartTime);

            return;
        }
Example #2
0
        private void GetDataFromBloombergInvestmentType(string investmentType, ref XmlDocument xdocNewInvestmentData, XmlDocument xdocPartial, ref int countSuccess, ref int countFailed, DataTable dtKickouts, ref XmlDocument xdocBbDataPartialResponse, ref XmlDocument xdocBbDataFailedResponse, SecMasterDataRetrieve bbWebService, GetDataService service, ref bool isContingency, ref DateTime runStartTime)
        {
            while (ifRetry)
            {
                try
                {
                    log.InfoFormat(job.KeyCode, "Attempting Bloomberg SOAP call");

                    string fieldsFilename = String.Format("{0}\\{1}.xml", fieldsPath, investmentType);

                    if (bbWebService.CreateView(job.KeyCode, service, fieldsFilename))
                    {
                        bbWebService.BloombergSoapCall(job.KeyCode, service, dtKickouts, ref xdocNewInvestmentData, ref xdocBbDataPartialResponse,
                            ref xdocBbDataFailedResponse, recCountTotal, ref countSuccess, ref countFailed);

                        if (isContingency)
                            SendMailMessage(job.KeyCode, ListTo, ListFrom, Subject, "Bloomberg SOAP call succeeded.");
                    }

                    ifRetry = false;
                }
                catch (Exception ex)
                {
                    log.Error(job.KeyCode, ex);

                    if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0)
                    {
                        isContingency = true;
                        if (!ListTo.Equals(String.Empty))
                            SendMailMessage(job.KeyCode, ListTo, ListFrom, Subject, ex.ToString());
                        Thread.Sleep(60000);
                    }
                    else
                    {
                        SendMailMessage(job.KeyCode, ListTo, ListFrom, Subject, "Bloomberg SOAP call failed too many times and timed out. Giving up now.");
                        ifRetry = false;
                    }
                }
            }
            bbWebService.DeleteView(service);

            foreach (XmlNode node in xdocBbDataPartialResponse.DocumentElement.ChildNodes)
            {
                XmlNode newNode = xdocPartial.ImportNode(node, true);
                xdocPartial.FirstChild.FirstChild.AppendChild(newNode);
            }
        }
Example #3
0
 public SecMasterDataRetrieve(SecMasterDataRetrieve copy)
     : base(copy.Name)
 {
     exe = copy.Exe;
     certPath = copy.CertPath;
     commandArgs = copy.commandArgs;
     workingPath = copy.WorkingPath;
     datasource = copy.Datasource;
     ifUseOccSymbol = copy.IfUseOccSymbol;
     fieldsPath = copy.FieldsPath;
     xmlTrades = copy.XmlTrades;
     timeout = copy.Timeout;
     xdocBbFields = copy.xdocBbFields;
     htIntlOptions = copy.htIntlOptions;
 }