package com.titanic.ventapasajes.repositorio; /** * Created by josediaz on 12/26/15. */ import com.titanic.ventapasajes.modelo.Programacion; import com.titanic.ventapasajes.repositorio.filtros.ProgramacionFiltros; import com.titanic.ventapasajes.service.NegocioExcepciones; import com.titanic.ventapasajes.util.jpa.Transaccion; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.PersistenceException; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; /** * Created by Celeritech Peru on 02/03/2015. */ public class ProgramacionRepositorio implements Serializable { private static final long serialVersionUID = 1L; @Inject private EntityManager entityManager; public List<Programacion> buscarTodos() { return this.entityManager.createQuery("from Programacion").getResultList(); } @SuppressWarnings("unchecked") public List<Programacion> listarProgramacionesFiltradas(ProgramacionFiltros programacionFiltros) { Session session = entityManager.unwrap(Session.class); Criteria criteria = session.createCriteria(Programacion.class); if(programacionFiltros.getFechaProgramacion()!=null) { SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); String startDateStr = formatter.format(programacionFiltros.getFechaProgramacion()); Date startDate = null; try { startDate = formatter.parse(startDateStr); } catch (ParseException e) { e.printStackTrace(); } Date endDate = new Date(startDate.getTime() + TimeUnit.DAYS.toMillis(1)); criteria.add(Restrictions.between("fechaSalida", startDate, endDate)); } return criteria.addOrder(Order.asc("fechaSalida")).list(); } @Transaccion public void removerProgramacion(Programacion programacion) { try { programacion = obtenerProgramacion(programacion.getIdeProgramacion()); entityManager.remove(programacion); entityManager.flush(); } catch (PersistenceException e) { throw new NegocioExcepciones("La programaciĆ³n no puede ser eliminada."); } } public Programacion obtenerProgramacion(Long id) { return entityManager.find(Programacion.class, id); } public Programacion adicionarProgramacion(Programacion programacion) { return entityManager.merge(programacion); } }