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 doPrimary:doPrimaryspecificaindica sese, al termine del calcolo disecondariasecondaria,vadeve essere avviato anche il calcolo di primaria.isOfSingleNode: onlyPrimary:andràidentificasettatocalcoliaeseguititrue.onlyPrimaryesclusivamente percalcoli unicamente dila primaria.
inviene casoimpostato dia calcolotrue nei calcoli eseguiti per un singolo nodonodo.
l'attributo
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èconsentepossibiledi impostare una condizione SQLdavalidautilizzare inper tutte le routing del calcoloincorrente,corsoevitandoin 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:
calculateTypeviene decodificato incurrentRequestedCalctypea seconda dell'enumfiberCalculateAreaviene decodificato infiberCalculateArea
Calcolo per Area
INel contesto dei calcoli per area, vengono valorizzati tre campi selectedAreaNodes,specifici:
selectedAreaNodes:selectedAreas contengono rispettivamente,contiene tutti i nodi delle areeselezionate,selezionate.selectedAreaCables: include i caviepresentila lista dellenelle aree selezionate.selectedAreas:campielencavengonotutteutilizzatileunicamentearee coinvolte nelcalcolocalcolo.
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.