/*
*
* Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute
- Graduate School and Research in Engineering.
* See the file license.txt for copyright permission.
*
*/
package actions;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import org.ajax4jsf.context.AjaxContext;
import exception.relatorio.RelatorioException;
import modelo.Familia;
import modelo.Modelo;
import modelo.ModeloDecorado;
import modelo.PerioPM;
import modelo.RecModel;
import modelo.Recurso;
import service.FamiliaAppService;
import service.ModeloAppService;
import service.PerioPMAppService;
import service.RecModelAppService;
import service.RecursoAppService;
import service.controleTransacao.FabricaDeAppService;
import service.exception.AplicacaoException;
import util.SelectOneDataModel;
public class RecModelActions extends BaseActions {
// Services
private static RecModelAppService recModelService;
private static RecursoAppService recursoService;
private static ModeloAppService modeloService;
// Paginas
public final String PAGINA_LIST = "listRecModel";
public final String PAGINA_NEW = "newRecModel";
public final String PAGINA_SHOW = "showRecModel";
public final String PAGINA_EDIT = "editRecModel";
// Variaveis de Tela
private RecModel recModelCorrente;
private Recurso recursoCorrente;
private DataModel listaDeRecursos;
private SelectOneDataModel<Modelo> comboModelos;
private SelectOneDataModel<String> comboTiposDeBusca;
private String campoDeBusca;
private boolean buscaEfetuada = false;
public final String BUSCA_POR_CODIGO = "C�digo";
public final String BUSCA_POR_DESCRICAO = "Descri��o";
private int pagina;
public RecModelActions() throws Exception {
try {
modeloService = FabricaDeAppService.getAppService(ModeloAppService.class);
recModelService = FabricaDeAppService.getAppService(RecModelAppService.class);
recursoService = FabricaDeAppService.getAppService(RecursoAppService.class);
} catch (Exception e) {
throw e;
}
//resgata o managed bean "recursoActions" que foi mantido na requisao atrav�s do keepAlive
pagina = ((RecursoActions) getManagedBean("recursoActions")).getPagina();
}
/**
* Antes de incluir RecModel, verifica se tem modelos cadastrados e recursos
* cadastrados, e mostra as mensagens de erro se elas existirem.
* Resgata o managed bean "recursoActions" que foi mantido na requisao atrav�s do keepAlive
* e instancia RecModel se nao houver excecao
* retorna para a pagina new em caso de sucesso, caso contrario retorna para pagina list
*/
public String preparaInclusao() {
try{
modeloService.recuperaListaDeModelos();
}
catch(AplicacaoException ae){
error(ae.getMessage());
return PAGINA_LIST;
}
try{
recursoService.recuperaListaDeRecursos();
}
catch(AplicacaoException ae){
error(ae.getMessage());
return PAGINA_LIST;
}
recModelCorrente = new RecModel();
recursoCorrente = (Recurso) listaDeRecursos.getRowData();
recModelCorrente.setRecurso(recursoCorrente);
return PAGINA_NEW;
}
public String inclui(){
//atribui a recModel.modelo o objeto modelo relativo ao
//modelo selecionado na combobox
recModelCorrente.setModelo(comboModelos.getObjetoSelecionado());
try{
recModelService.inclui(recModelCorrente);
} catch (AplicacaoException ex) {
error(ex.getMessage());
return PAGINA_NEW;
}
info("recModel.SUCESSO_INCLUSAO");
listaDeRecursos = null;
return PAGINA_LIST;
}
/**
* obtem do data Model (tabelaRecModels) o objeto recModelCorrente
* @return
*/
public String preparaAlteracao(){
return PAGINA_EDIT;
}
public String altera() {
recModelService.altera(recModelCorrente);
info("recModel.SUCESSO_ALTERACAO");
buscaEfetuada = false;
listaDeRecursos = null;
return PAGINA_LIST;
}
public String mostra(){
recModelCorrente = (RecModel) listaDeRecursos.getRowData();
return PAGINA_SHOW;
}
/**
* obtem o objeto recModelCorrente, que ficar� no escopo de requisi��o (vide faces-config)
*/
public void preparaExclusao(){
// System.out.println("************************ Passou pelo metodo preparaExclusao de RecModelActions *********************************** ");
// Recurso recurso;
// recurso = (Recurso)recursoActions.getListaDeRecursos().getRowData();
//
// listaDeRecursos = new ListDataModel(recurso.getRecModels());
// recModelCorrente = (RecModel) listaDeRecursos.getRowData();
}
public String exclui(){
try {
recModelService.exclui(recModelCorrente);
} catch (AplicacaoException e) {
}
info("recModel.SUCESSO_EXCLUSAO");
buscaEfetuada = false;
listaDeRecursos = null;
return PAGINA_LIST;
}
public String cancela() {
listaDeRecursos = null;
buscaEfetuada = false;
return PAGINA_LIST;
}
// ================================== M�todos get() e set() ================================== //
public RecModel getRecModelCorrente() {
return recModelCorrente;
}
public void setRecModelCorrente(RecModel recModelCorrente) {
this.recModelCorrente = recModelCorrente;
}
public void setRecursoCorrente(Recurso recursoCorrente) {
this.recursoCorrente = recursoCorrente;
}
public Recurso getRecursoCorrente() {
return recursoCorrente;
}
public DataModel getListaDeRecursos() {
if (listaDeRecursos == null){
listaDeRecursos = new ListDataModel(recursoService.recuperaListaPaginadaDeRecursosComListaDeRecModels());
}
return listaDeRecursos;
}
public void setListaDeRecursos(DataModel listaDeRecursos) {
this.listaDeRecursos = listaDeRecursos;
}
/**
* M�todo que cria a Combobox que lista os modelos cadastrados no sistema.
*
* @author dayse
*/
public SelectOneDataModel<Modelo> getComboModelos() {
if (comboModelos == null){
try{
comboModelos = SelectOneDataModel.criaSemTextoInicial(modeloService.recuperaListaDeModelos());
}
catch(AplicacaoException e){
}
}
return comboModelos;
}
public void setComboModelos(SelectOneDataModel<Modelo> comboModelos) {
this.comboModelos = comboModelos;
}
public String getCampoDeBusca() {
return campoDeBusca;
}
public void setCampoDeBusca(String campoDeBusca) {
this.campoDeBusca = campoDeBusca;
}
public void setComboTiposDeBusca(SelectOneDataModel<String> comboTiposDeBusca) {
this.comboTiposDeBusca = comboTiposDeBusca;
}
/**
* M�todo que cria a ComboBox relativos as formas de busca de um Modelo
*
* @author walanem
*/
public SelectOneDataModel<String> getComboTiposDeBusca() {
if (comboTiposDeBusca == null){
List<String> tiposDeBusca = new ArrayList<String>(2);
tiposDeBusca.add(BUSCA_POR_CODIGO);
tiposDeBusca.add(BUSCA_POR_DESCRICAO);
comboTiposDeBusca = SelectOneDataModel.criaComObjetoSelecionadoSemTextoInicial(tiposDeBusca, BUSCA_POR_CODIGO);
}
return comboTiposDeBusca;
}
/**
* Exatamente igual ao metodo no cadastro de modelos
* talvez seja interessante refatorar para colocar num lugar s�
* para utiliza�ao de todos que usem combobox
*
*/
public void setBuscaEfetuada(boolean buscaEfetuada) {
this.buscaEfetuada = buscaEfetuada;
}
/**
* Exatamente igual ao metodo no cadastro de modelos
* talvez seja interessante refatorar para colocar num lugar s�
* para utiliza�ao de todos que usem combobox
*
*/
public boolean isBuscaEfetuada() {
return buscaEfetuada;
}
public int getPagina() {
return pagina;
}
public void setPagina(int pagina) {
this.pagina = pagina;
}
/**
* M�todo usado para impressao,caso n�o haja modelos associados
* a recursos uma mensagem de alerta sera enviada.
*
* @author marques.araujo
* @return void
*/
public void imprimir(){
try{
if(recursoService.recuperaListaDeRecursosQueTenhamApenasRecModels().isEmpty()){
throw new AplicacaoException("recurso.RECURSOS_SEM_MODELOS");
}
recursoService.gerarRelatorioAgregado(recursoService.recuperaListaDeRecursosComRecModels());
} catch (AplicacaoException re){
if(re.getMessage().equals("recurso.RECURSOS_SEM_MODELOS")){
error("recurso.RECURSOS_SEM_MODELOS");
}else{
error("recurso.RECURSOS_INEXISTENTES");
}
}
}
}