package javaBB; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import javax.servlet.http.HttpSession; import org.richfaces.event.FileUploadEvent; import org.richfaces.model.UploadedFile; import persistencia.Categoria; import persistencia.Empresa; import persistencia.Evento; import persistencia.Imagen; import persistencia.Local; import persistencia.Oferta; import persistencia.SitioInteres; import negocios.GestionAutenticacion; import negocios.GestionEmpresas; import negocios.GestionSitioInteres; import negocios.excepciones.EntidadNoExiste; @ManagedBean(name = "altaEvento", eager = true) @SessionScoped public class ModificarEventoBB { private String nombre; private String descripcion; private double latitud; private double longitud; private Date fechaComienzo; private Date fechaFin; private Imagen imagen; private HashMap<String, Categoria> categorias; private List<String> nombresCategoria; private List<String> nombresCategoriaSelected; private HashMap<String, Categoria> complementoCats; private HashMap<String, Categoria> todasCategorias; private List<SitioInteres> sitios; private int objectSelected; private List<SelectItem> objects; private int eventoSelected; private List<SelectItem> eventos; private boolean exito; @EJB private GestionSitioInteres gs; @EJB private GestionEmpresas ge; public ModificarEventoBB() { System.out.println("modificarEventoBean instantiated"); this.exito = true; } /* logica y navegaciĆ³n*/ public String modificar() { String retorno = ""; Evento evento = new Evento(); evento.setId(this.eventoSelected); evento.setNombre(this.nombre); evento.setDescripcion(this.descripcion); Calendar cal = Calendar.getInstance(); cal.setTime(this.fechaComienzo); evento.setInicio(cal); Calendar cal2 = Calendar.getInstance(); cal2.setTime(this.fechaFin); evento.setFin(cal2); if (this.objectSelected == -1){ evento.setLatitud(this.latitud); evento.setLongitud(this.longitud); } else { SitioInteres sitio = gs.obtenerSitioInteres(this.objectSelected); evento.setLatitud(sitio.getLatitud()); evento.setLongitud(sitio.getLongitud()); } evento.setFoto(this.imagen); try { ge.modificarEvento(evento); Collection<Integer> aLevantar = new ArrayList<Integer>(); Collection<Integer> aBorrar = new ArrayList<Integer>(); for (String nombre : nombresCategoriaSelected) { aLevantar.add(todasCategorias.get(nombre).getId()); } for (String nombre : nombresCategoria) { if (categorias.containsKey(nombre)) { aBorrar.add(categorias.get(nombre).getId()); } } ge.borrarCategoriasEvento(evento.getId(), aBorrar); ge.agregarCategoriasEvento(evento.getId(), aLevantar); this.setExito(true); FacesContext context = FacesContext.getCurrentInstance(); context.getExternalContext().getSessionMap().remove("modificarEventoBB"); StatusBB statusBB = (StatusBB) context.getExternalContext().getSessionMap().get("statusBB"); statusBB.setExito(true); statusBB.setError(false); statusBB.setExitoMsg("Se ha modificado el evento " + evento.getNombre()); retorno = "exito"; } catch (Exception e){ retorno = "revento"; } return retorno; } public String selecciono() { String retorno = ""; System.out.println("evento seleccionado" + this.eventoSelected); Evento evento = ge.obtenerEvento(this.eventoSelected); this.setNombre(evento.getNombre()); this.setDescripcion(evento.getDescripcion()); this.fechaComienzo = evento.getInicio().getTime(); this.fechaFin = evento.getFin().getTime(); this.latitud = (float) evento.getLatitud(); this.longitud = (float) evento.getLongitud(); this.imagen = evento.getFoto(); this.categorias = new HashMap<String, Categoria>(); this.todasCategorias = new HashMap<String, Categoria>(); List<Categoria> todas = ge.obtenerCategorias(); List<Categoria> pertenecen = ge.obtenerCategoriasEvento(eventoSelected); this.complementoCats = new HashMap<String, Categoria>(); this.nombresCategoria = new LinkedList<String>(); this.nombresCategoriaSelected = new LinkedList<String>(); for (Categoria categoria : pertenecen) { this.categorias.put(categoria.getNombre(), categoria); this.nombresCategoriaSelected.add(categoria.getNombre()); } for (Categoria categoria : todas) { this.nombresCategoria.add(categoria.getNombre()); this.todasCategorias.put(categoria.getNombre(), categoria); if (!this.categorias.containsKey(categoria.getNombre())) { this.complementoCats.put(categoria.getNombre(), categoria); } } this.exito = true; return "modificar"; } public void logoListener(FileUploadEvent event) throws Exception{ UploadedFile uploadedFile = event.getUploadedFile(); this.imagen = new Imagen(); this.imagen.setImagen(uploadedFile.getData()); System.out.println("finlistener"); } public void paint(OutputStream stream, Object object) throws IOException { if (this.imagen != null){ stream.write(imagen.getImagen()); } } public String finalizar() { String retorno = ""; //removerBB retorno = "finalizar"; return retorno; } public String cancelar() { String retorno = ""; //removerBB FacesContext context = FacesContext.getCurrentInstance(); StatusBB statusBB = (StatusBB) context.getExternalContext().getSessionMap().get("statusBB"); if (statusBB != null) { statusBB.setExito(false); statusBB.setError(false); } retorno = "cancelar"; return retorno; } /* setters y getters */ public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public boolean isExito() { return exito; } public void setExito(boolean exito) { this.exito = exito; } public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } public Date getFechaComienzo() { return fechaComienzo; } public void setFechaComienzo(Date fechaComienzo) { this.fechaComienzo = fechaComienzo; } public Date getFechaFin() { return fechaFin; } public void setFechaFin(Date fechaFin) { this.fechaFin = fechaFin; } public Imagen getImagen() { return imagen; } public void setImagen(Imagen imagen) { this.imagen = imagen; } public int getObjectSelected() { return objectSelected; } public void setObjectSelected(int objectSelected) { this.objectSelected = objectSelected; } public List<SelectItem> getObjects() { this.objects = new LinkedList<SelectItem>(); this.sitios = gs.obtenerTodosSitiosInteres(); for(SitioInteres s : this.sitios){ this.objects.add(new SelectItem(s.getId(), s.getNombre())); } return objects; } public void setObjects(List<SelectItem> objects) { this.objects = objects; } public List<SitioInteres> getSitios() { return sitios; } public void setSitios(List<SitioInteres> sitios) { this.sitios = sitios; } public HashMap<String, Categoria> getCategorias() { return categorias; } public void setCategorias(HashMap<String, Categoria> categorias) { this.categorias = categorias; } public List<String> getNombresCategoria() { return nombresCategoria; } public void setNombresCategoria(List<String> nombresCategoria) { this.nombresCategoria = nombresCategoria; } public List<String> getNombresCategoriaSelected() { return nombresCategoriaSelected; } public void setNombresCategoriaSelected(List<String> nombresCategoriaSelected) { this.nombresCategoriaSelected = nombresCategoriaSelected; } public int getEventoSelected() { return eventoSelected; } public void setEventoSelected(int eventoSelected) { this.eventoSelected = eventoSelected; } public List<SelectItem> getEventos() { GregorianCalendar dia = new GregorianCalendar(1900, 01, 01); this.eventos = new LinkedList<SelectItem>(); List<Evento> aux = ge.obtenerEventos(dia); for (Evento e : aux){ this.eventos.add(new SelectItem(e.getId(), e.getNombre())); } return eventos; } public void setEventos(List<SelectItem> eventos) { this.eventos = eventos; } public double getLatitud() { return latitud; } public void setLatitud(double latitud) { this.latitud = latitud; } public double getLongitud() { return longitud; } public void setLongitud(double longitud) { this.longitud = longitud; } public HashMap<String, Categoria> getComplementoCats() { return complementoCats; } public void setComplementoCats(HashMap<String, Categoria> complementoCats) { this.complementoCats = complementoCats; } public HashMap<String, Categoria> getTodasCategorias() { return todasCategorias; } public void setTodasCategorias(HashMap<String, Categoria> todasCategorias) { this.todasCategorias = todasCategorias; } }