/*** Copyright (c) 2013 Hércules S. S. José Este arquivo é parte do programa EncontreAquiPeças. EncontreAquiPeças é um software livre; você pode redistribui-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do Software Livre (FSF); na versão 2.1 da Licença. Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral Menor GNU em português para maiores detalhes. Você deve ter recebido uma cópia da Licença Pública Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se não, acesse o site HSlife no endereco www.hslife.com.br ou escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informações sobre o programa EncontreAquiPeças e seu autor acesse o endereço www.hslife.com.br, pelo e-mail contato@hslife.com.br ou escreva para Hércules S. S. José, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguaçu, RJ, Brasil. */ package br.com.hslife.encontreaquipecas.controller; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage.Severity; import javax.faces.bean.ManagedProperty; import javax.faces.context.FacesContext; import br.com.hslife.encontreaquipecas.component.UsuarioComponent; import br.com.hslife.encontreaquipecas.entity.EntityPersistence; import br.com.hslife.encontreaquipecas.entity.Usuario; import br.com.hslife.encontreaquipecas.exception.BusinessException; import br.com.hslife.encontreaquipecas.facade.IUsuario; public abstract class AppController<T extends EntityPersistence> implements Serializable { /** * */ private static final long serialVersionUID = 8728324648007202318L; protected Severity INFORMACAO = FacesMessage.SEVERITY_INFO; protected Severity AVISO = FacesMessage.SEVERITY_WARN; protected Severity ERRO = FacesMessage.SEVERITY_ERROR; protected Severity ERRO_FATAL = FacesMessage.SEVERITY_FATAL; protected T entity; protected Long idEntity; protected List<T> listEntity; protected String moduleTitle = ""; @ManagedProperty(name="usuarioService", value="#{usuarioService}") private IUsuario usuarioService; @ManagedProperty(name="usuarioComponent", value="#{usuarioComponent}") private UsuarioComponent usuarioComponent; protected String goToListPage; protected String goToFormPage; protected String goToViewPage; protected String operationTitle; protected String operation; // valid: list, view, create, edit, delete, search public AppController(T entity) { this.entity = entity; goToListPage = "/modules/" + entity.getClass().getSimpleName() + "/list" + entity.getClass().getSimpleName(); goToFormPage = "/modules/" + entity.getClass().getSimpleName() + "/form" + entity.getClass().getSimpleName(); goToViewPage = "/modules/" + entity.getClass().getSimpleName() + "/view" + entity.getClass().getSimpleName(); operation = "list"; } protected abstract void initializeEntity(); protected void loadCombos() { // TODO implementar a lógica de carregar combos nas classes filhas } /* * Inclua o código que deve ser executado ao acessar o módulo especificado. * Navegação padrão: valor da variável goToListPage */ public String startUp() { operation = "list"; initializeEntity(); return goToListPage; } protected FacesContext getContext() { return FacesContext.getCurrentInstance(); } public Usuario getUsuarioLogado() { if (getContext().getExternalContext().getSessionMap().get("usuarioLogado") == null) { Usuario u = new Usuario(); try { u = usuarioComponent.getUsuarioLogado(); } catch (Exception be) { viewMessage(be.getMessage(), ERRO); } u.setSenha(""); getContext().getExternalContext().getSessionMap().put("usuarioLogado", u); } /* * Teste com obtenção dos dados do SessionMap * for (String obj : getContext().getExternalContext().getRequestParameterMap().keySet()) { System.out.print(obj + " - "); System.out.println(getContext().getExternalContext().getRequestParameterMap().get(obj)); } */ return (Usuario)getContext().getExternalContext().getSessionMap().get("usuarioLogado"); } public void viewMessage(String message) { viewMessage(message, INFORMACAO); } public void viewMessage(String message, Severity severity) { getContext().addMessage(null, new FacesMessage(severity, message, null)); } public void infoMessage(String message) { viewMessage(message, INFORMACAO); } public void warnMessage(String message) { viewMessage(message, AVISO); } public void errorMessage(String message) { viewMessage(message, ERRO); } public void fatalErrorMessage(String message) { viewMessage(message, ERRO_FATAL); } public String list() { operation = "list"; return goToListPage; } public String create() { operation = "create"; loadCombos(); return goToFormPage; } public String save() { viewMessage("Registro salvo com sucesso!"); initializeEntity(); return list(); } public String view() { operation = "delete"; return goToViewPage; } public String edit() { operation = "edit"; loadCombos(); return goToFormPage; } public String delete() { viewMessage("Registro excluido com sucesso!"); initializeEntity(); return list(); } public String find(){ return ""; } public String cancel() { initializeEntity(); return list(); } public String getOperationTitle() { if (operation.equals("list")) { operationTitle = getModuleTitle(); } if (operation.equals("create")) { operationTitle = getModuleTitle() + " - Novo"; } if (operation.equals("edit")) { operationTitle = getModuleTitle() + " - Editar"; } if (operation.equals("delete")) { operationTitle = getModuleTitle() + " - Excluir"; } if (operation.equals("view")) { operationTitle = getModuleTitle() + " - Visualizar"; } if (operation.equals("search")) { operationTitle = getModuleTitle() + " - Pesquisar"; } return operationTitle; } public List<Usuario> getListaUsuarios() { try { return usuarioService.getListaUsuarios(); } catch (BusinessException be) { viewMessage(be.getMessage(), ERRO); } return new ArrayList<Usuario>(); } public T getEntity() { return entity; } public void setEntity(T entity) { this.entity = entity; } public Long getIdEntity() { return idEntity; } public void setIdEntity(Long idEntity) { this.idEntity = idEntity; } public List<T> getListEntity() { return listEntity; } public void setListEntity(List<T> listEntity) { this.listEntity = listEntity; } public String getModuleTitle() { return moduleTitle; } public void setModuleTitle(String moduleTitle) { this.moduleTitle = moduleTitle; } public String getOperation() { return operation; } public void setOperation(String operation) { this.operation = operation; } public void setUsuarioService(IUsuario usuarioService) { this.usuarioService = usuarioService; } public void setOperationTitle(String operationTitle) { this.operationTitle = operationTitle; } }