Пример #1
0
        public static int Program(string[] args, Action <RunComplexType, Diagnostics, string[]> programAction)
        {
            bool           exception   = false;
            RunComplexType runSettings = null;
            Diagnostics    diagnostics = null;

            if (File.Exists(args[1]))
            {
                runSettings = FEWSPIProxy.ReadRunFile(args[1]);
                diagnostics = new Diagnostics(runSettings.outputDiagnosticFile, args[0]);
            }

            try
            {
                programAction(runSettings, diagnostics, args);
            }
            catch (Exception e)
            {
                diagnostics.Log(1, string.Format("Exception ({0}: {1}", e.GetType(), e.Message));
                exception = true;
            }
            finally
            {
                if (diagnostics != null)
                {
                    diagnostics.Save();
                }
            }

            return(exception ? 1 : 0);
        }
Пример #2
0
        public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args)
        {
            string serverAddress = args[1];
            bool   exists        = SourceServiceUtils.SourceServerExists(serverAddress);

            Console.WriteLine(exists ? "OK: Server Running at {0}" : "NO: Server Not Running at {0}", serverAddress);
        }
Пример #3
0
        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");
        }
Пример #4
0
        public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args)
        {
            var inputSeries = runSettings.AllInputSeries();

            Array.Sort(inputSeries,
                       ((x, y) =>
            {
                int locationCompare = String.Compare(x.header.locationId, y.header.locationId,
                                                     StringComparison.Ordinal);
                return(locationCompare == 0
                                          ? String.Compare(x.header.parameterId, y.header.parameterId,
                                                           StringComparison.Ordinal)
                                          : locationCompare);
            }));

            Dictionary <string, CSVFileIO> outputSets = new Dictionary <string, CSVFileIO>();

            foreach (TimeSeriesComplexType fewsTS in inputSeries)
            {
                string destinationFn = runSettings.FilenameForTimeSeriesParameter(fewsTS.header.parameterId);
                if (!outputSets.ContainsKey(destinationFn))
                {
                    outputSets[destinationFn] = new CSVFileIO();
                }

                TimeSeries converted = FEWSPIProxy.ConvertTimeSeriesFromFEWS(fewsTS);
                outputSets[destinationFn].use(converted.name, converted);
            }

            Directory.CreateDirectory(runSettings.workDir);
            foreach (var outputSet in outputSets)
            {
                outputSet.Value.save(runSettings.workDir + "\\" + outputSet.Key);
            }

            diagnostics.Log(3, "All Done");
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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");
        }