package br.gov.serpro.treino.view.managedbean; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.primefaces.event.RowEditEvent; import br.gov.serpro.treino.bean.Obra; import br.gov.serpro.treino.business.IProjectBC; import br.gov.serpro.treino.business.implementation.ProjectBC; import br.gov.serpro.treino.constant.Navigation; import br.gov.serpro.treino.exception.InfoMessage; @ManagedBean(name = "obraMB") @SessionScoped public class ObraMB extends TestGridMB { private static final long serialVersionUID = 1L; private static Logger log = Logger.getLogger(ObraMB.class); private IProjectBC projectBC; protected Obra currentProject; private String projectSelectedId; public List<Obra> obras; private List<SelectItem> projectItens = new ArrayList<SelectItem>(); private Obra obra; private Double novoValor; private Date novoPrazo; public ObraMB(){ projectBC = new ProjectBC(); } @PostConstruct public void init() { obra = new Obra(); obras = new ArrayList<Obra>(); projectItens = new ArrayList<SelectItem>(); modeInsert = false; projectSelectedId = "0"; } public void loadProjects() { if (obras.isEmpty()) { load(); } } private void load() { obras = projectBC.list(); projectItens.clear(); for (Obra project : getObras()) { projectItens.add(new SelectItem(project.getId() + "", project.getNome())); } } @Override public void setModeInsert(Boolean modeInsert) { super.setModeInsert(modeInsert); this.obra = new Obra(); } public void cancel(){ super.setModeInsert(false); } /** * Retorna todos os projetos da base * * @return */ public String list() { log.debug("list"); load(); this.obra = new Obra(); return Navigation.OBRA; } /** * Insere um novo projeto * * @param actionEvent * @return */ public void insert(ActionEvent actionEvent) { try { log.debug("insert"); obra = projectBC.insert(obra); String[] param = { obra.getNome() }; load(); obra = new Obra(); FacesUtil.addMessage(InfoMessage.SAVE_OK, param); } catch (Throwable e) { FacesUtil.handleException(e); } } public void update(RowEditEvent event) { try { log.debug("update - RowEditEvent"); obra = (Obra) event.getObject(); update(); } catch (Throwable e) { FacesUtil.handleException(e); } } /** * Atualiza um projeto da base * * @param event */ public void update() { try { log.debug("update"); projectBC.update(obra); String[] param = { obra.getNome() }; obra = new Obra(); load(); FacesUtil.addMessage(InfoMessage.SAVE_OK, param); } catch (Throwable e) { FacesUtil.handleException(e); } } public void clean(ActionEvent event){ try { log.debug("clean"); projectBC.clean(); obra = new Obra(); load(); FacesUtil.addMessage(InfoMessage.CLEAN_OK); } catch (Throwable e) { FacesUtil.handleException(e); } } /** * Remove um projeto da base */ public void delete(ActionEvent event) { try { log.debug("delete"); String[] param = { obra.getNome() }; projectBC.delete(obra); load(); obra = new Obra(); FacesUtil.addMessage(InfoMessage.DELETE_OK, param); } catch (Throwable e) { FacesUtil.handleException(e); } } public void enviarProposta(ActionEvent event){ try { HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true); String username = (String) session.getAttribute("username"); log.debug("enviarProposta"); projectBC.enviarProposta(obra, novoValor, novoPrazo, username); load(); obra = new Obra(); FacesUtil.addMessage(InfoMessage.PROPOSTA_ACEITA); } catch (Throwable e) { FacesUtil.handleException(e); } } public List<SelectItem> getProjectSelectItens() { return projectItens; } /** * Faz upload do jmx * * @param event */ // GETS e SET public Obra getObra() { return obra; } public void setObra(Obra obra) { novoPrazo = obra.getPrazo(); novoValor = obra.getValor(); this.obra = projectBC.findProject(obra); } public List<Obra> getObras() { return obras; } public void setObras(List<Obra> projects) { this.obras = projects; } public Obra getCurrentProject() { return currentProject; } public void setCurrentProject(Obra currentProject) { this.currentProject = currentProject; if (currentProject == null) { setProjectSelectedId(0l + ""); } else { setProjectSelectedId(currentProject.getId() + ""); } } public String getProjectSelectedId() { return projectSelectedId; } public void setProjectSelectedId(String projectSelectedId) { this.projectSelectedId = projectSelectedId; } public Double getNovoValor() { return novoValor; } public void setNovoValor(Double novoValor) { this.novoValor = novoValor; } public Date getNovoPrazo() { return novoPrazo; } public void setNovoPrazo(Date novoPrazo) { this.novoPrazo = novoPrazo; } }