Skip to main content

CalcFibersLogicalConfig

L'oggetto CalcFibersLogicalConfig raccoglie e rielabora tutti i dati provenienti dal DTO, esponendoli in un formato ottimizzato per essere utilizzato agevolmente nelle diverse fasi del calcolo.

private CalcFibersLogicalDTO calcFibersLogicalDTO = new CalcFibersLogicalDTO();

private Boolean isNT2Star = false;
private Boolean doPrimary = false;
private Boolean isOfSingleNode = false;
private Boolean onlyPrimary = false;

private String addConditionForSectionRouting;

private List<Long> validDrawings = new ArrayList<>();

private CalcFibersLogicalType.CalculateType currentRequestedCalctype;
private FibersLogical.CalculateTypeArea fiberCalculateArea;

private List<PcabNodes> selectedAreaNodes = new ArrayList<>();
private List<PcabCables> selectedAreaCables = new ArrayList<>();
private List<AreaPfs> selectedAreas = new ArrayList<>();

private HashMap<Long, List<Long>> areaNodesMap = new HashMap<>();

private List<PcabNodes> listPkNodesReclaimed = new ArrayList<>();
private Map<Long, Set<Long>> mapPfsNodesList;

private CalcAreaType calcAreaType = null;

public enum CalcAreaType {PFP, PFS}
private enum RulesTypes {MOD12, PILOT, R2023, LOWDENS}
private String report;

private Boolean forNaming = false;

Al suo interno, il CalcFibersLogicalDTO conserva il DTO originale ricevuto dalla richiesta. Tuttavia, l'accesso ai dati avviene esclusivamente tramite appositi getter, senza mai esporre direttamente il DTO. Questo approccio evita problemi di compatibilità e possibili vulnerabilità legate all'injection.

  • isNT2Star: indica se il calcolo è stato avviato dall'import NT2Star di CD, servendo quindi ad allineare i dati post-import.
  • doPrimary: specifica se, al termine del calcolo di secondaria, deve essere avviato anche il calcolo di primaria.
  • isOfSingleNode: viene impostato a true nei calcoli eseguiti per un singolo nodo.
  • onlyPrimary: identifica calcoli eseguiti esclusivamente per la primaria.

Questi valori vengono assegnati automaticamente in base al tipo di calcolo richiesto dall'utente all'interno del metodo dedicato.

private void setStaticAttributesForCalcType() {

switch (currentRequestedCalctype) {
case ALL:
doPrimary = true;
isNT2Star = false;
break;

case SECONDARY:
doPrimary = false;
isNT2Star = false;
break;

case PRIMARY:
onlyPrimary = true;
break;

case PREVIEW:
case NODE:
setOfSingleNode(true);
if (getUseJunctions())
setCleaningJunction(true);
break;
}
}

Routing e validazione dei progetti

  • addConditionForSectionRouting consente di impostare una condizione SQL valida per tutte le routing del calcolo corrente, evitando così l'utilizzo di determinati elementi ottici.
  • validDrawings elenca tutti gli ID progetto idonei per l'esecuzione delle routing. Questo meccanismo permette di limitare il calcolo ai soli progetti logicamente connessi, evitando query aggiuntive o join complesse.

Tipo di calcolo

private CalcFibersLogicalType.CalculateType currentRequestedCalctype;
private FibersLogical.CalculateTypeArea fiberCalculateArea;

questi due campi sono il riflesso decodificato delle stringhe passate dal DTO per il tipo calcolo e per l'area. Quindi:

  • calculateType viene decodificato in currentRequestedCalctype a seconda dell'enum
  • fiberCalculateArea viene decodificato in fiberCalculateArea

Calcolo per Area

Nel contesto dei calcoli per area, vengono valorizzati tre campi specifici:

  • selectedAreaNodes: contiene tutti i nodi delle aree selezionate.
  • selectedAreaCables: include i cavi presenti nelle aree selezionate.
  • selectedAreas: elenca tutte le aree coinvolte nel calcolo.

calcAreaType è un campo auto-calcolato, in caso di calcolo per area viene valorizzato con PFP o PFS per indicare a quale tipo di area si fa riferimento.

private void initAreaType(List<AreaPfs> listAreeCopertura, CalcFibersLogicalConfig calcFibersLogicalConfig) {
if (listAreeCopertura.isEmpty()) return;

if (Objects.equals(listAreeCopertura.get(0).getFk_coverage_area_type(), S_TYPE_PFS)) {
calcFibersLogicalConfig.setCalcAreaType(CalcFibersLogicalConfig.CalcAreaType.PFS);
return;
}

calcFibersLogicalConfig.setCalcAreaType(CalcFibersLogicalConfig.CalcAreaType.PFP);
}

Altro

listPkNodesReclaimed, nel caso in cui vengano ricalcolati degli fk di appartenenza alle aree, vengono indicati i nodi convolti in questa lista. A questi nodi verranno cancellate le fibre logiche a prescindere dalla selezione utente.

mapPfsNodesList, inserito con la preview di unidata ma non è utilizzato.

report contiene il report da inserire lato DB o da restituire all'utente.

forNaming indica se l'oggetto è stato instanziato come supporto alla naming oppure è un normale config del calcolo fibre.