public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args) { TimeSeries[] results = (TimeSeries[]) NonInteractiveIO.Load(runSettings.workDir + "\\" + runSettings.Property(Keys.OUTPUT_FILE)); diagnostics.Log(3,string.Format("Loaded {0} time series",results.Length)); string forcedTimeStep = runSettings.Property(Keys.FORCED_TIMESTAMP); TimeSeriesCollectionComplexType fewsTimeSeriesCollection = TIMEProxy.FromTimeSeriesCollection(results,runSettings.timeZone,forcedTimeStep); string outputFn = runSettings.outputTimeSeriesFile[0]; FEWSPIProxy.WriteTimeSeriesCollection(outputFn, fewsTimeSeriesCollection); diagnostics.Log(3,string.Format("Written {0} time series to {1}",fewsTimeSeriesCollection.series.Length,outputFn)); diagnostics.Log(3,"All Done"); }
public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args) { string sourceExe = runSettings.SourceExeToUse().Replace('/', '\\'); string registryName = "SourceFromFEWSPlugins"; // Set RegistryPath for sourceExe to X RegistryKey timeKey = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("TIME"); RegistryKey registryPaths = timeKey.CreateSubKey("RegistryPaths"); registryPaths.SetValue(sourceExe, registryName); registryPaths.SetValue(sourceExe.Replace("CommandLine","Forms"),registryName); RegistryKey pluginsKey = timeKey.CreateSubKey(registryName); pluginsKey.ClearValues(); int i = 0; foreach (string plugin in Directory.EnumerateFiles(runSettings.Property(Keys.PLUGIN_DIR), "*.dll")) { i++; pluginsKey.SetValue(String.Format("Assembly{0}",i),plugin); } }
public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args) { var start = DateTimeComplexType.DateTimeFromPI(runSettings.startDateTime); var end = DateTimeComplexType.DateTimeFromPI(runSettings.endDateTime); // string dateFormat = "dd/MM/yyyy"; var dtf = Thread.CurrentThread.CurrentCulture.DateTimeFormat; string dateFormat = dtf.ShortDatePattern; // "MM/dd/yyyy"; if (runSettings.TimeStepInSeconds != 86400) dateFormat += " HH:mm:ss"; string sourceExe = runSettings.SourceExeToUse(); string sourceProject = runSettings.Property(Keys.PROJECT_FILE); string sourceOutput = runSettings.Property(Keys.OUTPUT_FILE); if (File.Exists(sourceOutput)) { diagnostics.Log(3,string.Format("Deleting old source output file {0}",sourceOutput)); File.Delete(sourceOutput); } string mode = runSettings.ExecutionMode(); if (mode == "") { if(runSettings.ConfiguredServer()!="") diagnostics.Log(3,string.Format("Running locally because configured server ({0}) is unavailable",runSettings.ConfiguredServer())); } else sourceProject = ""; string sourceCommand = string.Format("-p \"{0};;{1};{2}\" {4} -o {3}", sourceProject, start.ToString(dateFormat), end.ToString(dateFormat), sourceOutput,mode); diagnostics.Log(3, string.Format("Starting Source Run with command line {0}",sourceCommand)); ProcessStartInfo startInfo = new ProcessStartInfo { Arguments = sourceCommand, CreateNoWindow = true, FileName = sourceExe, UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true }; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); string errors = p.StandardError.ReadToEnd(); if (!File.Exists(sourceOutput)) { File.WriteAllText(runSettings.workDir+"\\SourceErrors.txt",errors); File.WriteAllText(runSettings.workDir+"\\SourceOutput.txt",output); foreach (string line in errors.Split('\n')) diagnostics.Log(1, line); throw new Exception(string.Format("Source run failed. No output file: {0}", sourceOutput)); } diagnostics.Log(3,"All done"); }