private loaderResultsStruct runCallableLoaderMethod(XDocument loaderRecord) { string loaderSessionID = string.Empty; loaderResultsStruct selectReturn = null; bool ifRetry = true; int retryCounter = 0; bool isContingency = false; DateTime runStartTime = DateTime.Now; GenevaWfmInterface.GenevaSoap.Service webServ = new GenevaWfmInterface.GenevaSoap.Service(); webServ.Url = m_genevaUrl; while (ifRetry) { try { if (loaderSessionID.Equals(String.Empty)) loaderSessionID = webServ.StartCallableLoader(m_genevaPort, m_genevaHostName, m_genevaUid, m_genevaPassword); selectReturn = webServ.RunCallableLoader(loaderSessionID, loaderRecord.ToString(), "-x -bvc -iu"); int recSuccess = 0; int recFailure = 0; foreach (loaderResultsVectorElement r in selectReturn.results) { if (r.status.Equals("Failure")) { _log.Error(r.message); recFailure++; } else recSuccess++; } _log.InfoFormat("Uploaded to Geneva: {0} records successfully, {1} records failed.", recSuccess, recFailure); message = String.Format("Uploaded to Geneva: {0} records successfully, {1} records failed.", recSuccess, recFailure); if (isContingency) SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call succeeded."); ifRetry = false; } catch (System.Web.Services.Protocols.SoapException wex) { if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0) { isContingency = true; SendMailMessage(listTo, listFrom, subject, wex.ToString()); _log.Error(wex.Message); _log.ErrorFormat("Retrying {0}/{1} minutes", ++retryCounter, minutesSoapRetry); Thread.Sleep(60000); } else { SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call timed out. Giving up now."); message = "Geneva SOAP call timed out. Giving up now."; ifRetry = false; } } catch (Exception e) { _log.Error(e.Message); message = e.Message; throw e; } } return selectReturn; }
private object runReportSelectLiteral(string query) { object results = null; string runrepSessionID = string.Empty; bool ifRetry = true; int retryCounter = 0; bool isContingency = false; DateTime runStartTime = DateTime.Now; GenevaWfmInterface.GenevaSoap.Service webServ = new GenevaWfmInterface.GenevaSoap.Service(); webServ.Url = m_genevaUrl; while (ifRetry) { try { if (runrepSessionID.Equals(String.Empty)) runrepSessionID = webServ.StartCallableRunrep(m_genevaPort, m_genevaHostName, m_genevaUid, m_genevaPassword, "-f empty"); results = webServ.RunCallableRunrepRunSelectLiteral(runrepSessionID, query, ""); webServ.ShutdownCallableSession(runrepSessionID); if (isContingency) { SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call succeeded."); message = "Geneva SOAP call succeeded."; } ifRetry = false; } catch (System.Web.Services.Protocols.SoapException wex) { if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0) { isContingency = true; SendMailMessage(listTo, listFrom, subject, wex.ToString()); _log.Error(wex.Message); _log.ErrorFormat("Retrying {0}/{1} minutes", ++retryCounter, minutesSoapRetry); Thread.Sleep(60000); } else { SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call timed out. Giving up now."); message = "Geneva SOAP call timed out. Giving up now."; ifRetry = false; } } catch (Exception e) { _log.Error(e.Message); message = e.Message; throw e; } } return results; }