package com.titanic.ventapasajes.repositorio; import com.titanic.ventapasajes.modelo.Bus; import com.titanic.ventapasajes.repositorio.filtros.BusFiltros; import com.titanic.ventapasajes.service.NegocioExcepciones; import com.titanic.ventapasajes.util.jpa.Transaccion; import org.apache.commons.lang3.StringUtils; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceException; import java.io.Serializable; import java.util.List; /** * Created by josediaz on 7/20/14. */ public class BusRepositorio implements Serializable{ private static final long serialVersionUID = 1L; @Inject private EntityManager entityManager; public Bus buscarBusporId(Long ideBus) { return this.entityManager.find(Bus.class, ideBus); } public Bus buscarUsuarioporPlaca(String placa) { Bus bus = null; try{ bus = this.entityManager.createQuery("from Bus where lower(placa) = :placa", Bus.class) .setParameter("placa", placa).getSingleResult(); }catch(NoResultException e){ } return bus; } @SuppressWarnings("unchecked") public List<Bus> listarBusesFiltrados(BusFiltros busFiltros) { Session session = entityManager.unwrap(Session.class); Criteria criteria = session.createCriteria(Bus.class); if(StringUtils.isNotBlank(busFiltros.getPlaca())){ criteria.add(Restrictions.eq("placa", busFiltros.getPlaca())); } return criteria.addOrder(Order.asc("descripcionBus")).list(); } public Bus getFilasWithBusById(Long busId) { Session session = entityManager.unwrap(Session.class); Bus bus = (Bus) session.createCriteria(Bus.class).add(Restrictions.idEq(busId)).uniqueResult(); // this will force SQL to execute the query that will join with the user's profile and populate // the appropriate information into the user object. //Hibernate.initialize(bus.getFilasSuperiores()); //Hibernate.initialize(bus.getFilasInferiores()); return bus; } @Transaccion public void removerBus(Bus bus) { try{ bus = obtenerBus(bus.getIdeBus()); entityManager.remove(bus); entityManager.flush(); }catch(PersistenceException e){ throw new NegocioExcepciones("El bus no puede ser eliminado."); } } public Bus obtenerBus(Long id){ return entityManager.find(Bus.class, id); } public Bus adicionarBus(Bus bus) { return entityManager.merge(bus); } }