package com.megatim.fdxcommons.tools.utils; import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector; import com.megatim.fdxcommons.model.enumeration.Operateur; import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView; import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * * @author Gabuntu */ public class CriteriaEntityFromViewToQueryCriterion { private final CriteriaEntityFromView criteriaEntityFromView; public CriteriaEntityFromViewToQueryCriterion(CriteriaEntityFromView criteriaEntityFromView) { this.criteriaEntityFromView = criteriaEntityFromView; } public QueryCriterion queryCriterion() { if (criteriaEntityFromView == null) { return null; } String nomColonne = criteriaEntityFromView.getNomColonne() != null ? criteriaEntityFromView.getNomColonne() : ""; Object criteriaValue = criteriaEntityFromView.getCriteriaValue(); Operateur operateur = criteriaEntityFromView.getOperateur(); CriteriaLogicConnector criteriaLogicConnector = criteriaEntityFromView.getCriteriaLogicConnector(); List subCriteria = new ArrayList<>(); if (criteriaEntityFromView.getSubCriterias() != null && !criteriaEntityFromView.getSubCriterias().isEmpty()) { subCriteria = criteriaEntityFromView.getSubCriterias() .stream() .map(sC -> new CriteriaEntityFromViewToQueryCriterion(sC).queryCriterion()) .collect(Collectors.toList()); return new QueryCriterion(null, null, null, criteriaLogicConnector, subCriteria); } else if (nomColonne != null && !nomColonne.isEmpty() && operateur != null) { return new QueryCriterion(nomColonne, criteriaValue, operateur, null, Arrays.asList()); } return null; } }