package gcom.gui.cadastro.localidade;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroQuadra;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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;
/**
* Descri��o da classe
*
* @author Administrador
* @date 08/07/2006
*/
public class FiltrarQuadraAction extends GcomAction {
/**
* <Breve descri��o sobre o caso de uso>
*
* <Identificador e nome do caso de uso>
*
* <Breve descri��o sobre o subfluxo>
*
* <Identificador e nome do subfluxo>
*
* <Breve descri��o sobre o fluxo secund�rio>
*
* <Identificador e nome do fluxo secund�rio>
*
* @author Administrador
* @date 08/07/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("retornarFiltroQuadra");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarQuadraActionForm filtrarQuadraActionForm = (FiltrarQuadraActionForm) actionForm;
FiltroQuadra filtroQuadra = new FiltroQuadra(FiltroQuadra.ID_LOCALIDADE);
// Objetos que ser�o retornados pelo hibernate.
filtroQuadra
.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade");
String localidadeID = filtrarQuadraActionForm.getLocalidadeID();
String setorComercialCD = filtrarQuadraActionForm.getSetorComercialCD();
String quadraNM = filtrarQuadraActionForm.getQuadraNM();
//String bairroNome = filtrarQuadraActionForm.getBairroNome();
String idRota = filtrarQuadraActionForm.getIdRota();
String indicadorUso = filtrarQuadraActionForm.getIndicadorUso();
//String tipoPesquisa = filtrarQuadraActionForm.getTipoPesquisa();
// 1 check --- null uncheck
String indicadorAtualizar = httpServletRequest
.getParameter("indicadorAtualizar");
boolean peloMenosUmParametroInformado = false;
if (localidadeID != null && !localidadeID.equalsIgnoreCase("")) {
pesquisarLocalidade(filtrarQuadraActionForm,fachada,localidadeID);
peloMenosUmParametroInformado = true;
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.ID_LOCALIDADE, new Integer(localidadeID)));
}
if (setorComercialCD != null && !setorComercialCD.equalsIgnoreCase("")) {
pesquisarSetorComercial(filtrarQuadraActionForm,fachada,setorComercialCD,localidadeID);
peloMenosUmParametroInformado = true;
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.CODIGO_SETORCOMERCIAL, new Integer(setorComercialCD)));
}
if (quadraNM != null && !quadraNM.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.NUMERO_QUADRA, new Integer(quadraNM)));
}
if (idRota != null && !idRota.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.ROTA_ID, new Integer(idRota)));
}
/*
if (bairroNome != null && !bairroNome.equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroQuadra.adicionarParametro(new ComparacaoTextoCompleto(
FiltroQuadra.NOME_BAIRRO, bairroNome));
} else {
filtroQuadra.adicionarParametro(new ComparacaoTexto(
FiltroQuadra.NOME_BAIRRO, bairroNome));
}
}
*/
if (indicadorUso != null && !indicadorUso.equalsIgnoreCase("")
&& !indicadorUso.equalsIgnoreCase("3")) {
peloMenosUmParametroInformado = true;
if (indicadorUso.equalsIgnoreCase(String
.valueOf(ConstantesSistema.INDICADOR_USO_ATIVO))) {
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
} else {
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_DESATIVO));
}
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
filtroQuadra.setCampoOrderBy(FiltroQuadra.NUMERO_QUADRA,
FiltroQuadra.DESCRICAO_LOCALIDADE);
sessao.setAttribute("filtroQuadra", filtroQuadra);
sessao.setAttribute("indicadorAtualizar", indicadorAtualizar);
// devolve o mapeamento de retorno
return retorno;
}
private void pesquisarLocalidade(
FiltrarQuadraActionForm filtrarQuadraActionForm,
Fachada fachada, String localidadeID) {
Collection colecaoPesquisa;
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, localidadeID));
//Retorna localidade
colecaoPesquisa = fachada.pesquisar(filtroLocalidade,
Localidade.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Localidade nao encontrada
//Limpa o campo localidadeID do formul�rio
filtrarQuadraActionForm.setLocalidadeID("");
filtrarQuadraActionForm
.setLocalidadeNome("Localidade inexistente.");
throw new ActionServletException("atencao.pesquisa_inexistente",
null,"Localidade");
}else {
Localidade objetoLocalidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoPesquisa);
filtrarQuadraActionForm.setLocalidadeID(String
.valueOf(objetoLocalidade.getId()));
filtrarQuadraActionForm
.setLocalidadeNome(objetoLocalidade.getDescricao());
}
}
private void pesquisarSetorComercial(
FiltrarQuadraActionForm filtrarQuadraActionForm,
Fachada fachada,String setorComercialCD,String localidadeID) {
Collection colecaoPesquisa;
if (localidadeID == null || localidadeID.trim().equalsIgnoreCase("")) {
//Limpa os campos setorComercialCD e setorComercialID do formulario
filtrarQuadraActionForm.setSetorComercialCD("");
filtrarQuadraActionForm.setSetorComercialID("");
filtrarQuadraActionForm
.setSetorComercialNome("Informe Localidade.");
throw new ActionServletException("atencao.campo_selecionado.obrigatorio",
null,"Localidade");
} else {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, localidadeID));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
setorComercialCD));
//Retorna setorComercial
colecaoPesquisa = fachada.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//setorComercial nao encontrado
//Limpa os campos setorComercialCD e setorComercialID do
// formulario
filtrarQuadraActionForm.setSetorComercialCD("");
filtrarQuadraActionForm.setSetorComercialID("");
filtrarQuadraActionForm
.setSetorComercialNome("Setor comercial inexistente.");
throw new ActionServletException("atencao.setor_comercial_nao_existe");
} else {
SetorComercial objetoSetorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoPesquisa);
filtrarQuadraActionForm.setSetorComercialCD(String
.valueOf(objetoSetorComercial.getCodigo()));
filtrarQuadraActionForm.setSetorComercialID(String
.valueOf(objetoSetorComercial.getId()));
filtrarQuadraActionForm
.setSetorComercialNome(objetoSetorComercial
.getDescricao());
}
}
}
}