Example #1
0
        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 + ".");
                }
            }
        }
Example #2
0
        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;
        }