Unidata
1 Assegnazione degli fk ai cavi
private Boolean checkIfCableCanRoutedWithGcLocation(List<PcabNodes> cableNodesList) {
boolean useGC = true;
if (serviceApplicationType.isAB()) {
if (searchIndexPcabNodesInListByClassif(cableNodesList, PcabNodes.S_ID_ENTITY_CLASSIFICATION_PT_OR_ROE) >= 0) {
useGC = false;
} else {
Integer pdIndex = searchIndexPcabNodesInListByClassif(cableNodesList, PcabNodes.S_ID_ENTITY_CLASSIFICATION_PD);
if (pdIndex >= 0 && checkIfPdIsConnectedToCNO(cableNodesList.get(pdIndex))) {
useGC = false;
}
}
}
return useGC;
}
Solo per Unidata è possibile ridurre il range di ricerca degli fk ai soli PD o PFS, questo per evitare che si intreccino le aree PFS in doppia progettazione. Quindi avremo che in caso di PD presenti tra i nodi del cavo andrò a puntare direttamente al primo PFS, oppure se nel cavo è presente un CNO. La ricerca recursiva viene fatta escludendo i cavi di Unidata.
2. Controllo Doppia progettazione
private void setCableFks(PcabCables cables, CableFkAssociatonStatus status) throws GisfoException {
HashSet<Long> hashSetIdEntClassNodes = status.getHashSetIdEntClassNodes();
List<PcabNodes> nodesOfShortesPath = status.getNodesOfShortesPath();
resetFks(cables, status.getCalcFibersLogicalConfig());
if (hashSetIdEntClassNodes.contains(PcabNodes.S_ID_ENTITY_CLASSIFICATION_PFS_OR_CNO)
&& !checkCableIsBelongToCascadeCno(nodesOfShortesPath, status)
&& !Objects.equals(cables.getFk_kv_net_use(), KvNetUse.VALUE_GRE_AGGREGATION)) {
setFkCno(cables, hashSetIdEntClassNodes, nodesOfShortesPath);
} else if (hashSetIdEntClassNodes.contains(PcabNodes.S_ID_ENTITY_CLASSIFICATION_PFP_OR_GC)) {
setFkGC(cables, nodesOfShortesPath);
}
}
Calcolo occupazione fibre logiche di secondaria di Unidata:
-
getCurrentSection: Aggiunge logica per verificare se
getOfSingleNode()è attivo. Se lo è, controlla se ci sono sezioni sorelle da occupare. -
checkIfSectionIsFree: Implementa un metodo per verificare se una sezione specifica ha fibre disponibili.
-
getTheFreeNumFibersByApp: Aggiunge logica per gestire fibre prioritarie in base a criteri specifici (es.
VALUE_P2P_OF_BUSINESS,FibersLogical.S_FIBER_TYPE_SPARE_ROE). Può anche rimuovere fibre per uso primario se necessario. -
setFreeFibersInTubes: Usa
serviceRCablesFiberTubes.getFirstFreeFiberIndex()per determinare il primo indice disponibile di una fibra. -
setJointError: Gestisce errori di giunzione e genera un messaggio di avviso.
-
Gestione della priorità delle fibre: Verifica se esistono fibre prioritarie, ridistribuendole in base a esigenze di rete.
-
Verifica sezioni sorelle: Determina se una sezione può essere utilizzata in alternativa per ottimizzare l'allocazione delle fibre.