package gcom.gui.atendimentopublico;
import gcom.atendimentopublico.ordemservico.Atividade;
import gcom.atendimentopublico.ordemservico.FiltroAtividade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
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;
/**
* [UC0774]FILTRAR ATIVIDADE
*
* @author Vin�cius Medeiros
* @date 28/04/2008
*/
public class FiltrarAtividadeAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o caminho do retorno
ActionForward retorno = actionMapping.findForward("exibirManterAtividade");
// Mudar isso quando for implementado o esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
FiltrarAtividadeActionForm filtrarAtividadeActionForm = (FiltrarAtividadeActionForm) actionForm;
FiltroAtividade filtroAtividade = new FiltroAtividade();
boolean peloMenosUmParametroInformado = false;
String id = filtrarAtividadeActionForm.getId();
String descricao = filtrarAtividadeActionForm.getDescricao();
String descricaoAbreviada = filtrarAtividadeActionForm.getDescricaoAbreviada();
String indicadorUso = filtrarAtividadeActionForm.getIndicadorUso();
String tipoPesquisa = filtrarAtividadeActionForm.getTipoPesquisa();
String indicadorAtividadeUnica = filtrarAtividadeActionForm.getIndicadorAtividadeUnica();
// Filtro pelo ID
if (id != null && !id.trim().equals("")) {
boolean achou = fachada.verificarExistenciaAgente(new Integer(id));
if (achou) {
peloMenosUmParametroInformado = true;
filtroAtividade.adicionarParametro(
new ParametroSimples(FiltroAtividade.ID,
id));
}
}
// Filtro pela Descri��o
if (descricao != null && !descricao.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null && tipoPesquisa.equals(
ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())) {
filtroAtividade.adicionarParametro(
new ComparacaoTextoCompleto(FiltroAtividade.DESCRICAO,
descricao));
} else {
filtroAtividade.adicionarParametro(
new ComparacaoTexto(FiltroAtividade.DESCRICAO,
descricao));
}
}
// Filtro pela Descri��o Abreviada
if (descricaoAbreviada != null && !descricaoAbreviada.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroAtividade.adicionarParametro(
new ComparacaoTextoCompleto(FiltroAtividade.DESCRICAOABREVIADA,
descricaoAbreviada));
} else {
filtroAtividade.adicionarParametro(
new ComparacaoTexto(FiltroAtividade.DESCRICAOABREVIADA,
descricaoAbreviada));
}
// Filtro pelo Indicador Atividade Unica
if ( !indicadorAtividadeUnica.equals("") ){
peloMenosUmParametroInformado = true;
filtroAtividade.adicionarParametro(
new ParametroSimples(FiltroAtividade.INDICADORATIVIDADEUNICA,
indicadorAtividadeUnica) );
}
// Filtro pelo Indicador uso
if (indicadorUso != null && !indicadorUso.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroAtividade.adicionarParametro(
new ParametroSimples(FiltroAtividade.INDICADORUSO,
indicadorUso));
}
Collection<Atividade> colecaoAtividade = fachada.pesquisar(
filtroAtividade, Atividade.class.getName());
// Verificar a existencia de uma atividade
if (colecaoAtividade.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Atividade");
}
// Filtragem sem parametros
if (!peloMenosUmParametroInformado == true) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Pesquisa sem registros
if (colecaoAtividade == null || colecaoAtividade.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "Atividade");
} else {
httpServletRequest.setAttribute("colecaoAtividade",colecaoAtividade);
Atividade atividade = new Atividade();
atividade = (Atividade) Util.retonarObjetoDeColecao(colecaoAtividade);
String idRegistroAtualizacao = atividade.getId().toString();
sessao.setAttribute("idRegistroAtualizacao", idRegistroAtualizacao);
}
sessao.setAttribute("filtroAtividade", filtroAtividade);
httpServletRequest.setAttribute("filtroAtividade",filtroAtividade);
return retorno;
}
}