Skip to main content

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.