private Dictionary <EventClassification, int> GetEventTypeLookup(DbAdapterContainer dbAdapterContainer) { MeterData.EventTypeDataTable eventTypeTable = new MeterData.EventTypeDataTable(); EventClassification eventClassification = default(EventClassification); foreach (EventClassification classification in Enum.GetValues(typeof(EventClassification))) { eventTypeTable.AddEventTypeRow(classification.ToString(), classification.ToString()); } BulkLoader bulkLoader = new BulkLoader(); bulkLoader.Connection = dbAdapterContainer.Connection; bulkLoader.CommandTimeout = dbAdapterContainer.CommandTimeout; bulkLoader.MergeTableFormat = "MERGE INTO {0} AS Target " + "USING {1} AS Source " + "ON Source.Name = Target.Name " + "WHEN NOT MATCHED THEN " + " INSERT (Name, Description) " + " VALUES (Source.Name, Source.Description);"; bulkLoader.Load(eventTypeTable); dbAdapterContainer.GetAdapter <EventTypeTableAdapter>().Fill(eventTypeTable); return(Enumerable.Select(eventTypeTable .Where(row => Enum.TryParse(row.Name, out eventClassification)), row => Tuple.Create(eventClassification, row.ID)) .ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2)); }
private Dictionary <EventClassification, int> GetEventTypeLookup(DbAdapterContainer dbAdapterContainer) { MeterData.EventTypeDataTable eventTypeTable = new MeterData.EventTypeDataTable(); EventClassification eventClassification = default(EventClassification); foreach (EventClassification classification in Enum.GetValues(typeof(EventClassification))) { eventTypeTable.AddEventTypeRow(classification.ToString(), classification.ToString()); } BulkLoader bulkLoader = new BulkLoader(); bulkLoader.Connection = dbAdapterContainer.Connection; bulkLoader.CommandTimeout = dbAdapterContainer.CommandTimeout; bulkLoader.MergeTableFormat = "MERGE INTO {0} AS Target " + "USING {1} AS Source " + "ON Source.Name = Target.Name " + "WHEN NOT MATCHED THEN " + " INSERT (Name, Description) " + " VALUES (Source.Name, Source.Description);"; bulkLoader.Load(eventTypeTable); dbAdapterContainer.GetAdapter <EventTypeTableAdapter>().Fill(eventTypeTable); return(eventTypeTable .Where(row => Enum.TryParse(row.Name, out eventClassification)) .Select(row => new { EventClassification = eventClassification, row.ID }) .ToList() .GroupBy(obj => obj.EventClassification) .ToDictionary(grouping => grouping.Key, grouping => { if (grouping.Count() > 1) { Log.Warn($"Found duplicate event type: {grouping.Key}"); } return grouping.First().ID; })); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request["eventId"] != null) { if (Request["faultcurves"] != null) { postedShowFaultCurves = Request["faultcurves"]; } if (Request["breakerdigitals"] != null) { postedShowBreakerDigitals = Request["breakerdigitals"]; } postedURLQueryString = string.Concat(Request.QueryString.AllKeys .Where(key => !key.Equals("eventId", StringComparison.OrdinalIgnoreCase)) .Select(key => "&" + HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(Request.QueryString[key]))); postedEventId = Request["eventId"]; using (DbAdapterContainer dbAdapterContainer = new DbAdapterContainer(connectionString)) { try { EventTypeTableAdapter eventTypeAdapter = dbAdapterContainer.GetAdapter <EventTypeTableAdapter>(); EventTableAdapter eventAdapter = dbAdapterContainer.GetAdapter <EventTableAdapter>(); MeterInfoDataContext meterInfo = dbAdapterContainer.GetAdapter <MeterInfoDataContext>(); FaultSummaryTableAdapter summaryInfo = dbAdapterContainer.GetAdapter <FaultSummaryTableAdapter>(); DisturbanceTableAdapter disturbanceAdapter = dbAdapterContainer.GetAdapter <DisturbanceTableAdapter>(); MeterData.EventRow theevent = eventAdapter.GetDataByID(Convert.ToInt32(postedEventId)).First(); JavaScriptSerializer serializer = new JavaScriptSerializer(); postedSeriesList = serializer.Serialize(signalService.GetFlotInfo(theevent.ID)); postedMeterId = theevent.MeterID.ToString(); postedDate = theevent.StartTime.ToShortDateString(); postedEventId = theevent.ID.ToString(); postedEventDate = theevent.StartTime.ToString("yyyy-MM-dd HH:mm:ss.fffffff"); postedEventMilliseconds = theevent.StartTime.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString(); postedMeterName = meterInfo.Meters.Single(m => m.ID == theevent.MeterID).Name; MeterData.EventTypeDataTable eventTypes = eventTypeAdapter.GetData(); postedAdjacentEventIds = GetPreviousAndNextEventIds(theevent.ID, dbAdapterContainer.Connection); postedLineName = meterInfo.MeterLines.Where(row => row.LineID == theevent.LineID) .Where(row => row.MeterID == theevent.MeterID) .Select(row => row.LineName) .FirstOrDefault() ?? ""; postedLineLength = meterInfo.Lines .Where(row => row.ID == theevent.LineID) .Select(row => row.Length) .AsEnumerable() .Select(length => length.ToString()) .FirstOrDefault() ?? ""; postedEventName = eventTypes .Where(row => row.ID == theevent.EventTypeID) .Select(row => row.Name) .DefaultIfEmpty("") .Single(); if (postedEventName.Equals("Fault")) { FaultLocationData.FaultSummaryDataTable thesummarydatatable = summaryInfo.GetDataBy(Convert.ToInt32(postedEventId)); FaultLocationData.FaultSummaryRow thesummary = thesummarydatatable .Where(row => row.IsSelectedAlgorithm == 1) .OrderBy(row => row.IsSuppressed) .ThenBy(row => row.Inception) .FirstOrDefault(); if ((object)thesummary != null) { postedStartTime = thesummary.Inception.TimeOfDay.ToString(); postedDurationPeriod = thesummary.DurationCycles.ToString("##.##", CultureInfo.InvariantCulture) + " cycles"; postedMagnitude = thesummary.CurrentMagnitude.ToString("####.#", CultureInfo.InvariantCulture) + " Amps (RMS)"; } } else if (new[] { "Sag", "Swell" }.Contains(postedEventName)) { MeterData.DisturbanceDataTable disturbanceTable = disturbanceAdapter.GetDataBy(theevent.ID); MeterData.DisturbanceRow disturbance = disturbanceTable .Where(row => row.EventTypeID == theevent.EventTypeID) .OrderBy(row => row.StartTime) .FirstOrDefault(); if ((object)disturbance != null) { postedStartTime = disturbance.StartTime.TimeOfDay.ToString(); postedDurationPeriod = disturbance.DurationCycles.ToString("##.##", CultureInfo.InvariantCulture) + " cycles"; if (disturbance.PerUnitMagnitude != -1.0e308) { postedMagnitude = disturbance.PerUnitMagnitude.ToString("N3", CultureInfo.InvariantCulture) + " pu (RMS)"; } } } } catch (Exception ex) { postedErrorMessage = ex.Message; } } } } }