package gcom.gui.cadastro.projeto;
import gcom.cadastro.projeto.FiltroProjeto;
import gcom.cadastro.projeto.Projeto;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
import gcom.util.filtro.ParametroNaoNulo;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class FiltrarProjetoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o caminho de retorno
ActionForward retorno = actionMapping.findForward("exibirManterProjeto");
FiltrarProjetoActionForm form = (FiltrarProjetoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
//Recupera dados do form
String codigo = form.getId();
String nome = form.getNome();
String nomeAbreviado = form.getNomeAbreviado();
String idOrgaoFinanciador = form.getIdOrgaoFinanciador();
String tipoPesquisa = form.getTipoPesquisa();
String situacao = form.getSituacao();
boolean peloMenosUmParametroInformado = false;
FiltroProjeto filtroProjeto = new FiltroProjeto();
filtroProjeto.adicionarCaminhoParaCarregamentoEntidade("orgaoFinanciador");
if(codigo!=null && !codigo.equals("")){
filtroProjeto.adicionarParametro(new ParametroSimples(FiltroProjeto.ID,codigo));
peloMenosUmParametroInformado = true;
}
if(nome!=null && !nome.equals("")){
if(tipoPesquisa.equals(ConstantesSistema.TIPO_PESQUISA_INICIAL.toString())){
filtroProjeto.adicionarParametro(new ComparacaoTexto(FiltroProjeto.NOME,nome));
}else if(tipoPesquisa.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())){
filtroProjeto.adicionarParametro(new ComparacaoTextoCompleto(FiltroProjeto.NOME,nome));
}
peloMenosUmParametroInformado = true;
}
if(nomeAbreviado!=null && !nomeAbreviado.equals("")){
filtroProjeto.adicionarParametro(new ComparacaoTexto(FiltroProjeto.NOME_ABREVIADO,nomeAbreviado));
peloMenosUmParametroInformado = true;
}
if(idOrgaoFinanciador!=null && !idOrgaoFinanciador.equals("")){
filtroProjeto.adicionarParametro(new ParametroSimples(FiltroProjeto.ID_ORGAO_FINACIADOR,idOrgaoFinanciador));
peloMenosUmParametroInformado = true;
}
if(situacao!=null && !situacao.equals("")){
Integer tipo = new Integer(situacao);
switch (tipo) {
case 1:
break;
//Em andamento
case 2:
filtroProjeto.adicionarParametro(new ParametroNulo(FiltroProjeto.DATA_FIM));
break;
//Encerrados
case 3:
filtroProjeto.adicionarParametro(new ParametroNaoNulo(FiltroProjeto.DATA_FIM));
break;
default:
break;
}
peloMenosUmParametroInformado = true;
}
//Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
Collection colecaoProjetos = fachada.pesquisar(filtroProjeto,Projeto.class.getName());
if(colecaoProjetos==null || colecaoProjetos.isEmpty()){
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Projeto");
}
//Verifica se o checkbox Atualizar est� marcado e em caso afirmativo
// manda pela sess�o uma vari�vel para o
// ExibirManterEquipeAction e nele verificar se ir� para o
// atualizar ou para o manter, caso o checkbox esteja desmarcado remove
// da sess�o
String indicadorAtualizar = httpServletRequest
.getParameter("atualizar");
if (indicadorAtualizar != null && !indicadorAtualizar.equals("")) {
sessao.setAttribute("atualizar", indicadorAtualizar);
} else {
sessao.removeAttribute("atualizar");
}
sessao.setAttribute("filtroProjeto",filtroProjeto);
return retorno;
}
}