private void JoinButton_Click(object sender, EventArgs e) { try { if (TimeseriesList.Items.Count <= 0) throw new GeneralException("No timeseries to join were defined.", ExceptionType.WARNING); if (string.IsNullOrWhiteSpace(OutputTimeseriesTextbox.Text)) throw new GeneralException("You must define the output timeseries.", ExceptionType.WARNING); else { try { output.FullPath = OutputTimeseriesTextbox.Text; if (!System.IO.Directory.Exists(output.Path)) throw new GeneralException("The path '" + output.Path + "' doesn't exist.", ExceptionType.WARNING); else if (System.IO.File.Exists(output.FullPath)) { if (MessageBox.Show("The file '" + output.FullName + "' exists. Do you want to OVERWRITE it?", "WARNING", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No) return; } } catch (GeneralException) { throw; } catch (Exception ex) { throw new GeneralException(ex.Message, ExceptionType.ERROR); } } FileName file = new FileName(); List<TimeSeries> timeSeries = new List<TimeSeries>(); foreach (object ts in TimeseriesList.Items) { file.FullPath = (string)ts; TimeSeries newTS = new TimeSeries(); newTS.Load(file); timeSeries.Add(newTS); } DateTime start = timeSeries[0].StartInstant; for (int i = 1; i < timeSeries.Count; i++) { if (timeSeries[i].StartInstant < start) start = timeSeries[i].StartInstant; } TimeSeries outTS = new TimeSeries(); outTS.StartInstant = start; outTS.TimeUnits = (TimeUnits)Enum.Parse(typeof(TimeUnits), (string)TimeUnitsCombobox.SelectedItem, true); foreach (Column col in timeSeries[0].Columns) { Column newCol = new Column(col.ColumnType); newCol.Header = col.Header; outTS.AddColumn(newCol); } foreach (TimeSeries toJoin in timeSeries) outTS.AddTimeSeries(toJoin); output.FullPath = OutputTimeseriesTextbox.Text; outTS.Save(output); MessageBox.Show("Proccess Completed."); } catch (GeneralException gex) { switch (gex.Type) { case ExceptionType.ERROR: MessageBox.Show(gex.Message, "ERROR", MessageBoxButtons.OK); break; case ExceptionType.WARNING: MessageBox.Show(gex.Message, "WARNING", MessageBoxButtons.OK); break; default: MessageBox.Show("An unknown error happened. The message returned was: " + gex.Message, "ERROR", MessageBoxButtons.OK); break; } } catch (Exception ex) { MessageBox.Show("An unknown error happened. The message returned was: " + ex.Message, "ERROR", MessageBoxButtons.OK); } }
static void Main(string[] args) { string stepMessage = ""; FileName outputFileName; try { stepMessage = "command line arguments loading."; CmdArgs cmdArgs = new CmdArgs(args); if (cmdArgs.HasParameter("cfg")) { stepMessage = "configuration file loading."; Config conf = new Config(cmdArgs.Parameters["cfg"]); conf.Load(); stepMessage = "configuration file parsing."; ConfigNode nodeList = conf.Root.ChildNodes.Find(delegate(ConfigNode node){ return node.Name == "timeseries.to.join"; }); if (nodeList == null) throw new Exception("Block 'timeseries.to.join' is missing."); outputFileName = conf.Root["output.file.name", "output.tsr"].AsFileName(); TimeUnits timeUnits = (TimeUnits) Enum.Parse(typeof(TimeUnits), conf.Root["time.units", "seconds"].AsString(), true); List<FileName> list = new List<FileName>(); foreach (KeyValuePair<string, KeywordData> item in nodeList.NodeData) list.Add(item.Value.AsFileName()); if (list.Count <= 1) throw new Exception("Block 'timeseries.to.join' must contain at least 2 entries"); stepMessage = "loading timeseries."; List<TimeSeries> timeSeries = new List<TimeSeries>(); foreach(FileName ts in list) { TimeSeries newTS = new TimeSeries(); newTS.Load(ts); timeSeries.Add(newTS); } DateTime start = timeSeries[0].StartInstant; for (int i = 1; i < timeSeries.Count; i++) { if (timeSeries[i].StartInstant < start) start = timeSeries[i].StartInstant; } stepMessage = "creating output timeseries."; TimeSeries outTS = new TimeSeries(); outTS.StartInstant = start; outTS.TimeUnits = timeUnits; foreach (Column col in timeSeries[0].Columns) { Column newCol = new Column(col.ColumnType); newCol.Header = col.Header; outTS.AddColumn(newCol); } foreach (TimeSeries toJoin in timeSeries) outTS.AddTimeSeries(toJoin); stepMessage = "saving output timeseries."; outTS.Save(outputFileName); Console.WriteLine("Process complete with success."); } else { Console.WriteLine("Parameter --cfg is missing."); Console.WriteLine("Execution aborted."); return; } } catch (Exception ex) { Console.WriteLine("An exception was raised while {0}", stepMessage); Console.WriteLine("Exception message: {0}", ex.Message); } }
protected void JoinTimeseriesByFolder(FileName output, string filter, List<FilePath> folders_to_search, bool search_sub_folders = true, bool overwrite = true, TimeUnits tu = TimeUnits.SECONDS) { try { if (folders_to_search == null || folders_to_search.Count <= 0) throw new Exception("No folders to search timeseries were defined."); if (string.IsNullOrWhiteSpace(output.FullPath)) throw new Exception("No timeseries output was defined"); if (!System.IO.Directory.Exists(output.Path)) throw new Exception("The path '" + output.Path + "' doesn't exist."); if (System.IO.File.Exists(output.FullPath) && !overwrite) throw new Exception("The file '" + output.FullName + "' exists and overwrite is set to false."); if (string.IsNullOrWhiteSpace(filter)) throw new Exception("Filter was not set."); int found = 0; List<FileName> files = new List<FileName>(); List<TimeSeries> timeSeries = new List<TimeSeries>(); System.IO.SearchOption so; if (search_sub_folders) so = System.IO.SearchOption.AllDirectories; else so = System.IO.SearchOption.TopDirectoryOnly; foreach (FilePath path in folders_to_search) { found = FindFiles(path, files, filter, so); foreach (FileName fi in files) { TimeSeries newTS = new TimeSeries(); newTS.Load(fi); timeSeries.Add(newTS); } } if (timeSeries.Count <= 0) return; //Finds the Start Date for the output timeseries in the list of loaded timeseries DateTime start = timeSeries[0].StartInstant; for (int i = 1; i < timeSeries.Count; i++) { if (timeSeries[i].StartInstant < start) start = timeSeries[i].StartInstant; } TimeSeries outTS = new TimeSeries(); outTS.StartInstant = start; outTS.TimeUnits = tu; foreach (Column col in timeSeries[0].Columns) { Column newCol = new Column(col.ColumnType); newCol.Header = col.Header; outTS.AddColumn(newCol); } foreach (TimeSeries toJoin in timeSeries) outTS.AddTimeSeries(toJoin); outTS.Save(output); } catch (Exception ex) { exception_raised = true; exception = new Exception("ScriptV8.JoinTimeseriesByFolder", ex); throw exception; } }