/*
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
*/
|
package com.megatim.apifdxweb.core.impl.helper;
|
|
import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
|
import com.megatim.apifdxweb.core.ifaces.integration.ColumnDefinitionManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.ReferentielManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.RoutageManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.TypeFichierManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
|
import com.megatim.fdxcommons.model.integration.ColumnDefinition;
|
import com.megatim.fdxcommons.model.pojo.DataInMemory;
|
import com.megatim.fdxcommons.model.referentiel.Referentiel;
|
import com.megatim.fdxcommons.model.referentiel.TypeFichier;
|
import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
|
import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
|
import groovy.transform.Synchronized;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
import javax.enterprise.context.ApplicationScoped;
|
import javax.inject.Inject;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@ApplicationScoped
|
public class DataInMemoryHandlerImpl implements DataInMemoryHandler {
|
|
private DataInMemory dataInMemory;
|
|
@Inject
|
ColumnDefinitionManager columnDefinitionManager;
|
|
@Inject
|
private TypeFichierManager typeFichierManager;
|
|
@Inject
|
private ReferentielManager referentielManager;
|
|
@Inject
|
private NatureProductionFichierManager natureProdManager;
|
|
@Inject
|
private RoutageManager routageManager;
|
|
@Override
|
@Synchronized
|
public void initializeDataInMemory() {
|
dataInMemory = new DataInMemory();
|
Referentiel referentielEncours = referentielManager.getReferentielEnCours();
|
|
if (referentielEncours != null) {
|
dataInMemory.setReferentielEnCours(referentielEncours);
|
dataInMemory.setCodeTypeFichierToTypeFichiers(getTypeFichiers());
|
dataInMemory.setTypeFichierToColumnDefinitions(getColumnsDefinitions(referentielEncours.getVersion()));
|
dataInMemory.setTypeFichierToNatureProductionsFichiers(getNatureProductionFichiers(referentielEncours.getVersion()));
|
getParticipantsForRoutages();
|
}
|
}
|
|
@Override
|
public DataInMemory getDataInMemory() {
|
return this.dataInMemory;
|
}
|
|
private void getParticipantsForRoutages() {
|
dataInMemory.getCodeTypeFichierToTypeFichiers().values().stream().forEach(t -> {
|
dataInMemory.getTypeFichierToParticipantsEnvoi()
|
.put(t.getCode(),
|
routageManager
|
.getParticipantsForSend(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
|
.stream()
|
.map(p -> p.getCode())
|
.collect(Collectors.toSet())
|
);
|
|
dataInMemory.getTypeFichierToParticipantsReception()
|
.put(t.getCode(),
|
routageManager
|
.getParticipantsForReceive(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
|
.stream()
|
.map(p -> p.getCode())
|
.collect(Collectors.toSet())
|
);
|
|
});
|
|
}
|
|
private Map<String, Map<String, ColumnDefinition>> getColumnsDefinitions(String referentielVersion) {
|
Map<String, Map<String, ColumnDefinition>> columnsDefinitionMap = new HashMap<>();
|
ColumnDefinitionSearch searchEntity = new ColumnDefinitionSearch();
|
searchEntity.setReferentielVersion(referentielVersion);
|
|
List<ColumnDefinition> columnsDefinition = columnDefinitionManager.getAll(searchEntity);
|
columnsDefinition.stream().forEach(c -> {
|
if (columnsDefinitionMap.containsKey(c.getCodeTypeFichier())) {
|
Map<String, ColumnDefinition> map = columnsDefinitionMap.get(c.getCodeTypeFichier());
|
map.put(c.getName(), c);
|
columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
|
} else {
|
Map<String, ColumnDefinition> map = new HashMap<>();
|
map.put(c.getName(), c);
|
columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
|
}
|
});
|
return columnsDefinitionMap;
|
}
|
|
private Map<String, TypeFichier> getTypeFichiers() {
|
return typeFichierManager.getAll().stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
|
}
|
|
private Map<String, NatureProductionFichier> getNatureProductionFichiers(String referentielVersion) {
|
return natureProdManager.getByReferentiel(referentielVersion)
|
.stream()
|
.collect(Collectors.toMap(x -> x.getTypeFichier().getCode(), Function.identity()));
|
}
|
|
}
|