private static void LoadLineImpedanceAttributes(LineImpedance lineImpedance, XElement impedancesElement) { lineImpedance.R0 = Convert.ToDouble((string)impedancesElement.Element("R0")); lineImpedance.X0 = Convert.ToDouble((string)impedancesElement.Element("X0")); lineImpedance.R1 = Convert.ToDouble((string)impedancesElement.Element("R1")); lineImpedance.X1 = Convert.ToDouble((string)impedancesElement.Element("X1")); }
public LineImpedance CreateLineImpedance(LineView record) { LineImpedance li = new LineImpedance(); li.R0 = record.R0; li.R1 = record.R1; li.X0 = record.X0; li.X1 = record.X1; li.LineID = record.ID; return(li); }
private void UpdateConfigurationData(MeterDataSet meterDataSet) { using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required, GetTransactionOptions())) { if (meterDataSet.Meter.MeterLines.Count != 1) { return; } Line line = meterDataSet.Meter.MeterLines .Select(meterLine => meterLine.Line) .Single(); if (meterDataSet.Configuration.LineLength.HasValue) { line.Length = meterDataSet.Configuration.LineLength.GetValueOrDefault(); m_meterInfo.SubmitChanges(); } if (meterDataSet.Configuration.R1.HasValue && meterDataSet.Configuration.X1.HasValue && meterDataSet.Configuration.R0.HasValue && meterDataSet.Configuration.X0.HasValue) { DataContextLookup <int, LineImpedance> lookup = new DataContextLookup <int, LineImpedance>(m_faultLocationInfo, impedance => impedance.LineID); LineImpedance lineImpedance = lookup.GetOrAdd(line.ID, id => new LineImpedance() { LineID = id }); if (meterDataSet.Configuration.R1.HasValue) { lineImpedance.R1 = meterDataSet.Configuration.R1.GetValueOrDefault(); } if (meterDataSet.Configuration.X1.HasValue) { lineImpedance.X1 = meterDataSet.Configuration.X1.GetValueOrDefault(); } if (meterDataSet.Configuration.R0.HasValue) { lineImpedance.R0 = meterDataSet.Configuration.R0.GetValueOrDefault(); } if (meterDataSet.Configuration.X0.HasValue) { lineImpedance.X0 = meterDataSet.Configuration.X0.GetValueOrDefault(); } m_faultLocationInfo.SubmitChanges(); } transaction.Complete(); } }
private static void LoadLineImpedanceAttributes(LineImpedance lineImpedance, XElement impedancesElement) { object r0 = (string)impedancesElement.Element("R0"); object x0 = (string)impedancesElement.Element("X0"); object r1 = (string)impedancesElement.Element("R1"); object x1 = (string)impedancesElement.Element("X1"); if (r0 != null && x0 != null && r0 != null && x0 != null) { lineImpedance.R0 = Convert.ToDouble(r0); lineImpedance.X0 = Convert.ToDouble(x0); lineImpedance.R1 = Convert.ToDouble(r1); lineImpedance.X1 = Convert.ToDouble(x1); } }
private void SyncLineImpedances(string address, LinesToDataPush selectedLine) { // ensure remote and local line impedance matches LineImpedance localLineImpedance = DataContext.Table <LineImpedance>().QueryRecordWhere("LineID = {0}", selectedLine.LocalXDALineID); LineImpedance remoteLineImpedance = (LineImpedance)WebAPIHub.GetRecordsWhere(address, "LineImpedance", $"LineID = {selectedLine.RemoteXDALineID}").FirstOrDefault(); // if there is a local record but not a remote record if (localLineImpedance != null && remoteLineImpedance == null) { JObject record = new JObject(); record.Add("LineID", selectedLine.RemoteXDALineID); record.Add("R0", localLineImpedance.R0); record.Add("R1", localLineImpedance.R1); record.Add("X0", localLineImpedance.X0); record.Add("X1", localLineImpedance.X1); WebAPIHub.CreateRecord(address, "LineImpedance", record); } }
private void UpdateConfigurationData(MeterDataSet meterDataSet) { bool updateLineLength = meterDataSet.Configuration.LineLength.HasValue; bool updateLineImpedance = meterDataSet.Configuration.R1.HasValue && meterDataSet.Configuration.X1.HasValue && meterDataSet.Configuration.R0.HasValue && meterDataSet.Configuration.X0.HasValue; if (!updateLineLength && !updateLineImpedance) { return; } using (AdoDataConnection connection = meterDataSet.CreateDbConnection()) { TableOperations <Line> lineTable = new TableOperations <Line>(connection); List <Line> lines = lineTable.QueryRecordsWhere("ID IN (SELECT LineID FROM MeterLocationLine WHERE MeterLocationID = {0})", meterDataSet.Meter.MeterLocationID).ToList(); if (lines.Count != 1) { return; } Line line = lines[0]; if (updateLineLength) { line.Length = meterDataSet.Configuration.LineLength.GetValueOrDefault(); lineTable.UpdateRecord(line); } if (updateLineImpedance) { TableOperations <LineImpedance> lineImpedanceTable = new TableOperations <LineImpedance>(connection); LineImpedance lineImpedance = lineImpedanceTable.QueryRecordWhere("LineID = {0}", line.ID); if ((object)lineImpedance == null) { lineImpedance = new LineImpedance() { ID = line.ID } } ; if (meterDataSet.Configuration.R1.HasValue) { lineImpedance.R1 = meterDataSet.Configuration.R1.GetValueOrDefault(); } if (meterDataSet.Configuration.X1.HasValue) { lineImpedance.X1 = meterDataSet.Configuration.X1.GetValueOrDefault(); } if (meterDataSet.Configuration.R0.HasValue) { lineImpedance.R0 = meterDataSet.Configuration.R0.GetValueOrDefault(); } if (meterDataSet.Configuration.X0.HasValue) { lineImpedance.X0 = meterDataSet.Configuration.X0.GetValueOrDefault(); } try { lineImpedanceTable.AddNewOrUpdateRecord(lineImpedance); } catch (Exception ex) { // Ignore errors regarding unique key constraints // which can occur as a result of a race condition bool isUniqueViolation = ExceptionHandler.IsUniqueViolation(ex); if (!isUniqueViolation) { throw; } } } } }