package gcom.gui.relatorio.cadastro.imovel;
import gcom.cadastro.cliente.Cliente;
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.gerencial.cadastro.GerarRelatorioClientesEspeciaisActionForm;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
import gcom.micromedicao.leitura.FiltroLeituraAnormalidade;
import gcom.micromedicao.leitura.LeituraAnormalidade;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.cadastro.imovel.RelatorioClientesEspeciais;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* action respons�vel pela exibi��o do relat�rio de bairro manter
*
* @author S�vio Luiz
* @created 11 de Julho de 2005
*/
public class GerarRelatorioClientesEspeciaisAction extends
ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = null;
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm = (GerarRelatorioClientesEspeciaisActionForm) actionForm;
validarForm(gerarRelatorioClientesEspeciaisActionForm);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
RelatorioClientesEspeciais relatorioClientesEspeciais = criarRelatorioBeanParametros(
gerarRelatorioClientesEspeciaisActionForm, httpServletRequest,tipoRelatorio);
retorno = processarExibicaoRelatorio(relatorioClientesEspeciais,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
return retorno;
}
/**
* Esse m�todo faz todas as valida��es necess�rias antes de gerar o relat�rio.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarForm(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
validarPeloMenosUmFiltroInformado(gerarRelatorioClientesEspeciaisActionForm);
if ( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeInicial())) {
validarLocalidade(gerarRelatorioClientesEspeciaisActionForm);
}
if ( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoSetorComercialInicial())) {
validarSetorComercial(gerarRelatorioClientesEspeciaisActionForm);
}
if ( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoRotaInicial())) {
validarRota(gerarRelatorioClientesEspeciaisActionForm);
}
if ( Util.verificarIdNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdClienteResponsavel())) {
validarClienteResponsavel(gerarRelatorioClientesEspeciaisActionForm);
}
if ( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdLeituraAnormalidade())) {
validarleituraAnormalidade(gerarRelatorioClientesEspeciaisActionForm);
}
if ( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getDataInstalacaoHidrometroInicial())) {
validarDataInstalacaoHidrometro(gerarRelatorioClientesEspeciaisActionForm);
}
}
/**
* Esse m�todo cria o Bean do relatorio j� com todos os seus parametros.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private RelatorioClientesEspeciais criarRelatorioBeanParametros(
GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm,
HttpServletRequest httpServletRequest,String tipoRelatorio) {
RelatorioClientesEspeciais relatorioClientesEspeciais = new RelatorioClientesEspeciais(
(Usuario) (httpServletRequest.getSession(false))
.getAttribute("usuarioLogado"));
relatorioClientesEspeciais.addParametro("idGerenciaRegional",gerarRelatorioClientesEspeciaisActionForm.getIdGerenciaRegional());
relatorioClientesEspeciais.addParametro("idUnidadeNegocio",gerarRelatorioClientesEspeciaisActionForm.getIdUnidadeNegocio());
relatorioClientesEspeciais.addParametro("idLocalidadeInicial",gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeInicial());
relatorioClientesEspeciais.addParametro("idLocalidadeFinal",gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeFinal());
relatorioClientesEspeciais.addParametro("codigoSetorInicial",gerarRelatorioClientesEspeciaisActionForm.getCodigoSetorComercialInicial());
relatorioClientesEspeciais.addParametro("codigoSetorFinal",gerarRelatorioClientesEspeciaisActionForm.getCodigoSetorComercialFinal());
relatorioClientesEspeciais.addParametro("codigoRotaInicial",gerarRelatorioClientesEspeciaisActionForm.getCodigoRotaInicial());
relatorioClientesEspeciais.addParametro("codigoRotaFinal",gerarRelatorioClientesEspeciaisActionForm.getCodigoRotaFinal());
relatorioClientesEspeciais.addParametro("idsPerfilImovel",gerarRelatorioClientesEspeciaisActionForm.getIdsImovelPerfil());
relatorioClientesEspeciais.addParametro("idsCategoria", gerarRelatorioClientesEspeciaisActionForm.getIdsCategoria());
relatorioClientesEspeciais.addParametro("idsSubcategoria",gerarRelatorioClientesEspeciaisActionForm.getIdsSubCategoria());
relatorioClientesEspeciais.addParametro("idSituacaoAgua",gerarRelatorioClientesEspeciaisActionForm.getIdSituacaoLigacaoAgua());
relatorioClientesEspeciais.addParametro("idSituacaoEsgoto",gerarRelatorioClientesEspeciaisActionForm.getIdSituacaoLigacaoEsgoto());
relatorioClientesEspeciais.addParametro("qtdeEconomiasInicial",gerarRelatorioClientesEspeciaisActionForm.getIntervaloQtdEcoInicial());
relatorioClientesEspeciais.addParametro("qtdeEconomiasFinal",gerarRelatorioClientesEspeciaisActionForm.getIntervaloQtdEcoFinal());
relatorioClientesEspeciais.addParametro("intervaloConsumoAguaInicial",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoAguaInicial());
relatorioClientesEspeciais.addParametro("intervaloConsumoAguaFinal",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoAguaFinal());
relatorioClientesEspeciais.addParametro("intervaloConsumoEsgotoInicial",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoEsgotoInicial());
relatorioClientesEspeciais.addParametro("intervaloConsumoEsgotoFinal",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoEsgotoFinal());
relatorioClientesEspeciais.addParametro("idClienteResponsavel",gerarRelatorioClientesEspeciaisActionForm.getIdClienteResponsavel());
relatorioClientesEspeciais.addParametro("intervaloConsumoResponsavelInicial",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoResponsavelInicial());
relatorioClientesEspeciais.addParametro("intervaloConsumoResponsavelFinal",gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoResponsavelFinal());
if( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getDataInstalacaoHidrometroInicial())){
relatorioClientesEspeciais.addParametro("dataInstalacaoHidrometroInicial",
Util.converteStringParaDate(gerarRelatorioClientesEspeciaisActionForm
.getDataInstalacaoHidrometroInicial()));
}
if( Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getDataInstalacaoHidrometroFinal())){
relatorioClientesEspeciais.addParametro("dataInstalacaoHidrometroFinal",
Util.converteStringParaDate(gerarRelatorioClientesEspeciaisActionForm
.getDataInstalacaoHidrometroFinal()));
}
relatorioClientesEspeciais.addParametro("idsCapacidadesHidrometro",gerarRelatorioClientesEspeciaisActionForm.getIdsCapacidadeHidrometro());
relatorioClientesEspeciais.addParametro("idsTarifasConsumo",gerarRelatorioClientesEspeciaisActionForm.getIdsTarifaConsumo());
relatorioClientesEspeciais.addParametro("idLeituraAnormalidade",gerarRelatorioClientesEspeciaisActionForm.getIdLeituraAnormalidade());
relatorioClientesEspeciais.addParametro("idConsumoAnormalidade",gerarRelatorioClientesEspeciaisActionForm.getIdConsumoAnormalidade());
relatorioClientesEspeciais.addParametro("leituraAnormalidade",gerarRelatorioClientesEspeciaisActionForm.getLeituraAnormalidade());
relatorioClientesEspeciais.addParametro("consumoAnormalidade",gerarRelatorioClientesEspeciaisActionForm.getConsumoAnormalidade());
relatorioClientesEspeciais.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
return relatorioClientesEspeciais;
}
/**
* Verifica se pelo menos um filtro foi informado.Caso contr�rio
* lan�a uma exce��o.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarPeloMenosUmFiltroInformado(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
if ( !Util.isCampoComboboxInformado(gerarRelatorioClientesEspeciaisActionForm.getIdGerenciaRegional())
&& !Util.isCampoComboboxInformado(gerarRelatorioClientesEspeciaisActionForm.getIdUnidadeNegocio())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoSetorComercialInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoSetorComercialFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoRotaInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getCodigoRotaFinal())
&& !Util.isCampoComboboxMultiploInformado(gerarRelatorioClientesEspeciaisActionForm.getIdsImovelPerfil())
&& !Util.isCampoComboboxMultiploInformado(gerarRelatorioClientesEspeciaisActionForm.getIdsCategoria())
&& !Util.isCampoComboboxMultiploInformado(gerarRelatorioClientesEspeciaisActionForm.getIdsSubCategoria())
&& !Util.isCampoComboboxInformado(gerarRelatorioClientesEspeciaisActionForm.getIdSituacaoLigacaoAgua())
&& !Util.isCampoComboboxInformado(gerarRelatorioClientesEspeciaisActionForm.getIdSituacaoLigacaoEsgoto())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloQtdEcoInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloQtdEcoFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoAguaInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoAguaFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoEsgotoInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoEsgotoFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdClienteResponsavel())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoResponsavelInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIntervaloConsumoResponsavelFinal())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getDataInstalacaoHidrometroInicial())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getDataInstalacaoHidrometroFinal())
&& !Util.isCampoComboboxMultiploInformado(gerarRelatorioClientesEspeciaisActionForm.getIdsCapacidadeHidrometro())
&& !Util.isCampoComboboxMultiploInformado(gerarRelatorioClientesEspeciaisActionForm.getIdsTarifaConsumo())
&& !Util.verificarNaoVazio(gerarRelatorioClientesEspeciaisActionForm.getIdLeituraAnormalidade())
&& !Util.isCampoComboboxInformado(gerarRelatorioClientesEspeciaisActionForm.getIdConsumoAnormalidade())){
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
}
/**
* Esse m�todo faz valida��es em cima dos campos
* de data de instala��o do hidrometro.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarDataInstalacaoHidrometro(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
Date dataInstalacaoHidrometroInicial = Util
.converteStringParaDate(gerarRelatorioClientesEspeciaisActionForm
.getDataInstalacaoHidrometroInicial());
Date dataInstalacaoHidrometroFinal = Util
.converteStringParaDate(gerarRelatorioClientesEspeciaisActionForm
.getDataInstalacaoHidrometroFinal());
if (dataInstalacaoHidrometroInicial.compareTo(dataInstalacaoHidrometroFinal) > 0) {
throw new ActionServletException(
"atencao.data_instalacao_hidrometro_inicial.maior.data_instalacao_hidrometro_final");
}
}
/**
* Esse m�todo faz valida��es em cima do campo
* leitura Anomralidade.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarleituraAnormalidade(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
Fachada fachada = Fachada.getInstancia();
FiltroLeituraAnormalidade filtroLeituraAnormalidade = new FiltroLeituraAnormalidade();
filtroLeituraAnormalidade.adicionarParametro(new ParametroSimples(
FiltroLeituraAnormalidade.ID, gerarRelatorioClientesEspeciaisActionForm.getIdLeituraAnormalidade()));
Collection<LeituraAnormalidade> colecaoLeiturasAnormalidades = fachada.pesquisar(
filtroLeituraAnormalidade, LeituraAnormalidade.class.getName());
if ( Util.isVazioOrNulo(colecaoLeiturasAnormalidades)) {
throw new ActionServletException("atencao.pesquisa_inexistente", null,"Anormalidade de Leitura");
}
}
/**
* Esse m�todo faz valida��es em cima do campo
* de cliente respons�vel.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarClienteResponsavel(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
Fachada fachada = Fachada.getInstancia();
Cliente clienteResponsavel =
fachada.pesquisarClienteDigitado(
new Integer(gerarRelatorioClientesEspeciaisActionForm.getIdClienteResponsavel()));
if (clienteResponsavel == null) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Cliente Respons�vel");
}
}
/**
* Esse m�todo faz valida��es em cima dos campos
* de localidade inicial e final.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void validarLocalidade(GerarRelatorioClientesEspeciaisActionForm gerarRelatorioClientesEspeciaisActionForm) {
Fachada fachada = Fachada.getInstancia();
Integer idLocalidadeInicial = new Integer(gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeInicial());
Integer idLocalidadeFinal = new Integer(gerarRelatorioClientesEspeciaisActionForm.getIdLocalidadeFinal());
if (idLocalidadeInicial > idLocalidadeFinal) {
throw new ActionServletException(
"atencao.localidade.final.maior.localidade.inicial");
}
Localidade localidadeOrigem =
fachada.pesquisarLocalidadeDigitada(new Integer(idLocalidadeInicial));
if (localidadeOrigem == null) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Localidade Inicial");
}
if( !idLocalidadeInicial.equals(idLocalidadeFinal)){
Localidade localidadeDestino =
fachada.pesquisarLocalidadeDigitada(new Integer(idLocalidadeFinal));
if (localidadeDestino == null) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Localidade Final");
}
}
}
/**
* Esse m�todo faz valida��es em cima dos campos
* de setor comercial inicial e final.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private void validarSetorComercial(GerarRelatorioClientesEspeciaisActionForm form) {
Integer codSetorInicial = new Integer(form.getCodigoSetorComercialInicial());
Integer codSetorFinal = new Integer(form.getCodigoSetorComercialFinal());
if(codSetorFinal < codSetorInicial){
throw new ActionServletException(
"atencao.setor.comercial.final.maior.setor.comercial.inicial");
}
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,codSetorInicial));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.LOCALIDADE_ID, new Integer(form.getIdLocalidadeInicial())));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<SetorComercial> colecaoSetorComercial =
this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName());
if ( Util.isVazioOrNulo(colecaoSetorComercial)) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Setor Comercial Inicial");
}
if( !codSetorInicial.equals(codSetorFinal)){
filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,codSetorFinal));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.LOCALIDADE_ID, new Integer(form.getIdLocalidadeFinal())));
colecaoSetorComercial =
this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName());
if ( Util.isVazioOrNulo(colecaoSetorComercial)) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Setor Comercial Final");
}
}
}
/**
* Esse m�todo faz valida��es em cima dos campos
* de rota inicial e final.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private void validarRota(GerarRelatorioClientesEspeciaisActionForm form) {
Integer codRotaInicial = new Integer(form.getCodigoRotaInicial());
Integer codRotaFinal = new Integer(form.getCodigoRotaFinal());
if(codRotaFinal < codRotaInicial){
throw new ActionServletException(
"atencao.rota.final.maior.rota.inicial");
}
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.LOCALIDADE_ID, new Integer(form.getIdLocalidadeInicial())));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.SETOR_COMERCIAL_CODIGO, new Integer(form.getCodigoSetorComercialInicial())));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.CODIGO_ROTA, codRotaInicial));
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<Rota> colecaoRota =
this.getFachada().pesquisar(filtroRota, Rota.class.getName());
if ( Util.isVazioOrNulo(colecaoRota)) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Rota Inicial");
}
if( !codRotaInicial.equals(codRotaFinal)){
filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.LOCALIDADE_ID, new Integer(form.getIdLocalidadeInicial())));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.SETOR_COMERCIAL_CODIGO, new Integer(form.getCodigoSetorComercialInicial())));
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.CODIGO_ROTA, codRotaInicial));
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoRota =
this.getFachada().pesquisar(filtroRota, Rota.class.getName());
if ( Util.isVazioOrNulo(colecaoRota)) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Rota Inicial");
}
}
}
}