package com.titanic.ventapasajes.controller; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.faces.application.FacesMessage; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import com.titanic.ventapasajes.modelo.*; import org.primefaces.context.RequestContext; import org.primefaces.event.CellEditEvent; import org.primefaces.event.RowEditEvent; import com.titanic.ventapasajes.jsf.FacesUtil; import com.titanic.ventapasajes.service.RegistroBusService; /** * Created by josediaz on 7/20/14. */ @Named @ViewScoped public class RegistroBusBean implements Serializable { private static final long serialVersionUID = 1L; @Inject private RegistroBusService busService; private Bus bus; private String asiento1, asiento11; private String asiento2, asiento22; private String asiento3, asiento33; private String asiento4, asiento44; private String asiento5, asiento55; private TipoAsiento tipoAsiento1, tipoAsiento11; private TipoAsiento tipoAsiento2, tipoAsiento22; private TipoAsiento tipoAsiento3, tipoAsiento33; private TipoAsiento tipoAsiento4, tipoAsiento44; private TipoAsiento tipoAsiento5, tipoAsiento55; public void inicializar() { if (this.bus == null) { this.bus = new Bus(); bus.setFilas(new ArrayList<Fila>()); } } public Bus getBus() { return bus; } public void registrarBus() { this.bus = busService.registrarBus(this.bus); FacesUtil.adicionarMensajeInfo("El Bus se registro correctamente"); } public void setBus(Bus bus) { this.bus = bus; } public boolean isEditando() { return this.bus.getIdeBus() != null; } public void onCellEdit(CellEditEvent event) { Object oldValue = event.getOldValue(); Object newValue = event.getNewValue(); if (newValue != null && !newValue.equals(oldValue)) { FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Ubicacion cambiada", "Anterior: " + oldValue + ", Nuevo:" + newValue); FacesContext.getCurrentInstance().addMessage(null, msg); } } public void agregarFilaSuperior() { Fila fila = new Fila(); fila.setPrimerPiso(false); fila.setAsientos(new ArrayList<>()); fila.setBus(bus); Asiento asiento11 = new Asiento(this.asiento11, this.tipoAsiento11, this.tipoAsiento11 == TipoAsiento.NO_APLICA ? false : true, false, fila); Asiento asiento22 = new Asiento(this.asiento22, this.tipoAsiento22, this.tipoAsiento22 == TipoAsiento.NO_APLICA ? false : true, false, fila); Asiento asiento33 = new Asiento(this.asiento33, this.tipoAsiento33, this.tipoAsiento33 == TipoAsiento.NO_APLICA ? false : true, false, fila); Asiento asiento44 = new Asiento(this.asiento44, this.tipoAsiento44, this.tipoAsiento44 == TipoAsiento.NO_APLICA ? false : true, false, fila); Asiento asiento55 = new Asiento(this.asiento55, this.tipoAsiento55, this.tipoAsiento55 == TipoAsiento.NO_APLICA ? false : true, false, fila); fila.getAsientos().add(asiento11); fila.getAsientos().add(asiento22); fila.getAsientos().add(asiento33); fila.getAsientos().add(asiento44); fila.getAsientos().add(asiento55); bus.getFilas().add(fila); resetFilaSuperior(); } private void resetFilaSuperior() { this.asiento11 = ""; this.tipoAsiento11 = null; this.asiento22 = ""; this.tipoAsiento22 = null; this.asiento33 = ""; this.tipoAsiento33 = null; this.asiento44 = ""; this.tipoAsiento44 = null; this.asiento55 = ""; this.tipoAsiento55 = null; } public void agregarFilaInferior() { Fila fila = new Fila(); fila.setPrimerPiso(true); fila.setAsientos(new ArrayList<>()); fila.setBus(bus); Asiento asiento1 = new Asiento(this.asiento1, this.tipoAsiento1, this.tipoAsiento1 == TipoAsiento.NO_APLICA ? false : true, true, fila); Asiento asiento2 = new Asiento(this.asiento2, this.tipoAsiento2, this.tipoAsiento2 == TipoAsiento.NO_APLICA ? false : true, true, fila); Asiento asiento3 = new Asiento(this.asiento3, this.tipoAsiento3, this.tipoAsiento3 == TipoAsiento.NO_APLICA ? false : true, true, fila); Asiento asiento4 = new Asiento(this.asiento4, this.tipoAsiento4, this.tipoAsiento4 == TipoAsiento.NO_APLICA ? false : true, true, fila); Asiento asiento5 = new Asiento(this.asiento5, this.tipoAsiento5, this.tipoAsiento5 == TipoAsiento.NO_APLICA ? false : true, true, fila); fila.getAsientos().add(asiento1); fila.getAsientos().add(asiento2); fila.getAsientos().add(asiento3); fila.getAsientos().add(asiento4); fila.getAsientos().add(asiento5); bus.getFilas().add(fila); resetFilaInferior(); } private void resetFilaInferior() { this.asiento1 = ""; this.tipoAsiento1 = null; this.asiento2 = ""; this.tipoAsiento2 = null; this.asiento3 = ""; this.tipoAsiento3 = null; this.asiento4 = ""; this.tipoAsiento4 = null; this.asiento5 = ""; this.tipoAsiento5 = null; } public List<Fila> getFilasInferiores() { return bus.getFilas().stream().filter(f -> f.isPrimerPiso()).collect(Collectors.toCollection(() -> new ArrayList<>())); } public List<Fila> getFilasSuperiores() { return bus.getFilas().stream().filter(f -> !f.isPrimerPiso()).collect(Collectors.toCollection(() -> new ArrayList<>())); } public void onEdit(RowEditEvent event) { FacesMessage msg = new FacesMessage("Fila Editada"); FacesContext.getCurrentInstance().addMessage(null, msg); } public void onCancel(RowEditEvent event) { FacesMessage msg = new FacesMessage("Fila Eliminada"); FacesContext.getCurrentInstance().addMessage(null, msg); this.bus.getFilas().remove((Fila) event.getObject()); } public void onEdit2(RowEditEvent event) { FacesMessage msg = new FacesMessage("Fila Editada"); FacesContext.getCurrentInstance().addMessage(null, msg); } public void onCancel2(RowEditEvent event) { FacesMessage msg = new FacesMessage("Fila Eliminada"); FacesContext.getCurrentInstance().addMessage(null, msg); this.bus.getFilas().remove((Fila) event.getObject()); } public TipoPlanta[] getTiposPlantas() { return TipoPlanta.values(); } public String getAsiento11() { return asiento11; } public void setAsiento11(String asiento11) { this.asiento11 = asiento11; } public String getAsiento22() { return asiento22; } public void setAsiento22(String asiento22) { this.asiento22 = asiento22; } public String getAsiento33() { return asiento33; } public void setAsiento33(String asiento33) { this.asiento33 = asiento33; } public String getAsiento44() { return asiento44; } public void setAsiento44(String asiento44) { this.asiento44 = asiento44; } public String getAsiento55() { return asiento55; } public void setAsiento55(String asiento55) { this.asiento55 = asiento55; } public TipoAsiento getTipoAsiento11() { return tipoAsiento11; } public void setTipoAsiento11(TipoAsiento tipoAsiento11) { this.tipoAsiento11 = tipoAsiento11; } public TipoAsiento getTipoAsiento22() { return tipoAsiento22; } public void setTipoAsiento22(TipoAsiento tipoAsiento22) { this.tipoAsiento22 = tipoAsiento22; } public TipoAsiento getTipoAsiento33() { return tipoAsiento33; } public void setTipoAsiento33(TipoAsiento tipoAsiento33) { this.tipoAsiento33 = tipoAsiento33; } public TipoAsiento getTipoAsiento44() { return tipoAsiento44; } public void setTipoAsiento44(TipoAsiento tipoAsiento44) { this.tipoAsiento44 = tipoAsiento44; } public TipoAsiento getTipoAsiento55() { return tipoAsiento55; } public void setTipoAsiento55(TipoAsiento tipoAsiento55) { this.tipoAsiento55 = tipoAsiento55; } public String getAsiento1() { return asiento1; } public void setAsiento1(String asiento1) { this.asiento1 = asiento1; } public String getAsiento2() { return asiento2; } public void setAsiento2(String asiento2) { this.asiento2 = asiento2; } public String getAsiento3() { return asiento3; } public void setAsiento3(String asiento3) { this.asiento3 = asiento3; } public String getAsiento4() { return asiento4; } public void setAsiento4(String asiento4) { this.asiento4 = asiento4; } public String getAsiento5() { return asiento5; } public void setAsiento5(String asiento5) { this.asiento5 = asiento5; } public TipoAsiento[] getTipoAsientos() { return TipoAsiento.values(); } public TipoAsiento getTipoAsiento1() { return tipoAsiento1; } public void setTipoAsiento1(TipoAsiento tipoAsiento1) { this.tipoAsiento1 = tipoAsiento1; } public TipoAsiento getTipoAsiento2() { return tipoAsiento2; } public void setTipoAsiento2(TipoAsiento tipoAsiento2) { this.tipoAsiento2 = tipoAsiento2; } public TipoAsiento getTipoAsiento3() { return tipoAsiento3; } public void setTipoAsiento3(TipoAsiento tipoAsiento3) { this.tipoAsiento3 = tipoAsiento3; } public TipoAsiento getTipoAsiento4() { return tipoAsiento4; } public void setTipoAsiento4(TipoAsiento tipoAsiento4) { this.tipoAsiento4 = tipoAsiento4; } public TipoAsiento getTipoAsiento5() { return tipoAsiento5; } public void setTipoAsiento5(TipoAsiento tipoAsiento5) { this.tipoAsiento5 = tipoAsiento5; } public void reset() { resetFilaInferior(); getFilasInferiores(); } public void reset2() { resetFilaSuperior(); getFilasSuperiores(); } }