Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
 /// <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;
 }