private Device CreateDevice(XElement deviceDefinition, FaultAlgorithmsSet defaultFaultAlgorithms) { XElement deviceAttributes; XElement deviceLines; Device device; // Get the attributes and lines XML elements deviceAttributes = deviceDefinition.Element("attributes") ?? new XElement("attributes"); deviceLines = deviceDefinition.Element("lines") ?? new XElement("lines"); // Create new device and set the attributes device = new Device() { ID = (string)deviceDefinition.Attribute("id"), Make = (string)deviceAttributes.Element("make"), Model = (string)deviceAttributes.Element("model"), StationID = (string)deviceAttributes.Element("stationID"), StationName = (string)deviceAttributes.Element("stationName") }; // Add lines based on the line definitions foreach (XElement lineDefinition in deviceLines.Elements("line")) { device.Lines.Add(CreateLine(lineDefinition, defaultFaultAlgorithms)); } // Return the device return(device); }
private FaultAlgorithmsSet GetFaultAlgorithms(XElement parentElement) { FaultAlgorithmsSet faultAlgorithms = new FaultAlgorithmsSet(); LoadFaultTriggerAlgorithm(parentElement, out faultAlgorithms.FaultTriggerAlgorithm, out faultAlgorithms.FaultTriggerParameters); LoadFaultTypeAlgorithm(parentElement, out faultAlgorithms.FaultTypeAlgorithm, out faultAlgorithms.FaultTypeParameters); LoadFaultLocationAlgorithms(parentElement, out faultAlgorithms.FaultLocationAlgorithms, out faultAlgorithms.FaultLocationParameters); return(faultAlgorithms); }
private Line CreateLine(XElement lineDefinition, FaultAlgorithmsSet defaultFaultAlgorithms) { Line line; XElement impedancesElement; FaultAlgorithmsSet faultAlgorithms; double rating50F; double length; double r1; double x1; double r0; double x0; // Create new line line = new Line() { ID = (string)lineDefinition.Attribute("id"), Name = (string)lineDefinition.Element("name"), Voltage = (string)lineDefinition.Element("voltage"), EndStationID = (string)lineDefinition.Element("endStationID"), EndStationName = (string)lineDefinition.Element("endStationName"), ChannelsElement = lineDefinition.Element("channels") ?? new XElement("channels") }; // Get the XML element that contains impedances impedancesElement = lineDefinition.Element("impedances") ?? new XElement("impedances"); // Get fault algorithms for this line faultAlgorithms = GetFaultAlgorithms(lineDefinition); if ((object)faultAlgorithms.FaultTriggerAlgorithm == null) { faultAlgorithms.FaultTriggerAlgorithm = defaultFaultAlgorithms.FaultTriggerAlgorithm; faultAlgorithms.FaultTriggerParameters = defaultFaultAlgorithms.FaultTriggerParameters; } if ((object)faultAlgorithms.FaultTypeAlgorithm == null) { faultAlgorithms.FaultTypeAlgorithm = defaultFaultAlgorithms.FaultTypeAlgorithm; faultAlgorithms.FaultTypeParameters = defaultFaultAlgorithms.FaultTypeParameters; } if ((object)faultAlgorithms.FaultLocationAlgorithms == null || faultAlgorithms.FaultLocationAlgorithms.Length == 0) { faultAlgorithms.FaultLocationAlgorithms = defaultFaultAlgorithms.FaultLocationAlgorithms; faultAlgorithms.FaultLocationParameters = defaultFaultAlgorithms.FaultLocationParameters; } line.FaultAlgorithmsSet = faultAlgorithms; // Set parameters that require parsing if (double.TryParse((string)lineDefinition.Element("rating50F"), out rating50F)) { line.Rating50F = rating50F; } if (double.TryParse((string)lineDefinition.Element("length"), out length)) { line.Length = length; } if (double.TryParse((string)impedancesElement.Element("R1"), out r1)) { line.R1 = r1; } if (double.TryParse((string)impedancesElement.Element("X1"), out x1)) { line.X1 = x1; } if (double.TryParse((string)impedancesElement.Element("R0"), out r0)) { line.R0 = r0; } if (double.TryParse((string)impedancesElement.Element("X0"), out x0)) { line.X0 = x0; } // Return the line return(line); }