/*
|
* 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.fdxconvert.service;
|
|
import com.megatim.typefichier.validator.model.enums.TypeDonnee;
|
import com.megatimfx.common.pojo.SearchCriteria;
|
import com.megatimfx.common.service.GenericCrudService;
|
import com.megatim.fdxconvert.dao.AbstractDAO;
|
import com.megatim.fdxconvert.dao.ValidateurDAO;
|
import com.megatim.fdxconvert.model.AlphaNumeriqueField;
|
import com.megatim.fdxconvert.model.Validateur;
|
import com.megatim.fdxconvert.service.pojo.PaginationElts;
|
import com.megatim.fdxconvert.util.ParserUtils;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
*
|
* @author STEPHANIE
|
*/
|
public class ValidateurService implements GenericCrudService<Validateur> {
|
|
private static ValidateurService validateurService;
|
private static AbstractDAO<Validateur> dao;
|
private PaginationElts<Validateur> pagination;
|
|
private ValidateurService() {
|
|
}
|
|
public static synchronized ValidateurService getInstance() {
|
if (validateurService == null) {
|
validateurService = new ValidateurService();
|
dao = new AbstractDAO<>(Validateur.class);
|
}
|
return validateurService;
|
}
|
|
@Override
|
public Validateur add(Validateur t) throws Exception {
|
|
List<AlphaNumeriqueField> fields = getAlphaNumeriqueFields(t);
|
t.setAlphaFields(fields);
|
|
return dao.add(t);
|
}
|
|
@Override
|
public Validateur edit(Validateur t) throws Exception {
|
return dao.edit(t);
|
|
}
|
|
@Override
|
public List<Validateur> getAll() throws Exception {
|
return dao.getAll("Validateur");
|
}
|
|
@Override
|
public void delete(Validateur t) throws Exception {
|
ValidateurDAO.delete(t);
|
}
|
|
@Override
|
public boolean isLast() {
|
return pagination.isLast();
|
}
|
|
@Override
|
public boolean isFirst() {
|
return pagination.isFirst();
|
}
|
|
@Override
|
public int getCurrentPage() {
|
return pagination.getPage();
|
}
|
|
@Override
|
public int getNumberOfElements() {
|
return pagination.getNumberOfElts();
|
}
|
|
@Override
|
public int getNumberPerPage() {
|
return pagination.getNbEltsPerPage();
|
}
|
|
@Override
|
public Long getTotalElements() {
|
return pagination.getTotalElts();
|
}
|
|
@Override
|
public List<Validateur> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
|
pagination = dao.initPaginationElts(pageNumber, searchCriterias);
|
return pagination.getListe();
|
}
|
|
public AbstractDAO<Validateur> getDao() {
|
return dao;
|
}
|
|
/**
|
* Méthode qui extrait les champs alphanumériques dont la taille est
|
* supérieure à 255, pour un éventuel troncage
|
*
|
* @param validateur
|
* @return
|
* @throws Exception
|
*/
|
private List<AlphaNumeriqueField> getAlphaNumeriqueFields(Validateur validateur) throws Exception {
|
Map<Integer, Map> mapElements = ParserUtils.getValidateurElements(validateur);
|
|
List<Map<String, String>> paramsList = Arrays.asList(mapElements.values().toArray(new Map[mapElements.size()]));
|
|
List<Map> alphanumMap = paramsList.stream()
|
.filter(m -> m.containsKey("typeDonnee")
|
&& m.get("typeDonnee").equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())
|
)
|
.collect(Collectors.toList());
|
|
List<AlphaNumeriqueField> alphaNumeriqueFields = new ArrayList<>();
|
|
alphanumMap.stream().forEach(m -> {
|
String errorCode = (String) m.get("error-code");
|
int taille = 0;
|
int index = 0;
|
|
if (validateur.isConvertDataBeforeValidation()) {
|
taille = Integer.parseInt((String) m.get("taille"));
|
index = Integer.parseInt((String) m.get("index"));
|
}
|
|
/**
|
* Dans le validateur xml, error-code = codeTypeFichier +
|
* codeColonne String codeColonne =
|
* errorCode.substring(codeTypeFichier.length());*
|
*/
|
String codeColonne = errorCode;
|
|
alphaNumeriqueFields.add(new AlphaNumeriqueField(validateur, TypeDonnee.ALPHANUMERIQUE.getValue(), codeColonne, taille, index));
|
});
|
|
return alphaNumeriqueFields;
|
}
|
}
|