package com.megatim.apifdxweb.core.impl.helper;
|
|
import com.megatim.apifdxweb.core.ifaces.helper.RoutingChecker;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.ParticipantManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.RoutageManager;
|
import com.megatim.apifdxweb.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
|
import com.megatim.apifdxweb.tools.exceptions.ApplicationForbidenException;
|
import com.megatim.fdxcommons.model.integration.ColumnDefinition;
|
import com.megatim.fdxcommons.model.pojo.DataInMemory;
|
import com.megatim.fdxcommons.model.referentiel.TypeFichier;
|
import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProduction;
|
import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
|
import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichierId;
|
import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
|
import java.util.Map;
|
import javax.enterprise.context.Dependent;
|
import javax.inject.Inject;
|
|
/**
|
*
|
* @author lenovo
|
*/
|
@Dependent
|
public class RoutingCheckerImpl implements RoutingChecker {
|
|
@Inject
|
protected ParticipantManager participantManager;
|
|
@Inject
|
private RoutageManager routageManager;
|
|
@Inject
|
private NatureProductionFichierManager natureProdFichManager;
|
|
@Override
|
public void stopIfNatureProductionIsNotCumulative(String codeTypeFichier, String referentielEncours) {
|
NatureProductionFichierId id = new NatureProductionFichierId(codeTypeFichier, referentielEncours);
|
NatureProductionFichier natureProdFich = natureProdFichManager.getById(id);
|
|
if (natureProdFich == null || !natureProdFich.getNatureProduction().equals(NatureProduction.CUMMULATIVE)) {
|
throw new ApplicationForbidenException("Cette opération n'est pas accessible pour ce type de fichier");
|
}
|
}
|
|
@Override
|
public void stopIfNotProducer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
|
if (!dataInMemory.getTypeFichierToParticipantsEnvoi().get(codeTypeFichier).contains(codeParticipant)) {
|
throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas producteur du type de fichier " + codeTypeFichier);
|
}
|
}
|
|
@Override
|
public void stopIfNotConsumer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
|
if (!dataInMemory.getTypeFichierToParticipantsReception().get(codeTypeFichier).contains(codeParticipant)) {
|
throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas consommateur du type de fichier " + codeTypeFichier);
|
}
|
}
|
|
@Override
|
public void stopIfCurrentReferentielNotExists(DataInMemory data) {
|
if (data.getReferentielEnCours() == null) {
|
throw new CommonRessourceNotFoundException("Aucun référentiel en cours");
|
}
|
}
|
|
/**
|
* Check whether there is a current ref in database
|
*
|
* @param codeTypeFichier
|
* @param dataInMemory
|
*/
|
@Override
|
public void stopIfTypeFichierNotExists(String codeTypeFichier, DataInMemory dataInMemory) {
|
TypeFichier typeFich = dataInMemory.getCodeTypeFichierToTypeFichiers().get(codeTypeFichier);
|
|
if (typeFich == null) {
|
throw new CommonRessourceNotFoundException("TypeFichier '" + codeTypeFichier + "' inexistant");
|
}
|
|
Map<String, ColumnDefinition> columnsDefinitionMap = dataInMemory.getTypeFichierToColumnDefinitions().get(codeTypeFichier);
|
if (columnsDefinitionMap == null || columnsDefinitionMap.isEmpty()) {
|
throw new CommonRessourceNotFoundException("La structure du typeFichier '" + codeTypeFichier + "' est introuvable");
|
}
|
}
|
|
}
|