package gcom.gui.relatorio.cadastro.endereco;
import gcom.cadastro.endereco.FiltroLogradouroBairro;
import gcom.cadastro.endereco.LogradouroBairro;
import gcom.cadastro.geografico.Bairro;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.cadastro.endereco.RelatorioLogradouroPorMunicipio;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.SistemaException;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
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;
/**
* <p>
* Title: GCOM
* </p>
* <p>
* Description: Sistema de Gest�o Comercial
* </p>
* <p>
* Copyright: Copyright (c) 2004
* </p>
* <p>
* Company: COMPESA - Companhia Pernambucana de Saneamento
* </p>
*
* @author Wallace Thierre
* @version 1.0
*/
public class GerarRelatorioLogradouroPorMunicipioAction extends
ExibidorProcessamentoTarefaRelatorio {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno
ActionForward retorno = null;
Fachada fachada = Fachada.getInstancia();
GerarRelatorioLogradouroPorMunicipioActionForm gerarLogradouroPorMunicipioActionForm = (GerarRelatorioLogradouroPorMunicipioActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
// Recupera a vari�vel para indicar se o usu�rio apertou o bot�o de
// confirmar da tela de
// confirma��o do wizard
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
TarefaRelatorio relatorio = null;
// Inicio da parte que vai mandar os parametros para o relat�rio
String idMunicipio = (String) gerarLogradouroPorMunicipioActionForm.getIdMunicipio();
Municipio municipio = null;
if (idMunicipio != null && !idMunicipio.trim().equals("")
&& Integer.parseInt(idMunicipio) > 0) {
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection municipios = fachada.pesquisar(filtroMunicipio,
Municipio.class.getName());
if (municipios != null && !municipios.isEmpty()) {
// O municipio foi encontrado
Iterator municipioIterator = municipios.iterator();
municipio = (Municipio) municipioIterator.next();
} else {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "municipio");
}
}
else{
throw new ActionServletException("atencao.required", null, "Munic�pio");
}
Collection colecaoBairros = (Collection) sessao
.getAttribute("colecaoBairrosSelecionadosUsuario");
Collection colecaoLogradouroBairroFinal = new ArrayList();
if (colecaoBairros == null || colecaoBairros.isEmpty()) {
throw new ActionServletException("atencao.required", null, "Bairro(s)");
}else{
Iterator colecaoBairroIterator = colecaoBairros.iterator();
while(colecaoBairroIterator.hasNext()){
Bairro bairro = (Bairro) colecaoBairroIterator.next();
FiltroLogradouroBairro filtroLogradouroBairro = new FiltroLogradouroBairro();
filtroLogradouroBairro.adicionarParametro(new ParametroSimples(FiltroLogradouroBairro.ID_BAIRRO, bairro.getId()));
filtroLogradouroBairro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroBairro.BAIRRO);
filtroLogradouroBairro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroBairro.LOGRADOURO);
filtroLogradouroBairro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroBairro.LOGRADOURO_TIPO);
filtroLogradouroBairro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouroBairro.LOGRADOURO_TITULO);
filtroLogradouroBairro.setCampoOrderBy(FiltroLogradouroBairro.NOME_BAIRRO);
filtroLogradouroBairro.setCampoOrderBy(FiltroLogradouroBairro.NOME_LOGRADOURO);
filtroLogradouroBairro.setCampoOrderBy(FiltroLogradouroBairro.LOGRADOUROTIPO_DESCRICAO);
filtroLogradouroBairro.setCampoOrderBy(FiltroLogradouroBairro.LOGRADOUROTITULO_DESCRICAO);
Collection colecaoLogradouroBairro =
fachada.pesquisar(filtroLogradouroBairro, LogradouroBairro.class.getName());
if ( colecaoLogradouroBairro != null && !colecaoLogradouroBairro.isEmpty() ){
Iterator colecaoLogradouroBairroIte = colecaoLogradouroBairro.iterator();
while ( colecaoLogradouroBairroIte.hasNext() ){
LogradouroBairro logradouroBairro = (LogradouroBairro) colecaoLogradouroBairroIte.next();
colecaoLogradouroBairroFinal.add(logradouroBairro);
}
}
}
}
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
Collections.sort((java.util.List<LogradouroBairro>) colecaoLogradouroBairroFinal, new Comparator() {
public int compare(Object a, Object b) {
String nomeBairro1 = ((LogradouroBairro) a)
.getBairro().getNome();
String nomeBairro2 = ((LogradouroBairro) b)
.getBairro().getNome();
return nomeBairro1.compareTo(nomeBairro2);
}
});
relatorio = new RelatorioLogradouroPorMunicipio( (Usuario)( httpServletRequest.getSession(false)).getAttribute("usuarioLogado") );
relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt( tipoRelatorio ) );
relatorio.addParametro("colecaoBairrosSelecionadosUsuario", colecaoBairros );
relatorio.addParametro("colecaoLogradourosBairro", colecaoLogradouroBairroFinal );
relatorio.addParametro("nomeMunicipio", municipio.getNome());
try {
retorno =
processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
} catch (SistemaException ex) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "erro.sistema");
// seta o mapeamento de retorno para a tela de erro de popup
retorno = actionMapping.findForward("telaErroPopup");
} catch (RelatorioVazioException ex1) {
throw new ActionServletException("atencao.nao.existe.dados_relatorio_anomesreferencia", null, "");
}
return retorno;
}
}