public void Save(string dataSource, Analysis analysis, bool overWrite) { System.Text.StringBuilder text = new System.Text.StringBuilder(); if (Attributes == null) { Attributes = new NativeArffAttributes(); } if (overWrite && System.IO.File.Exists(dataSource)) { System.IO.File.Delete(dataSource); } if (!System.IO.File.Exists(dataSource)) { WriteHeader(text, dataSource, analysis.Events.ConversionFactor); WriteFixtureProfiles(text, analysis.FixtureProfiles); WriteLog(text, analysis.Log); WriteEventsHeader(text); } WriteEvents(text, analysis.Events, analysis.KeyCode); if (FlowsExist(analysis)) { WriteFlows(text, analysis.Events); } System.IO.File.AppendAllText(dataSource, text.ToString()); }
public Analysis Load(string dataSource) { string[] lines = System.IO.File.ReadAllLines(dataSource); if (IsOldVersion(lines)) { throw new Exception("Please migrate the analysis file " + dataSource + " to version " + TwAssembly.Version() + " or later."); } double twConversionFactor = GetTwConversionFactor(lines); Attributes = LoadAttributes(lines); LogMeter log = LoadLog(lines); FixtureProfiles fixtureProfiles = LoadFixtureProfiles(lines); Events events = LoadEvents(lines); LoadFlows(lines, events); events.UpdateVolume(); var analysis = new AnalysisDatabase(dataSource, events, log, fixtureProfiles); analysis.Events.ConversionFactor = twConversionFactor; analysis.Events.UpdateChannel(); analysis.Events.UpdateSuperPeak(); analysis.Events.UpdateLinkedList(); analysis.Events.UpdateOriginalVolume(); return(analysis); }
ArffAttributes LoadAttributes(string[] lines) { var attributes = new ArffAttributes(); foreach (string line in lines) { if (line.Contains("@DATA")) { break; } if (ContainsAttribute(line, "keycode")) { attributes.IsKeyCodeEnabled = true; } if (ContainsAttribute(line, "eventid")) { attributes.IsEventIdEnabled = true; } if (ContainsAttribute(line, "starttime")) { attributes.IsStartTimeEnabled = true; } if (ContainsAttribute(line, "endtime")) { attributes.IsEndTimeEnabled = true; } if (ContainsAttribute(line, "duration")) { attributes.IsDurationEnabled = true; } if (ContainsAttribute(line, "firstcycle")) { attributes.IsFirstCycleEnabled = true; } if (ContainsAttribute(line, "preserved")) { attributes.IsManuallyClassifiedEnabled = true; } if (ContainsAttribute(line, "channel")) { attributes.IsChannelEnabled = true; } if (ContainsAttribute(line, "volume")) { attributes.IsVolumeEnabled = true; } if (ContainsAttribute(line, "peak")) { attributes.IsPeakEnabled = true; } if (ContainsAttribute(line, "mode")) { attributes.IsModeEnabled = true; } if (ContainsAttribute(line, "modefrequency")) { attributes.IsModeFrequencyEnabled = true; } if (ContainsAttribute(line, "hour")) { attributes.IsHourEnabled = true; } if (ContainsAttribute(line, "isweekend")) { attributes.IsIsWeekendEnabled = true; } if (ContainsAttribute(line, "timetolongerevent")) { attributes.IsTimeToLongerEventEnabled = true; } if (ContainsAttribute(line, "notes")) { attributes.IsUserNotesEnabled = true; } if (ContainsAttribute(line, "class")) { attributes.FixtureClasses = new List <FixtureClass>(); foreach (FixtureClass fixtureClass in FixtureClasses.Items.Values) { attributes.FixtureClasses.Add(fixtureClass); } } if (ContainsAttribute(line, "classifiedusingfixturelist")) { attributes.IsClassifiedUsingFixtureListEnabled = true; } if (ContainsAttribute(line, "manuallyapproved")) { attributes.IsManuallyApprovedEnabled = true; } if (ContainsAttribute(line, "manuallyclassifiedfirstcycle")) { attributes.IsManuallyClassifiedFirstCycleEnabled = true; } } return(attributes); }