package br.com.ufrj.msi2.netuno.bean; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.servlet.http.HttpSession; import br.com.ufrj.msi2.netuno.attributes.Attributes; import br.com.ufrj.msi2.netuno.carga.servicos.GerenciarCargasService; import br.com.ufrj.msi2.netuno.carga.servicos.GerenciarConteinersService; import br.com.ufrj.msi2.netuno.modelo.entidades.AgenteCarga; import br.com.ufrj.msi2.netuno.modelo.entidades.Carga; import br.com.ufrj.msi2.netuno.modelo.entidades.Conteiner; import br.com.ufrj.msi2.netuno.modelo.entidades.ParteCarga; @ManagedBean(name = "retiraCargaConteinerController") @ViewScoped public class RetiraCargaConteinerControllerBean extends MBean { @EJB public GerenciarCargasService gCargaService; @EJB public GerenciarConteinersService gConteinerService; private AgenteCarga agente; private ResourceBundle bundle; private int cargaId = 0; @ManagedProperty(value = "#{retiraCargaConteinerModel}") private RetiraCargaConteinerModelBean retiraCargaConteinerModelBean; @PostConstruct public void construct() { HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true); agente = (AgenteCarga) session.getAttribute(Attributes.SessionAttributes.LOGIN.toString()); FacesContext context = FacesContext.getCurrentInstance(); this.bundle = context.getApplication().getResourceBundle(context, "cargaMsg"); } public void onPageLoad() { if (cargaId > 0) { this.getInformations(); } } /** * Recupera informa��es necess�rias para montar a p�gina de Retirada de Carga */ private void getInformations() { retiraCargaConteinerModelBean.setCarga(gCargaService.obterPorId(cargaId)); retiraCargaConteinerModelBean.setListPartes( this.trataListParteCargaDesembarque( gCargaService.listaParteCargasComConteiner( retiraCargaConteinerModelBean.getCarga() ) ) ); } /** * Filtra a lista de PartesCarga por cargas que est�o em um porto. * @param list List<ParteCarga> Lista com as PartesCarga. * @return List<ParteCarga> Lista filtrada por PartesCarga que est�o em um porto. */ private List<ParteCarga> trataListParteCargaDesembarque(List<ParteCarga> list) { List<ParteCarga> listResult = new ArrayList<ParteCarga>(); for(ParteCarga parte : list) { boolean found = false; if(parte.getConteiner().getPorto() != null) { found = true; } if(found) listResult.add(parte); } return listResult; } public int getCargaId() { return cargaId; } public void setCargaId(int cargaId) { this.cargaId = cargaId; } public RetiraCargaConteinerModelBean getRetiraCargaConteinerModelBean() { return retiraCargaConteinerModelBean; } public void setRetiraCargaConteinerModelBean( RetiraCargaConteinerModelBean retiraCargaConteinerModelBean) { this.retiraCargaConteinerModelBean = retiraCargaConteinerModelBean; } /** * Retira a ParteCarga passada como par�metro do Conteiner. * @param parteId int. Id da parte carga que se deseja desembarcar. */ public void desembarcarCarga(int parteId) { try { gCargaService.desalocarParteCarga(parteId); } catch (Exception e) { super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.bundle.getString("desalocaCarga.DesalocaErro"), null); return; } super.sendMessage(null, FacesMessage.SEVERITY_INFO, this.bundle.getString("desalocaCarga.DesembarcaSucesso"), null); this.getInformations(); } /** * Retira a Carga passada como par�metro do Conteiner e todas as suas ParteCargas. * @param cargaId int. Id da carga que se deseja desembarcar inteira. */ public void desembarcarTodas(int cargaId) { try { gCargaService.desalocarTodasPartes(cargaId); } catch (Exception e) { super.sendMessage(null, FacesMessage.SEVERITY_ERROR, this.bundle.getString("desalocaCarga.DesalocaTudoErro"), null); return; } super.sendMessage(null, FacesMessage.SEVERITY_INFO, this.bundle.getString("desalocaCarga.DesembarcaTudoSucesso"), null); this.getInformations(); } public AgenteCarga getAgente() { return agente; } public void setAgente(AgenteCarga agente) { this.agente = agente; } public ResourceBundle getBundle() { return bundle; } public void setBundle(ResourceBundle bundle) { this.bundle = bundle; } }