Skip to main content

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:

  1. Recupera i nodi iniziali del grafo tramite getTreeStartNode.

  2. 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: chiama getPrimaryStartNodes.

  • 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)

  1. Chiama buildTree con i nodi radice.

  2. 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:

  1. Le sezioni che lo collegano ai figli (sectToChilds).

  2. L’elenco delle PK dei figli da seguire, con getChildNodes.

  3. Le giunzioni realizzate in questo nodo, se presenti (jointsRealizedInNodes).

  4. I nodi figli, selezionati tramite DAO, aggiunti al nodo con addChildNodes.


getChildNodes(node, visitedNodes, onlyPrimary)

  1. Ottiene tutte le sezioni figlie con getChildSections.

  2. Filtra in base a:

    • Il flag onlyPrimary.

    • L’assenza del nodo nella lista di quelli già visitati.

  3. Restituisce le PK dei nodi figli validi.


getChildSections(node)

  1. Se il nodo è NLC, aggiunge anche sezioni fittizie.

  2. Recupera le altre sezioni ordinate per lunghezza dal database.

  3. Le sezioni vengono salvate nel nodo (sectToChilds) e restituite.