package gcom.gui.relatorio.cadastro.endereco;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.FiltroBairro;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
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.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
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;
/**
* [UC1063] Gerar Relat�rio de Logradouros por Municipio
*
* @author Wallace Thierre
* @date 06/09/2010
*/
public class ExibirGerarRelatorioLogradourosPorMunicipioAction extends GcomAction{
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirGerarRelatorioLogradourosPorMunicipio");
Fachada fachada = Fachada.getInstancia();
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
GerarRelatorioLogradouroPorMunicipioActionForm gerarLogradouroActionForm = (GerarRelatorioLogradouroPorMunicipioActionForm) actionForm;
/*
* Removendo o bairro selecionado da sess�o
*/
if(httpServletRequest.getParameter("remover") != null
&& httpServletRequest.getParameter("remover").equals("s")){
String idBairro = httpServletRequest.getParameter("idBairro");
if (idBairro != null && !idBairro.equals("") &&
sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){
Collection colecaoBairrosSelecionadosUsuario = (Collection) sessao
.getAttribute("colecaoBairrosSelecionadosUsuario");
Iterator colecaoBairrosSelecionadosUsuarioIterator;
Bairro bairroInserir;
colecaoBairrosSelecionadosUsuarioIterator = colecaoBairrosSelecionadosUsuario
.iterator();
while (colecaoBairrosSelecionadosUsuarioIterator.hasNext()) {
bairroInserir = (Bairro) colecaoBairrosSelecionadosUsuarioIterator
.next();
if (bairroInserir.getId().equals(new Integer(idBairro))) {
colecaoBairrosSelecionadosUsuario.remove(bairroInserir);
break;
}
}
if (colecaoBairrosSelecionadosUsuario.isEmpty()){
gerarLogradouroActionForm.setColecaoBairro("");
}
}
gerarLogradouroActionForm.setIdBairro("");
gerarLogradouroActionForm.setNomeBairro("");
return retorno;
}
gerarLogradouroActionForm.setColecaoBairro("");
if (sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){
Collection colecaoBairros = (List) sessao
.getAttribute("colecaoBairrosSelecionadosUsuario");
if (!colecaoBairros.isEmpty()){
gerarLogradouroActionForm.setColecaoBairro("CARREGADO");
}
else{
gerarLogradouroActionForm.setColecaoBairro("");
}
}
//-------Parte que trata do c�digo quando o usu�rio tecla enter
//caso seja o id do municipio
String idDigitadoEnterMunicipio = (String) gerarLogradouroActionForm
.getIdMunicipio();
String codigoDigitadoEnterBairro = (String) gerarLogradouroActionForm
.getIdBairro();
/*
* Removendo toda a cole��o de bairro da sess�o
*/
String removerColecaoBairro = httpServletRequest.getParameter("removerColecaoBairro");
if (removerColecaoBairro != null && !removerColecaoBairro.equals("")){
sessao.removeAttribute("colecaoBairrosSelecionadosUsuario");
gerarLogradouroActionForm.setColecaoBairro("");
}
//Verifica se o c�digo foi digitado
if (idDigitadoEnterMunicipio != null
&& !idDigitadoEnterMunicipio.trim().equals("")
&& !Util.validarValorNaoNumerico(idDigitadoEnterMunicipio)) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idDigitadoEnterMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection municipioEncontrado = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (municipioEncontrado != null && !municipioEncontrado.isEmpty()) {
//O municipio foi encontrado
gerarLogradouroActionForm
.setIdMunicipio(((Municipio) ((List) municipioEncontrado)
.get(0)).getId().toString());
gerarLogradouroActionForm
.setNomeMunicipio(((Municipio) ((List) municipioEncontrado)
.get(0)).getNome());
}else{
httpServletRequest.setAttribute("nomeCampo",
"codigoBairro");
httpServletRequest.setAttribute("idMunicipioNaoEncontrado",
"true");
gerarLogradouroActionForm.setIdMunicipio("");
httpServletRequest.setAttribute("nomeCampo",
"idMunicipio");
httpServletRequest.setAttribute("idMunicipioNaoEncontrado",
"exception");
gerarLogradouroActionForm.setNomeMunicipio("Munic�pio inexistente");
}
}
//Verifica se o c�digo foi digitado
if (codigoDigitadoEnterBairro != null
&& !codigoDigitadoEnterBairro.trim().equals("")
&& !Util.validarValorNaoNumerico(codigoDigitadoEnterBairro)) {
FiltroBairro filtroBairro = new FiltroBairro();
filtroBairro.adicionarCaminhoParaCarregamentoEntidade("municipio");
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.CODIGO, codigoDigitadoEnterBairro));
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// verifica se o bairro pesquisado � de um municipio existente
if (idDigitadoEnterMunicipio != null
&& !idDigitadoEnterMunicipio.trim().equals("")
&& Integer.parseInt(idDigitadoEnterMunicipio) > 0) {
filtroBairro.adicionarParametro(new ParametroSimples(
FiltroBairro.MUNICIPIO_ID, idDigitadoEnterMunicipio));
}
Collection bairroEncontrado = fachada.pesquisar(filtroBairro,
Bairro.class.getName());
if (bairroEncontrado != null && !bairroEncontrado.isEmpty()) {
//O bairro foi encontrado
Bairro objetoBairroEncontrado = (Bairro) Util.retonarObjetoDeColecao(bairroEncontrado);
gerarLogradouroActionForm.setIdBairro(String.valueOf(objetoBairroEncontrado.getCodigo()));
gerarLogradouroActionForm.setNomeBairro(objetoBairroEncontrado.getNome());
httpServletRequest.setAttribute("nomeCampo", "botaoAdicionarBairro");
httpServletRequest.setAttribute("idBairroNaoEncontrado", "true");
/*
* Adicionado o novo BAIRRO na cole��o
*/
String adicionarBairroColecao = httpServletRequest.getParameter("adicionarBairroColecao");
if (adicionarBairroColecao != null && !adicionarBairroColecao.equals("")){
gerarLogradouroActionForm.setIdBairro("");
gerarLogradouroActionForm.setNomeBairro("");
List colecaoBairrosSelecionadosUsuario = new ArrayList();
if (sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){
colecaoBairrosSelecionadosUsuario = (List) sessao
.getAttribute("colecaoBairrosSelecionadosUsuario");
if (!colecaoBairrosSelecionadosUsuario.contains((Bairro) ((List) bairroEncontrado).get(0))){
colecaoBairrosSelecionadosUsuario.add((Bairro) ((List) bairroEncontrado).get(0));
gerarLogradouroActionForm.setColecaoBairro("CARREGADO");
}
else{
throw new ActionServletException(
"atencao.objeto_ja_selecionado", null, "Bairro");
}
}
else{
colecaoBairrosSelecionadosUsuario.add((Bairro) ((List) bairroEncontrado).get(0));
sessao.setAttribute("colecaoBairrosSelecionadosUsuario", colecaoBairrosSelecionadosUsuario);
gerarLogradouroActionForm.setColecaoBairro("CARREGADO");
}
}
} else {
gerarLogradouroActionForm.setIdBairro("");
gerarLogradouroActionForm.setNomeBairro("");
httpServletRequest.setAttribute("nomeCampo",
"codigoBairro");
httpServletRequest.setAttribute("idBairroNaoEncontrado",
"exception");
gerarLogradouroActionForm.setNomeBairro("Bairro inexistente");
}
}
//fim da parte da pesquisa do enter
return retorno;
}
}