Exemple #1
0
        private static void LoadEmail(int eventID, List <Recipient> recipients, string subject, string body)
        {
            EventTableAdapter eventAdapter = s_dbAdapterContainer.GetAdapter <EventTableAdapter>();

            MeterData.EventRow       eventRow    = eventAdapter.GetDataByID(eventID)[0];
            MeterData.EventDataTable systemEvent = eventAdapter.GetSystemEvent(eventRow.StartTime, eventRow.EndTime, s_timeTolerance);

            FaultEmailTableAdapter faultEmailAdapter = s_dbAdapterContainer.GetAdapter <FaultEmailTableAdapter>();

            FaultLocationData.FaultEmailDataTable      faultEmailTable      = new FaultLocationData.FaultEmailDataTable();
            FaultLocationData.EventFaultEmailDataTable eventFaultEmailTable = new FaultLocationData.EventFaultEmailDataTable();

            DateTime now    = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, s_timeZone);
            string   toLine = string.Join("; ", recipients.Select(recipient => recipient.Email));

            BulkLoader bulkLoader;

            faultEmailTable.AddFaultEmailRow(now, toLine, subject, body);
            faultEmailAdapter.Update(faultEmailTable);

            foreach (MeterData.EventRow evt in systemEvent)
            {
                if (eventRow.LineID == evt.LineID)
                {
                    eventFaultEmailTable.AddEventFaultEmailRow(evt.ID, faultEmailTable[0].ID);
                }
            }

            bulkLoader                = new BulkLoader();
            bulkLoader.Connection     = s_dbAdapterContainer.Connection;
            bulkLoader.CommandTimeout = s_dbAdapterContainer.CommandTimeout;
            bulkLoader.Load(eventFaultEmailTable);
        }
Exemple #2
0
        private void LoadEvents(MeterDataSet meterDataSet, List <DataGroup> dataGroups, List <VICycleDataGroup> viCycleDataGroups, Dictionary <DataGroup, EventClassification> classifications)
        {
            DataGroup           dataGroup;
            EventClassification eventClassification;
            int eventTypeID;

            MeterData.EventRow     eventRow;
            MeterData.EventDataRow eventDataRow;

            m_eventTable     = new MeterData.EventDataTable();
            m_eventDataTable = new MeterData.EventDataDataTable();
            m_eventList      = new List <Tuple <WaveformKey, MeterData.EventRow> >();

            for (int i = 0; i < dataGroups.Count; i++)
            {
                dataGroup = dataGroups[i];

                if (dataGroup.Classification == DataClassification.Trend || dataGroup.Classification == DataClassification.Unknown)
                {
                    continue;
                }

                if (!classifications.TryGetValue(dataGroup, out eventClassification))
                {
                    continue;
                }

                if (!s_eventTypeLookup.TryGetValue(eventClassification, out eventTypeID))
                {
                    continue;
                }

                Log.Debug(string.Format("Processing event with event type {0}.", eventClassification));

                eventRow                  = m_eventTable.NewEventRow();
                eventRow.FileGroupID      = meterDataSet.FileGroup.ID;
                eventRow.MeterID          = meterDataSet.Meter.ID;
                eventRow.LineID           = dataGroup.Line.ID;
                eventRow.EventTypeID      = eventTypeID;
                eventRow.Name             = string.Empty;
                eventRow.StartTime        = dataGroup.StartTime;
                eventRow.EndTime          = dataGroup.EndTime;
                eventRow.Samples          = dataGroup.Samples;
                eventRow.TimeZoneOffset   = (int)m_timeZone.GetUtcOffset(dataGroup.StartTime).TotalMinutes;
                eventRow.SamplesPerSecond = (int)Math.Round(dataGroup.SamplesPerSecond);
                eventRow.SamplesPerCycle  = Transform.CalculateSamplesPerCycle(dataGroup.SamplesPerSecond, m_systemFrequency);

                eventDataRow                     = m_eventDataTable.NewEventDataRow();
                eventDataRow.FileGroupID         = meterDataSet.FileGroup.ID;
                eventDataRow.RuntimeID           = i;
                eventDataRow.TimeDomainData      = dataGroup.ToData();
                eventDataRow.FrequencyDomainData = viCycleDataGroups[i].ToDataGroup().ToData();
                eventDataRow.MarkedForDeletion   = 0;

                m_eventDataTable.AddEventDataRow(eventDataRow);
                m_eventList.Add(Tuple.Create(CreateWaveformKey(eventDataRow), eventRow));
            }

            Log.Info(string.Format("Finished processing {0} events.", m_eventList.Count));
        }
Exemple #3
0
        private List <MeterDataSet> LoadMeterDataSets(DbAdapterContainer dbAdapterContainer, FileGroup fileGroup)
        {
            List <MeterDataSet> meterDataSets = new List <MeterDataSet>();

            MeterInfoDataContext  meterInfo        = dbAdapterContainer.GetAdapter <MeterInfoDataContext>();
            EventTableAdapter     eventAdapter     = dbAdapterContainer.GetAdapter <EventTableAdapter>();
            EventDataTableAdapter eventDataAdapter = dbAdapterContainer.GetAdapter <EventDataTableAdapter>();

            MeterData.EventDataTable eventTable = eventAdapter.GetDataByFileGroup(fileGroup.ID);

            MeterDataSet meterDataSet;
            DataGroup    dataGroup;

            foreach (IGrouping <int, MeterData.EventRow> eventGroup in eventTable.GroupBy(evt => evt.MeterID))
            {
                meterDataSet       = new MeterDataSet();
                meterDataSet.Meter = meterInfo.Meters.SingleOrDefault(meter => meter.ID == eventGroup.Key);

                foreach (MeterData.EventRow evt in eventGroup)
                {
                    dataGroup = new DataGroup();
                    dataGroup.FromData(meterDataSet.Meter, eventDataAdapter.GetTimeDomainData(evt.EventDataID));

                    foreach (DataSeries dataSeries in dataGroup.DataSeries)
                    {
                        meterDataSet.DataSeries.Add(dataSeries);
                    }
                }

                meterDataSets.Add(meterDataSet);
            }

            return(meterDataSets);
        }