Popolazione Albero
Il metodo getPcabnodesTreeByDrawing costruisce una struttura ad albero di nodi (TreePcabNodes) a partire da una configurazione del calcolo fibre (CalcFibersLogicalConfig). Ogni nodo conosce i propri figli, le sezioni che li collegano e, se presenti, le giunzioni di fibra realizzate.
Questo è il punto di ingresso. Esegue due operazioni:
-
Recupera i nodi iniziali del grafo tramite
getTreeStartNode. -
Costruisce l’intero albero ricorsivamente a partire da quei nodi con
buildPcabNodeTree.
getTreeStartNode(config, onlyPrimary)
Restituisce la lista dei nodi iniziali (root) da cui partire per costruire l’albero. Il comportamento cambia in base al tipo di applicazione e al flag onlyPrimary.
-
Se
onlyPrimaryè vero: chiamagetPrimaryStartNodes. -
Altrimenti: chiama
getStartNodes.
getPrimaryStartNodes(config)
Recupera solo PCN/POP:
-
Se l'applicazione è di tipo AB: filtra per classificazione
PCN. -
Altrimenti: recupera i POP connessi e li trasforma in nodi radice.
Parte Ricorsiva
buildPcabNodeTree(prjStartNodes, onlyPrimary)
-
Chiama
buildTreecon i nodi radice. -
Rimuove dalla lista finale tutti i nodi che non hanno figli (foglie isolate).
buildTree(nodes, visitedNodes, onlyPrimary)
Metodo ricorsivo che costruisce l’albero. Per ogni nodo:
-
Verifica che non sia già stato visitato per lo stesso branch (per evitare cicli).
-
Recupera le informazioni del nodo con
getTreeInfo. -
Se ha figli, ripete la chiamata ricorsiva su di essi.
getTreeInfo(node, visitedNodes, onlyPrimary)
Popola il nodo con:
-
Le sezioni che lo collegano ai figli (
sectToChilds). -
L’elenco delle PK dei figli da seguire, con
getChildNodes. -
Le giunzioni realizzate in questo nodo, se presenti (
jointsRealizedInNodes). -
I nodi figli, selezionati tramite DAO, aggiunti al nodo con
addChildNodes.
getChildNodes(node, visitedNodes, onlyPrimary)
-
Ottiene tutte le sezioni figlie con
getChildSections. -
Filtra in base a:
-
Il flag
onlyPrimary. -
L’assenza del nodo nella lista di quelli già visitati.
-
-
Restituisce le PK dei nodi figli validi.
getChildSections(node)
-
Se il nodo è NLC, aggiunge anche sezioni fittizie.
-
Recupera le altre sezioni ordinate per lunghezza dal database.
-
Le sezioni vengono salvate nel nodo (
sectToChilds) e restituite.
No Comments