Skip to main content

CalcFibersLogicalConfig

L'oggetto CalcFibersLogicalConfig contiene tutti i dati passati dal DTO rielaborati ed esposti nel modo più comodo per essere utilizzati tra le varie parti 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;

In CalcFibersLogicalDTO è contenuto il DTO originale arrivato dalla request, esistono vari getter che accedono direttamente ai dati del DTO senza mai esporlo. Questo previene, tra le varie cose, problemi di compatibilità e di injection.

 isNT2Star indica che il calcolo è stato avviato dall'import NT2Star di CD e quindi il calcolo in questione è utile ad allineare il dato post import.

doPrimary indica se al termine del calcolo di secondaria va avviato il calcolo di primaria.

isOfSingleNode in caso di calcolo per singolo nodo l'attributo andrà settato a true.

onlyPrimary per calcoli unicamente di primaria.

Questi valori vengono automaticamente impostati a seconda del tipo di calcolo richiesto dall'utente nel metodo seguente.

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 addConditionForSectionRouting è possibile impostare una condizione SQL da utilizzare in tutte le routing del calcolo in corso in modo da impedire l'utilizzo di determinati elementi ottici.

validDrawings elenca tutti gli Id progetto validi per effettuare delle routing, questo permette di eseguire routing solo sui progetti logicamente connessi al progetto evitando di eseguire query aggiuntive o join troppo complesse.

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

I campi selectedAreaNodes, selectedAreaCables e selectedAreas contengono rispettivamente, tutti i nodi delle aree selezionate, tutti i cavi e la lista delle aree selezionate. Questi campi vengono utilizzati unicamente nel calcolo 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);
}

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 ritornare in interfaccia all'utente.

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