package gcom.gui.util.tabelaauxiliar.abreviada;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.util.tabelaauxiliar.DadosTelaTabelaAuxiliar;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
import gcom.util.filtro.ParametroSimples;
import gcom.util.tabelaauxiliar.abreviada.FiltroTabelaAuxiliarAbreviada;
import gcom.util.tabelaauxiliar.abreviada.TabelaAuxiliarAbreviada;
import java.util.Collection;
import java.util.Map;
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;
import org.apache.struts.validator.DynaValidatorForm;
public class PesquisarTabelaAuxiliarAbreviadaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("retornoPesquisaTabelaAuxiliarAbreviada");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Pega o parametro passado no request
DadosTelaTabelaAuxiliar dados = (DadosTelaTabelaAuxiliarAbreviada) sessao
.getAttribute("dados");
// Recupera os par�metros do form
String id = (String) pesquisarActionForm.get("id");
String descricao = (String) pesquisarActionForm.get("descricao");
String descricaoAbreviada = (String) pesquisarActionForm.get("descricaoAbreviada");
String tipoPesquisa = (String) pesquisarActionForm.get("tipoPesquisaDescricao");
// cria o filtro para Tabela Auxiliar abreviada
FiltroTabelaAuxiliarAbreviada filtroTabelaAuxiliarAbreviada = new FiltroTabelaAuxiliarAbreviada();
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
if (id != null && !id.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroTabelaAuxiliarAbreviada
.adicionarParametro(new ParametroSimples(
FiltroTabelaAuxiliarAbreviada.ID, id));
}
if (descricao != null && !descricao.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null &&
tipoPesquisa.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA.toString())) {
filtroTabelaAuxiliarAbreviada.adicionarParametro(
new ComparacaoTextoCompleto(FiltroTabelaAuxiliarAbreviada.DESCRICAO, descricao));
} else {
filtroTabelaAuxiliarAbreviada.adicionarParametro(
new ComparacaoTexto(FiltroTabelaAuxiliarAbreviada.DESCRICAO, descricao));
}
}
if (descricaoAbreviada != null
&& !descricaoAbreviada.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroTabelaAuxiliarAbreviada
.adicionarParametro(new ComparacaoTexto(
FiltroTabelaAuxiliarAbreviada.DESCRICAOABREVIADA,
descricaoAbreviada));
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
Collection colecaoTabelaAuxiliarAbreviada = null;
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
TabelaAuxiliarAbreviada tabelaAuxiliarAbreviada = (TabelaAuxiliarAbreviada) dados
.getTabelaAuxiliar();
// Faz a busca das empresas
colecaoTabelaAuxiliarAbreviada = fachada.pesquisar(
filtroTabelaAuxiliarAbreviada, tabelaAuxiliarAbreviada
.getClass().getName());
if (colecaoTabelaAuxiliarAbreviada == null
|| colecaoTabelaAuxiliarAbreviada.isEmpty()) {
// Nenhum municipio cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, dados.getTitulo());
} else{
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroTabelaAuxiliarAbreviada, tabelaAuxiliarAbreviada.getClass().getName());
colecaoTabelaAuxiliarAbreviada = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
sessao.setAttribute("colecaoTabelaAuxiliarAbreviada", colecaoTabelaAuxiliarAbreviada);
}
// Repassa o tipo da pesquisa para a tela de resultado
httpServletRequest.setAttribute("tipoPesquisa", httpServletRequest
.getParameter("tipoPesquisa"));
// Repassa o caminho do resultado para a tela de resultado
httpServletRequest.setAttribute("caminhoRetorno", httpServletRequest
.getParameter("caminhoRetorno"));
// Repassa o caminho do resultado para a tela de resultado
httpServletRequest.setAttribute("caminhoRetornoTelaPesquisa", sessao
.getAttribute("caminhoRetornoTelaPesquisa"));
// Devolve o mapeamento de retorno
return retorno;
}
}