private void ParseSeries(GSF.PQDIF.Logical.ChannelInstance channelInstance, PQds.Model.Channel channel, PQds.Model.Event evt) { PQds.Model.DataSeries dataSeries = new DataSeries(); dataSeries.EventID = evt.ID; dataSeries.ChannelID = channel.ID; Guid quantityType = channelInstance.Definition.QuantityTypeID; SeriesInstance timeSeries = null; SeriesInstance valuesSeries = null; if (isPOW(quantityType)) { timeSeries = channelInstance.SeriesInstances.Single(series => series.Definition.ValueTypeID == SeriesValueType.Time); valuesSeries = channelInstance.SeriesInstances.Single(series => series.Definition.ValueTypeID == SeriesValueType.Val); } else { return; } List <double> values = valuesSeries.OriginalValues.Select(val => Convert.ToDouble(val)).ToList(); List <DateTime> timeStamps = new List <DateTime>(); if (timeSeries.Definition.QuantityUnits == QuantityUnits.Seconds) { // If time series is in seconds from start time of the observation record, // TimeValues must be calculated by adding values to start time timeStamps = timeSeries.OriginalValues .Select(Convert.ToDouble) .Select(seconds => (long)(seconds * TimeSpan.TicksPerSecond)) .Select(TimeSpan.FromTicks) .Select(timeSpan => channelInstance.ObservationRecord.StartTime + timeSpan) .ToList(); } else if (timeSeries.Definition.QuantityUnits == QuantityUnits.Timestamp) { // If time series is a collection of absolute time, seconds from start time // must be calculated by subtracting the start time of the observation record timeStamps = timeSeries.OriginalValues.Cast <DateTime>().ToList(); } dataSeries.Series = timeStamps.Select((item, index) => new PQds.Model.DataPoint() { Time = item, Value = values[index] }).ToList(); using (AdoDataConnection connection = new AdoDataConnection("systemSettings")) { GSF.Data.Model.TableOperations <PQds.Model.DataSeries> dataSeriesTable = new GSF.Data.Model.TableOperations <PQds.Model.DataSeries>(connection); dataSeriesTable.AddNewRecord(dataSeries); } }
/// <summary> /// Removes the given channel instance from the collection of channel instances. /// </summary> /// <param name="channelInstance">The channel instance to be removed.</param> public void Remove(ChannelInstance channelInstance) { CollectionElement channelInstancesElement = m_physicalRecord.Body.Collection.GetCollectionByTag(ChannelInstancesTag); List <CollectionElement> channelInstanceElements; ChannelInstance instance; if ((object)channelInstancesElement == null) { return; } channelInstanceElements = channelInstancesElement.GetElementsByTag(OneChannelInstanceTag).Cast <CollectionElement>().ToList(); foreach (CollectionElement channelSettingElement in channelInstanceElements) { instance = new ChannelInstance(channelSettingElement, this); if (Equals(channelInstance, instance)) { channelInstancesElement.RemoveElement(channelSettingElement); } } }
/// <summary> /// Adds a new channel instance to the collection /// of channel instances in this observation record. /// </summary> public ChannelInstance AddNewChannelInstance() { CollectionElement channelInstancesElement = m_physicalRecord.Body.Collection.GetCollectionByTag(ChannelInstancesTag); CollectionElement channelInstanceElement = new CollectionElement() { TagOfElement = OneChannelInstanceTag }; ChannelInstance channelInstance = new ChannelInstance(channelInstanceElement, this); if ((object)channelInstancesElement == null) { channelInstancesElement = new CollectionElement() { TagOfElement = OneChannelInstanceTag }; m_physicalRecord.Body.Collection.AddElement(channelInstancesElement); } channelInstancesElement.AddElement(channelInstanceElement); return(channelInstance); }
/// <summary> /// Creates a new instance of the <see cref="SeriesInstance"/> class. /// </summary> /// <param name="physicalStructure">The physical structure of the series instance.</param> /// <param name="channel">The channel instance that this series instance resides in.</param> /// <param name="definition">The series definition that defines this series instance.</param> public SeriesInstance(CollectionElement physicalStructure, ChannelInstance channel, SeriesDefinition definition) { m_physicalStructure = physicalStructure; m_channel = channel; m_definition = definition; }