public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; FaultDataResource faultDataResource; DataGroup dataGroup; VICycleDataGroup viCycleDataGroup; FaultGroup faultGroup; string rootFileName; string fileName; cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer)); faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer)); if (!Directory.Exists(m_resultsPath)) { Directory.CreateDirectory(m_resultsPath); } for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup)) { rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath); fileName = string.Format("{0},{1:000},Line{2}.xml", rootFileName, i, dataGroup.Line.AssetKey); viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; WriteResults(meterDataSet, dataGroup, viCycleDataGroup, faultGroup.Faults, Path.Combine(m_resultsPath, fileName)); } } }
public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; FaultDataResource faultDataResource; DataGroup dataGroup; FaultGroup faultGroup; List <int> seriesIDs; EventDataSet eventDataSet; string rootFileName; string fileName; cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer)); faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer)); if (!Directory.Exists(m_resultsPath)) { Directory.CreateDirectory(m_resultsPath); } for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup)) { rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath); fileName = string.Format("{0},{1:000},Line{2}.dat", rootFileName, i, dataGroup.Line.AssetKey); seriesIDs = dataGroup.DataSeries .Select(series => series.SeriesInfo.ID) .ToList(); eventDataSet = new EventDataSet() { ResultsPath = Path.Combine(m_resultsPath, fileName), MeterDataSet = meterDataSet, TimeZoneOffset = GetTimeZoneOffset(meterDataSet.Meter.TimeZone, dataGroup.StartTime), DataGroup = dataGroup, VICycleDataGroup = cycleDataResource.VICycleDataGroups[i], Faults = faultGroup.Faults, OutputChannels = dbAdapterContainer.GetAdapter <FaultLocationInfoDataContext>().OutputChannels.Where(channel => seriesIDs.Contains(channel.SeriesID)).ToList() }; WriteResults(eventDataSet); } } }
public void Initialize(MeterDataSet meterDataSet) { ConnectionStringParser.ParseConnectionString(meterDataSet.ConnectionString, this); m_disturbances = new Dictionary <DataGroup, List <Disturbance> >(); CycleDataResource cycleDataResource = meterDataSet.GetResource <CycleDataResource>(); int lineCount = meterDataSet.Meter.MeterLines.Count; for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { DataGroup dataGroup = cycleDataResource.DataGroups[i]; VICycleDataGroup viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; Range <DateTime> eventDateRange = new Range <DateTime>(dataGroup.StartTime, dataGroup.EndTime); if (lineCount == 1 && dataGroup.Disturbances.Count > 0) { ProcessReportedDisturbances(meterDataSet.Meter, dataGroup); } else { DetectDisturbances(dataGroup, viCycleDataGroup); } } DataGroupsResource dataGroupsResource = meterDataSet.GetResource <DataGroupsResource>(); foreach (DataGroup dataGroup in dataGroupsResource.DataGroups) { if (dataGroup.DataSeries.Count > 0) { continue; } if (lineCount == 1 && dataGroup.Disturbances.Count > 0) { ProcessReportedDisturbances(meterDataSet.Meter, dataGroup); } } }
public void Initialize(MeterDataSet meterDataSet) { DataGroup dataGroup; VICycleDataGroup viCycleDataGroup; CycleDataResource cycleDataResource; ConnectionStringParser.ParseConnectionString(meterDataSet.ConnectionString, this); m_disturbances = new Dictionary <DataGroup, List <Disturbance> >(); cycleDataResource = meterDataSet.GetResource <CycleDataResource>(); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; DetectDisturbances(dataGroup, viCycleDataGroup); } }
public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; FaultDataResource faultDataResource; DataGroup dataGroup; FaultGroup faultGroup; List<int> seriesIDs; EventDataSet eventDataSet; string rootFileName; string fileName; cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer)); faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer)); if (!Directory.Exists(m_resultsPath)) Directory.CreateDirectory(m_resultsPath); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup)) { rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath); fileName = string.Format("{0},{1:000},Line{2}.dat", rootFileName, i, dataGroup.Line.AssetKey); seriesIDs = dataGroup.DataSeries .Select(series => series.SeriesInfo.ID) .ToList(); eventDataSet = new EventDataSet() { ResultsPath = Path.Combine(m_resultsPath, fileName), MeterDataSet = meterDataSet, TimeZoneOffset = GetTimeZoneOffset(meterDataSet.Meter.TimeZone, dataGroup.StartTime), DataGroup = dataGroup, VICycleDataGroup = cycleDataResource.VICycleDataGroups[i], Faults = faultGroup.Faults, OutputChannels = dbAdapterContainer.GetAdapter<FaultLocationInfoDataContext>().OutputChannels.Where(channel => seriesIDs.Contains(channel.SeriesID)).ToList() }; WriteResults(eventDataSet); } } }
public void Parse(string filePath) { Schema schema = Parser.Schema; Meter meter = new Meter(); meter.MeterLocation = new MeterLocation(); meter.Channels = new List <Channel>(); meter.AssetKey = schema.DeviceID; meter.Name = schema.DeviceID; meter.ShortName = schema.DeviceID.Substring(0, Math.Min(schema.DeviceID.Length, 50)); MeterLocation meterLocation = meter.MeterLocation; meterLocation.Meters = new List <Meter>() { meter }; meterLocation.AssetKey = schema.StationName; meterLocation.Name = schema.StationName; meterLocation.ShortName = schema.StationName.Substring(0, Math.Min(schema.StationName.Length, 50)); meterLocation.Description = schema.StationName; foreach (AnalogChannel analogChannel in schema.AnalogChannels) { Channel channel = ParseSeries(analogChannel); channel.Meter = meter; DataSeries dataSeries = new DataSeries(); dataSeries.SeriesInfo = channel.Series[0]; meter.Channels.Add(channel); while (MeterDataSet.DataSeries.Count <= analogChannel.Index) { MeterDataSet.DataSeries.Add(new DataSeries()); } MeterDataSet.DataSeries[analogChannel.Index] = dataSeries; } foreach (DigitalChannel digitalChannel in schema.DigitalChannels) { Channel channel = ParseSeries(digitalChannel); channel.Meter = meter; DataSeries dataSeries = new DataSeries(); dataSeries.SeriesInfo = channel.Series[0]; meter.Channels.Add(channel); while (MeterDataSet.Digitals.Count <= digitalChannel.Index) { MeterDataSet.Digitals.Add(new DataSeries()); } MeterDataSet.Digitals[digitalChannel.Index] = dataSeries; } try { while (Parser.ReadNext()) { for (int i = 0; i < schema.AnalogChannels.Length; i++) { int seriesIndex = schema.AnalogChannels[i].Index; string units = schema.AnalogChannels[i].Units.ToUpper(); double multiplier = (units.Contains("KA") || units.Contains("KV")) ? 1000.0D : 1.0D; MeterDataSet.DataSeries[seriesIndex].DataPoints.Add(new DataPoint() { Time = Parser.Timestamp, Value = multiplier * Parser.PrimaryValues[i] }); } for (int i = 0; i < schema.DigitalChannels.Length; i++) { int valuesIndex = schema.TotalAnalogChannels + i; int seriesIndex = schema.DigitalChannels[i].Index; MeterDataSet.Digitals[seriesIndex].DataPoints.Add(new DataPoint() { Time = Parser.Timestamp, Value = Parser.Values[valuesIndex] }); } } } catch (InvalidOperationException ex) { Log.Warn(ex.Message, ex); } MeterDataSet.Meter = meter; string infFilePath = Path.ChangeExtension(filePath, "inf"); if (File.Exists(infFilePath)) { IniFile infFile = new IniFile(infFilePath); INFDataSet infDataSet = new INFDataSet(infFile); MeterDataSet.GetResource(() => new BreakerRestrikeResource(infDataSet)); } }
public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; FaultDataResource faultDataResource; DataGroup dataGroup; VICycleDataGroup viCycleDataGroup; FaultGroup faultGroup; string rootFileName; string fileName; cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer)); faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer)); if (!Directory.Exists(m_resultsPath)) Directory.CreateDirectory(m_resultsPath); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup)) { rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath); fileName = string.Format("{0},{1:000},Line{2}.xml", rootFileName, i, dataGroup.Line.AssetKey); viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; WriteResults(meterDataSet, dataGroup, viCycleDataGroup, faultGroup.Faults, Path.Combine(m_resultsPath, fileName)); } } }