package negocios.impl; import java.util.Calendar; import java.util.Collection; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import negocios.GestionSitioInteres; import negocios.excepciones.EntidadNoExiste; import persistencia.Categoria; import persistencia.CategoriaDAO; import persistencia.CheckIn; import persistencia.CheckInDAO; import persistencia.Imagen; import persistencia.ImagenDAO; import persistencia.SitioInteres; import persistencia.SitioInteresDAO; import persistencia.Usuario; import persistencia.UsuarioDAO; @Stateless public class GestionSitioInteresImpl implements GestionSitioInteres { @EJB private SitioInteresDAO sitioInteresDAO; @EJB private UsuarioDAO usuarioDAO; @EJB private CheckInDAO checkInDAO; @EJB private CategoriaDAO categoriaDAO; @EJB private ImagenDAO imagenDAO; @Override public void agregarSitioInteres(SitioInteres sitioInteres) { sitioInteresDAO.insertar(sitioInteres); } @Override public SitioInteres modifciarSitioInteres(SitioInteres sitioInteres) { return sitioInteresDAO.modificar(sitioInteres); } @Override public SitioInteres obtenerSitioInteres(int id) { return sitioInteresDAO.buscarPorId(id); } @Override public void borrarSitioInteres(int id) throws EntidadNoExiste { if (!sitioInteresDAO.existe(id)) { String msg = "No existe el sitio de interes con id " + id; throw new EntidadNoExiste(id, msg); } sitioInteresDAO.borrar(id); } @Override public List<SitioInteres> obtenerTodosSitiosInteres() { return sitioInteresDAO.obtenerTodos(); } /* @Override public void generarReporte() { try{ InputStream jasperIS = getClass().getResourceAsStream("/META-INF/reportes/holaMundo.jasper"); System.out.println(jasperIS); Map<String, Object> mapa = new HashMap<String, Object>(); System.setProperty("java.awt.headless", "true"); System.out.println(java.awt.GraphicsEnvironment.isHeadless()); JasperPrint print = JasperFillManager.fillReport(jasperIS,mapa,new JREmptyDataSource()); JasperViewer jviewer = new JasperViewer(print,false); jviewer.setVisible(true); }catch(Exception ex){ ex.printStackTrace(); JOptionPane.showMessageDialog(null,"Se produjo un error al leer el archivo .jasper"); } }*/ @Override public void hacerCheckIn(int idUsuario, int idSitioInteres, Integer idImagen, CheckIn checkIn) throws EntidadNoExiste { Usuario usuario = usuarioDAO.buscarPorId(idUsuario); if (usuario == null) { String msg = "No existe el usuario con id " + idUsuario; throw new EntidadNoExiste(idUsuario, msg); } SitioInteres sitio = sitioInteresDAO.buscarPorId(idSitioInteres); if (sitio == null) { String msg = "No existe el sitio de interes con id " + idSitioInteres; throw new EntidadNoExiste(idSitioInteres, msg); } if (idImagen != null) { Imagen imagen = imagenDAO.buscarPorId(idImagen); if (imagen == null) { String msg = "No existe la imagen con id " + idImagen; throw new EntidadNoExiste(idImagen, msg); } checkIn.setFoto(imagen); } checkIn.setSitioInteres(sitio); checkIn.setUsuario(usuario); CheckIn checkInInsertado = checkInDAO.insertar(checkIn); usuario.getCheckIns().add(checkInInsertado); sitio.getCheckIns().add(checkInInsertado); } @Override public void agregarCategoriaSitio(int idSitio, Collection<Integer> idCategorias) { SitioInteres sitio = sitioInteresDAO.buscarPorId(idSitio); for (Integer idCategoria : idCategorias) { Categoria cat = categoriaDAO.buscarPorId(idCategoria); if (!sitio.getCategorias().contains(cat)) { sitio.getCategorias().add(cat); } } } @Override public void borrarCategoriasSitio(int idSitio, Collection<Integer> idCategorias) { SitioInteres sitio = sitioInteresDAO.buscarPorId(idSitio); for (Integer idCategoria : idCategorias) { Categoria cat = categoriaDAO.buscarPorId(idCategoria); if (sitio.getCategorias().contains(cat)) { sitio.getCategorias().remove(cat); } } } @Override public long cantCheckInsSitio(int idSitio, Calendar inicio, Calendar fin) { long ret = 0; if ((inicio == null) && (fin == null)) { ret = sitioInteresDAO.cantCheckInSitio(idSitio); } else if (fin == null) { ret = sitioInteresDAO.cantCheckInSitioDesde(idSitio, inicio); } else if (inicio == null) { ret = sitioInteresDAO.cantCheckInSitioHasta(idSitio, fin); } else { ret = sitioInteresDAO.cantCheckInSitioEntre(idSitio, inicio, fin); } return ret; } @Override public List<CheckIn> obtenerCheckInsAmigosLocal(int idUsuario, int idSitio) { return checkInDAO.getCheckInAmigosLocal(idUsuario, idSitio); } }