/*
|
* 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.apifdxweb.dao.impl.dataproduction;
|
|
import com.megatim.apifdxweb.dao.ifaces.referentiel.dataproduction.DataProductionDAO;
|
import com.megatim.fdxcommons.model.dataproduction.DataProduction;
|
import java.util.Optional;
|
import javax.ejb.Stateless;
|
import javax.persistence.EntityManager;
|
import javax.persistence.PersistenceContext;
|
import javax.persistence.Query;
|
import javax.persistence.TypedQuery;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@Stateless
|
public class DataProductionDAOImpl implements DataProductionDAO {
|
|
@PersistenceContext(name = "fdxPU")
|
EntityManager em;
|
|
@Override
|
public Class<DataProduction> getManagedEntityClass() {
|
return DataProduction.class;
|
}
|
|
@Override
|
public EntityManager getEntityManager() {
|
return em;
|
}
|
|
@Override
|
public DataProduction getById(Long id) {
|
Query query = em.createQuery("SELECT d from DataProduction d WHERE d.id = :id");
|
query.setParameter("id", id);
|
|
Optional<DataProduction> optDataProduction = query.getResultList().stream().findFirst();
|
return optDataProduction.isPresent() ? optDataProduction.get() : null;
|
}
|
|
@Override
|
public DataProduction lastProduction(String referentielVersion, String codeTypeFichier) {
|
String jpql = "SELECT d FROM DataProduction d"
|
+ " WHERE d.referentielVersion = :referentielVersion AND d.codeTypeFichier = :codeTypeFichier AND"
|
+ " d.fileDate = (SELECT MAX(d1.fileDate) FROM DataProduction d1 WHERE d1.referentielVersion = :referentielVersion AND d1.codeTypeFichier = :codeTypeFichier)";
|
TypedQuery<DataProduction> query = em.createQuery(jpql, DataProduction.class)
|
.setParameter("referentielVersion", referentielVersion)
|
.setParameter("codeTypeFichier", codeTypeFichier);
|
|
Optional<DataProduction> optDataProduction = query.getResultList().stream().findFirst();
|
return optDataProduction.isPresent() ? optDataProduction.get() : null;
|
}
|
}
|