public void ReadNodesFromFile() { Dictionary <long, MPNode> listOfNodes = internalModel.Nodes; String file_name = "Nodes.xml"; XmlDocument xml_doc = new XmlDocument(); xml_doc.Load(file_path + file_name); XmlNodeList xnList = xml_doc.SelectNodes("/Nodes/BusNode"); foreach (XmlElement xml_elem in xnList) { long nodeLID = UInt32.Parse(xml_elem.GetAttribute("LID")); EPhaseCode phases = (EPhaseCode)Byte.Parse(xml_elem["Phases"].InnerText); if (!listOfNodes.ContainsKey(nodeLID)) { MPBusNode node = new MPBusNode(nodeLID, phases); listOfNodes.Add(nodeLID, node); } else { throw new Exception("Bad input file. There is already node with same key " + nodeLID + "."); } } }
public void ReadConnectivityNodes(Dictionary <long, ResourceDescription> cimConnNodes, Dictionary <long, ResourceDescription> cimTerminals) { Dictionary <long, MPNode> nodes = internalModel.Nodes; foreach (ResourceDescription node in cimConnNodes.Values) { if (!nodes.ContainsKey(node.Id)) { //TODO: svi treba da imaju istu faznost List <long> terminalsID = node.GetProperty(ModelCode.CONNECTIVITYNODE_TERMINALS).AsReferences(); if (terminalsID.Count < 1) { string message = "Invalid CIM model. Connectivity node must have at least one terminal"; Logger.LogError(message); throw new Exception(message); } ResourceDescription firstTerminal = cimTerminals[terminalsID[0]]; EPhaseCode phaseCode = (EPhaseCode)firstTerminal.GetProperty(ModelCode.TERMINAL_PHASES).AsEnum(); MPBusNode newNode = new MPBusNode(node.Id, phaseCode); nodes.Add(node.Id, newNode); } else { string errMessage = $"Invalid CIM model. There is already node with same key: {node.Id:X16}"; Logger.LogError(errMessage); throw new Exception(errMessage); } } isNodesInitialized = true; }