package br.com.ufrj.msi2.netuno.modelo.servicos;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import br.com.ufrj.msi2.netuno.modelo.entidades.AgenteCarga;
import br.com.ufrj.msi2.netuno.modelo.entidades.Carga;
import br.com.ufrj.msi2.netuno.modelo.entidades.Conteiner;
import br.com.ufrj.msi2.netuno.modelo.entidades.Navio;
/**
* Session Bean implementation class ConteinerServiceImpl
*/
@Stateless
public class ConteinerServiceImpl implements ConteinerService {
private static final long serialVersionUID = -2476819130385260418L;
@PersistenceContext
EntityManager em;
public EntityManager getEm() {
return em;
}
@Override
public List<Conteiner> filtrar(CriteriaQuery<Conteiner> consulta) {
List<Conteiner> list = em.createQuery(consulta).getResultList();
return list;
}
@Override
public CriteriaBuilder getCriteriaBuilder() {
return this.em.getCriteriaBuilder();
}
@Override
public void salvarConteiner(Conteiner conteiner) {
em.persist(conteiner);
}
@Override
public Conteiner obterPorId(Integer idConteiner) {
return this.em.find(Conteiner.class, idConteiner);
}
@SuppressWarnings("unchecked")
@Override
public List<Conteiner> recuperarTodos() {
Query query = em.createNamedQuery("Conteiner.recuperarTodos");
return (List<Conteiner>) query.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<Conteiner> recuperarConteinersPorNavio(Navio navio) {
Query query = em.createNamedQuery("Conteiner.recuperarConteinersPorNavio");
query.setParameter("navio", navio);
return (List<Conteiner>) query.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<Conteiner> recuperarPorNavioPorAgenteParaDesembarque(Navio navio, AgenteCarga agente) {
Query query = em.createNamedQuery("Conteiner.recuperarPorNavioPorAgenteParaDesembarque");
query.setParameter("navio", navio);
query.setParameter("porto", agente.getPertence());
query.setParameter("agente", agente);
return (List<Conteiner>) query.getResultList();
}
@Override
public void atualizarConteiner(Conteiner conteiner) {
em.merge(conteiner);
}
}