package javaBB; import java.util.ArrayList; import java.util.Collection; 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.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import javax.validation.constraints.Size; import persistencia.Categoria; import persistencia.Empresa; import persistencia.SitioInteres; import negocios.GestionAutenticacion; import negocios.GestionEmpresas; import negocios.GestionSitioInteres; @ManagedBean(name = "modificarSitioInteres") @SessionScoped public class ModificarSitioInteresBB { private boolean exito; private String nombre; private String calendario; private String descripcion; private double latitud; private double longitud; private Object[] logoData; private HashMap<String, Categoria> categorias; private List<String> nombresCategoria; private List<String> nombresCategoriaSelected; private HashMap<String, Categoria> complementoCats; private HashMap<String, Categoria> todasCategorias; private int sitioSelected; private List<SelectItem> sitios; private boolean error; private String msgError; @EJB private GestionSitioInteres gs; @EJB private GestionEmpresas ge; public ModificarSitioInteresBB() { System.out.println("altaSIBean instantiated"); sitios = new LinkedList<SelectItem>(); this.sitioSelected = -1; this.exito = true; } /* logica y navegaciĆ³n */ public String seleccionoSitioInteres() { String retorno = ""; System.out.println("sitio seleccionado" + this.sitioSelected); if (this.sitioSelected > 0) { SitioInteres sitioInteres = gs .obtenerSitioInteres(this.sitioSelected); this.setNombre(sitioInteres.getNombre()); this.setCalendario(sitioInteres.getGoogleCalendarId()); this.setLatitud(sitioInteres.getLatitud()); this.setLongitud(sitioInteres.getLongitud()); this.setDescripcion(sitioInteres.getDescripcion()); this.categorias = new HashMap<String, Categoria>(); this.todasCategorias = new HashMap<String, Categoria>(); List<Categoria> todas = ge.obtenerCategorias(); List<Categoria> pertenecen = ge .obtenerCategoriasDeSitioInteres(sitioSelected); 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.todasCategorias.put(categoria.getNombre(), categoria); this.nombresCategoria.add(categoria.getNombre()); if (!this.categorias.containsKey(categoria.getNombre())) { this.complementoCats.put(categoria.getNombre(), categoria); } } this.exito = true; return "modificar"; } else { this.error = true; this.msgError = "Debe seleccionar un sitio"; return ""; } } public String modificarSitioInteres() { String retorno = ""; SitioInteres sitioInteres = new SitioInteres(); sitioInteres.setId(this.sitioSelected); sitioInteres.setNombre(this.nombre); sitioInteres.setGoogleCalendarId(this.calendario); sitioInteres.setDescripcion(this.descripcion); sitioInteres.setLatitud(this.latitud); sitioInteres.setLongitud(this.longitud); gs.modifciarSitioInteres(sitioInteres); 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()); } } gs.borrarCategoriasSitio(sitioInteres.getId(), aBorrar); gs.agregarCategoriaSitio(sitioInteres.getId(), aLevantar); retorno = "exito"; FacesContext context = FacesContext.getCurrentInstance(); context.getExternalContext().getSessionMap() .remove("modificarSitioInteresBB"); StatusBB statusBB = (StatusBB) context.getExternalContext().getSessionMap().get("statusBB"); statusBB.setExito(true); statusBB.setError(false); statusBB.setExitoMsg("Se modifico el sitio de interes " + sitioInteres.getNombre()); return retorno; } public void logoListener() { } 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 Object[] getLogoData() { return logoData; } public void setLogoData(Object[] logoData) { this.logoData = logoData; } public int getSitioSelected() { return sitioSelected; } public void setSitioSelected(int sitioSelected) { this.sitioSelected = sitioSelected; } public List<SelectItem> getSitios() { // *** LOGICA sitios = new LinkedList<SelectItem>(); List<SitioInteres> sitiosInteres = gs.obtenerTodosSitiosInteres(); for (SitioInteres s : sitiosInteres) { sitios.add(new SelectItem(s.getId(), s.getNombre())); } // LOGICA *******/ return sitios; } public void setSitios(List<SelectItem> sitios) { this.sitios = sitios; } 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 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 String getCalendario() { return calendario; } public void setCalendario(String calendario) { this.calendario = calendario; } public HashMap<String, Categoria> getCategorias() { return categorias; } public void setCategorias(HashMap<String, Categoria> categorias) { this.categorias = categorias; } 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; } public boolean isError() { return error; } public void setError(boolean error) { this.error = error; } public String getMsgError() { return msgError; } public void setMsgError(String msgError) { this.msgError = msgError; } }