Skip to main content

CalcFibersLogicalConfig

L'oggetto CalcFibersLogicalConfig contieneraccoglie e rielabora tutti i dati passatiprovenienti dal DTODTO, rielaboratiesponendoli edin espostiun nelformato modo più comodoottimizzato per essere utilizzatiutilizzato traagevolmente lenelle variediverse partifasi 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;

InAl suo interno, il CalcFibersLogicalDTO è contenutoconserva il DTO originale arrivatoricevuto dalla request,richiesta. esistonoTuttavia, vari getter che accedono direttamentel'accesso ai dati delavviene DTOesclusivamente tramite appositi getter, senza mai esporlo.esporre direttamente il DTO. Questo previene,approccio tra le varie cose,evita problemi di compatibilità e dipossibili vulnerabilità legate all'injection.

  • isNT2Star: indica chese il calcolo è stato avviato dall'import NT2Star di CDCD, eservendo quindi il calcolo in questione è utile ad allineare ili datodati postpost-import.
  • import.

  • doPrimary:

    doPrimaryspecifica indica sese, al termine del calcolo di secondariasecondaria, vadeve essere avviato anche il calcolo di primaria.

  • isOfSingleNode: inviene casoimpostato dia calcolotrue nei calcoli eseguiti per un singolo nodonodo.
  • l'attributo
  • onlyPrimary: andràidentifica settatocalcoli aeseguiti true.

    onlyPrimaryesclusivamente per calcoli unicamente dila primaria.

Questi valori vengono assegnati automaticamente impostatiin abase seconda delal tipo di calcolo richiesto dall'utente nelall'interno del metodo seguente.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;
}
}

In

Routing e validazione dei progetti

  • addConditionForSectionRouting èconsente possibiledi impostare una condizione SQL davalida utilizzare inper tutte le routing del calcolo incorrente, corsoevitando in modo da impedirecosì l'utilizzo di determinati elementi ottici.

  • validDrawings elenca tutti gli IdID progetto validiidonei per effettuarel'esecuzione delle routing,routing. questoQuesto meccanismo permette di eseguirelimitare routingil solocalcolo suiai soli progetti logicamente connessi al progettoconnessi, evitando di eseguire query aggiuntive o join troppocomplesse.
  • 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

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

selectedAreaCables
    e
  • selectedAreaNodes: selectedAreas contengono rispettivamente,contiene tutti i nodi delle aree selezionate,selezionate.
  • tutti
  • selectedAreaCables: include i cavi epresenti la lista dellenelle aree selezionate.
  • Questi
  • selectedAreas: campielenca vengonotutte utilizzatile unicamentearee coinvolte nel calcolocalcolo.
  • per area.

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,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,mapPfsNodesList, inserito con la preview di unidata ma non è utilizzato.

report contiene il report da inserire lato DB o da ritornare in interfaccia all'utente.

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