Skip to main content

Ordinamento cavi

Il metodo orderCNOPTAggregations() ordina le aggregazioni di fibre logiche per i nodi A-Z basandosi sull'ordine dei cavi associati al CNO o al GC tattraverso i campi fk_cno e fk_gc.

  • calcFibSup (CalcFibLogicalSupport): Contiene la mappa delle aggregazioni di fibre e dei cavi.

  • List<AggregatedFibersLogicalByAZNodes>: Lista ordinata delle aggregazioni di fibre logiche.

Per ogni CNO del progetto:

    • Ottiene la mappa dei cavi per il progetto.

    • Ordina i cavi basandosi sulla logica specifica.

    • Ordina le aggregazioni di fibre in base all'ordine dei cavi.


getCNOPTmapCables recupera e organizza i cavi CNO-PT associati a un determinato CNO.

  • fkCno (Long): Identificativo del CNO.

  • calcFibSup (CalcFibLogicalSupport): Contiene le informazioni sui cavi e le aggregazioni.

Ritorna:
  • HashMap<Long, List<PcabSection>>: Mappa dei cavi e le relative sezioni che portano al primo GC.

Logica:
  • Recupera i cavi associati al CNO.

  • Verifica la presenza dell'aggregazione di fibre nel cavo e determina la routing corretta, prelevandola dal db se mancante.

  • Popola la mappa con i cavi e le loro sezioni.


orderAggregations ordina le aggregazioni delle fibre logiche in base all'ordine dei cavi.

  • mapAggregFibers (HashMap<Long, List<AggregatedFibersLogicalByAZNodes>>): Mappa delle aggregazioni di fibre.

  • listPkCableCno (List<Long>): Lista ordinata degli identificativi dei cavi.

Ritorno:
  • List<AggregatedFibersLogicalByAZNodes>: Lista ordinata delle aggregazioni di fibre logiche.

Logica:
  • Ordina le aggregazioni in base all'ordine dei cavi.

  • Separa le aggregazioni di tipo SPARE_ROE e INTEGRATIVO_GRE, che vengono aggiunte alla fine, perché vanno occupate sempre per ultime.


topologicalSortCables esegue un ordinamento topologico dei cavi basandosi sulla dipendenza tra di loro.

  • drawing (Long): drawing di riferimento.

  • mapCables (HashMap<Long, List<PcabSection>>): Mappa dei cavi e delle loro sezioni.

  • fkNode (Long): Nodo di riferimento.

Ritorno:
  • List<Long>: Lista ordinata di identificativi dei cavi.

Logica:
  • Identifica i cavi senza dipendenze e li ordina.

  • Se un cavo ha dipendenze non ancora risolte, viene messo in uno stack per essere processato successivamente.

  • Se non è possibile ordinare alcuni cavi a causa di dipendenze cicliche, viene sollevata un'eccezione.


handleCableNotDepenceStack gestisce i cavi senza dipendenze, ordinandoli correttamente.

  • mapCables (HashMap<Long, List<PcabSection>>): Mappa dei cavi.

  • listOrdered (List<Long>): Lista ordinata dei cavi.

  • stackCablesToOrder (List<Long>): Stack dei cavi in attesa di essere ordinati.

  • cablesNotDepence (List<Long>): Lista dei cavi senza dipendenze.

Logica:
  • Aggiunge i cavi senza dipendenze alla lista ordinata.

  • Se non ci sono cavi disponibili, ne preleva uno dallo stack.


findCableParentNodeOrderAndLength trova il nodo padre di un cavo e la sua lunghezza totale.

  • pkCable (Long): Identificativo del cavo.

  • listPcabSection (List<PcabSection>): Lista delle sezioni del cavo.

  • mapperCavi (MapperCavi): Mapper per queries dedicate ai cavi.

  • lengthTotal (int): Lunghezza totale del cavo.

Ritorno:
  • int[]: Array contenente l'ordine del nodo e la lunghezza del cavo.

Logica:
  • Identifica la sezione del cavo che contiene il nodo padre.

  • Recupera l'ordine del nodo e la lunghezza di riferimento.

  • Se non trova dati validi, restituisce un array con valori predefiniti.


Gestione delle Eccezioni

getNotOrderedCables restituisce una stringa contenente gli identificativi dei cavi che non sono stati ancora ordinati.

  • mapCables (HashMap<Long, List<PcabSection>>): Mappa dei cavi.

  • listOrdered (List<Long>): Lista dei cavi già ordinati.

Ritorno:
  • String: Identificativi dei cavi non ordinati separati da virgole.

Logica:
  • Filtra i cavi non ancora ordinati dalla mappa.

  • Concatena gli identificativi in una stringa separati da virgole.