/* * 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 { private static ValidateurService validateurService; private static AbstractDAO dao; private PaginationElts 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 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 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 getAllByPage(int pageNumber, List searchCriterias) { pagination = dao.initPaginationElts(pageNumber, searchCriterias); return pagination.getListe(); } public AbstractDAO 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 getAlphaNumeriqueFields(Validateur validateur) throws Exception { Map mapElements = ParserUtils.getValidateurElements(validateur); List> paramsList = Arrays.asList(mapElements.values().toArray(new Map[mapElements.size()])); List alphanumMap = paramsList.stream() .filter(m -> m.containsKey("typeDonnee") && m.get("typeDonnee").equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue()) ) .collect(Collectors.toList()); List 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; } }