/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template */ package com.megatim.fdxcommons.dao.ifaces.integration; import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces; import com.megatim.fdxcommons.model.integration.ColumnDefinition; import com.megatim.fdxcommons.model.integration.ColumnDefinitionId; import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch; import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; import javax.persistence.Query; import javax.persistence.Tuple; /** * * @author ASUS */ public interface ColumnDefinitionDAO extends CustomDAOIfaces { public default ColumnDefinition findByNameAndReferentielAndTypeFichier(String columnName, String referentielVersion, String codeTypeFichier) { Query query = getEntityManager().createQuery("SELECT c FROM ColumnDefinition c " + " WHERE c.name = :columnName AND c.referentielVersion = :referentielVersion " + " AND c.codeTypeFichier = :codeTypeFichier"); query.setParameter("columnName", columnName); query.setParameter("referentielVersion", referentielVersion); query.setParameter("codeTypeFichier", codeTypeFichier); Optional optColumnDef = ((List) query.getResultList()).stream().findFirst(); return optColumnDef.isPresent() ? optColumnDef.get() : null; } public default List findByReferentielAndTypeFichier(String referentielVersion, String codeTypeFichier) { return getEntityManager() .createQuery("SELECT c FROM ColumnDefinition c" + " WHERE c.referentielVersion = :referentielVersion AND c.codeTypeFichier = :codeTypeFichier", ColumnDefinition.class) .setParameter("referentielVersion", referentielVersion) .setParameter("codeTypeFichier", codeTypeFichier) .getResultList(); } public default List findByReferentiel(String referentielVersion) { return getEntityManager() .createQuery("SELECT c FROM ColumnDefinition c" + " WHERE c.referentielVersion = :referentielVersion ", ColumnDefinition.class) .setParameter("referentielVersion", referentielVersion) .getResultList(); } public default Set findTypeFichierByReferentiel(String referentielVersion) { Set typeFichiers = new HashSet<>(); List columnDefinitions = findByReferentiel(referentielVersion); columnDefinitions.stream().forEach(c -> { if (!typeFichiers.contains(c.getCodeTypeFichier())) { typeFichiers.add(c.getCodeTypeFichier()); } }); return typeFichiers; } @Override public default ColumnDefinition getById(ColumnDefinitionId id) { Query query = getEntityManager().createQuery("SELECT c FROM ColumnDefinition c" + " WHERE c.referentielVersion = :referentielVersion AND c.codeTypeFichier = :codeTypeFichier" + " AND c.name = :name"); query.setParameter("referentielVersion", id.getReferentielVersion()); query.setParameter("codeTypeFichier", id.getCodeTypeFichier()); query.setParameter("name", id.getName()); Optional optColumnDef = ((List) query.getResultList()).stream().findFirst(); return optColumnDef.isPresent() ? optColumnDef.get() : null; } List byRefVersionAndByTypeFichier(); }