/// <summary>Does the post simulation stuff.</summary> private void DoPostSimulation() { DataSet dataSet = new DataSet("ReportData"); foreach (string outFileName in Directory.GetFiles(workingDirectory, "*.txt")) { try { dataSet.Tables.Add(TxtToTable(outFileName)); } catch (Exception) { // Sometimes .txt files are empty - ignore them.. } } // Call Farm4Prophet web service. using (F4P.F4PClient f4pClient = new F4P.F4PClient()) { try { f4pClient.StoreReport(jobName, dataSet); } catch (Exception) { throw new Exception("Cannot call F4P StoreReport web service method"); } } }
/// <summary>Called to start the job.</summary> /// <param name="jobManager">Job manager</param> /// <param name="worker">Background worker</param> public void Run(JobManager jobManager, BackgroundWorker worker) { // Read in the yield prophet specification. string[] xmlFiles = Directory.GetFiles(workingDirectory, "*.xml"); if (xmlFiles.Length == 0) throw new Exception("Cannot find yieldprophet xml file in working directory."); string yieldProphetFileName = xmlFiles[0]; StreamReader reader = new StreamReader(yieldProphetFileName); YieldProphet yieldProphet = YieldProphetUtility.YieldProphetFromXML(reader.ReadToEnd(), workingDirectory); reader.Close(); // Call the YP reporting webservice. DataSet dataSet = new DataSet("ReportData"); foreach (string outFileName in Directory.GetFiles(workingDirectory, "*.csv")) try { dataSet.Tables.Add(ApsimTextFile.ToTable(outFileName)); } catch (Exception) { // Sometimes .out files are empty - not an error. } foreach (string outFileName in Directory.GetFiles(workingDirectory, "*.out")) try { dataSet.Tables.Add(ApsimTextFile.ToTable(outFileName)); } catch (Exception) { // Sometimes .out files are empty - not an error. } // Clean the table names (no spaces or underscores) foreach (DataTable table in dataSet.Tables) { string tableName = table.TableName.Replace(" ", ""); tableName = tableName.Replace("_", ""); table.TableName = tableName; } if (yieldProphet.ReportType == YieldProphet.ReportTypeEnum.F4P) { // Farm 4 Prophet - StoreReport using (F4P.F4PClient f4pClient = new F4P.F4PClient()) { try { f4pClient.StoreReport(reportName, dataSet); } catch (Exception) { throw new Exception("Cannot call F4P StoreReport web service method"); } } } else if (yieldProphet.ReportName != null && yieldProphet.ReportName.Length > 4) { // YieldProphet - StoreReport // validation runs have a report name of the year e.g. 2015. // Don't need to call StoreReport for them. using (YPReporting.ReportingClient ypClient = new YPReporting.ReportingClient()) { try { ypClient.StoreReport(reportName, dataSet); } catch (Exception) { throw new Exception("Cannot call YP StoreReport web service method"); } } } }