package gcom.gui.relatorio.micromedicao; import java.util.ArrayList; import java.util.Iterator; import gcom.batch.Relatorio; import gcom.gui.ActionServletException; import gcom.relatorio.ConstantesRelatorios; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.RelatorioVazioException; import gcom.relatorio.cadastro.micromedicao.FiltrarRelatorioImoveisComLeiturasHelper; import gcom.relatorio.cadastro.micromedicao.RelatorioImoveisComLeituras; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; 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; /** * [UC1180] Gerar Relat�rio de Im�veis Com Leituras * * @author Magno Gouveia * @date 03/06/2011 */ public class GerarRelatorioImoveisComLeiturasAction extends ExibidorProcessamentoTarefaRelatorio { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("exibirGerarRelatorioImoveisComLeiturasAction"); GerarRelatorioImoveisComLeiturasActionForm form = (GerarRelatorioImoveisComLeiturasActionForm) actionForm; FiltrarRelatorioImoveisComLeiturasHelper filtro = new FiltrarRelatorioImoveisComLeiturasHelper(); ArrayList<String> filtrosUtilizados = new ArrayList<String>(); // M�s/Ano de Refer�ncia if(Util.verificarNaoVazio(form.getMesAnoReferencia())){ filtro.setMesAnoReferencia(Util.formatarMesAnoComBarraParaAnoMes(form.getMesAnoReferencia()).toString()); filtrosUtilizados.add("M�s/Ano de Refer�ncia"); } else { throw new ActionServletException("atencao.anomesreferencia.obrigatorio", null, Util.formatarAnoMesParaMesAno(form.getMesAnoReferencia())); } // Grupo Faturamento if(Util.verificarIdNaoVazio(form.getGrupoFaturamento())){ filtro.setGrupoFaturamento(Integer.parseInt(form.getGrupoFaturamento())); filtrosUtilizados.add("Grupo de Faturamento"); } else { throw new ActionServletException("atencao.grupofaturamento.obrigatorio"); } // Empresa if(Util.verificarIdNaoVazio(form.getEmpresa())){ filtro.setEmpresa(Integer.parseInt(form.getEmpresa())); filtrosUtilizados.add("Empresa"); } // Leiturista if(Util.verificarIdNaoVazio(form.getLeiturista())){ filtro.setLeiturista(Integer.parseInt(form.getLeiturista())); filtrosUtilizados.add("Leiturista"); } // Localidade Inicial if(Util.verificarIdNaoVazio(form.getLocalidadeInicial())){ filtro.setLocalidadeInicial(Integer.parseInt(form.getLocalidadeInicial())); filtrosUtilizados.add("Localidade"); } // Setor Comercial Inicial if(Util.verificarIdNaoVazio(form.getSetorComercialInicial())){ filtro.setSetorComercialInicial(Integer.parseInt(form.getSetorComercialInicial())); filtrosUtilizados.add("Setor Comercial"); } // Rota Inicial if(Util.verificarIdNaoVazio(form.getRotaInicial())){ filtro.setRotaInicial(Integer.parseInt(form.getRotaInicial())); filtrosUtilizados.add("Rota"); } // Localidade Final if(Util.verificarIdNaoVazio(form.getLocalidadeFinal())){ filtro.setLocalidadeFinal(Integer.parseInt(form.getLocalidadeFinal())); if(!filtrosUtilizados.contains("Localidade")){ filtrosUtilizados.add("Localidade"); } } // Setor Comercial Final if(Util.verificarIdNaoVazio(form.getSetorComercialFinal())){ filtro.setSetorComercialFinal(Integer.parseInt(form.getSetorComercialFinal())); if(!filtrosUtilizados.contains("Setor Comercial")){ filtrosUtilizados.add("Setor Comercial"); } } // Rota Final if(Util.verificarIdNaoVazio(form.getRotaFinal())){ filtro.setRotaFinal(Integer.parseInt(form.getRotaFinal())); if(!filtrosUtilizados.contains("Rota")){ filtrosUtilizados.add("Rota"); } } int opcaoTipoRelatorio = Integer.parseInt(httpServletRequest.getParameter("opcaoTipoRelatorio")); if (Util.verificarIdNaoVazio(String.valueOf(opcaoTipoRelatorio))) { String constanteRelatorio = ""; String opcaoTipoRelatorioNome = ""; int parametroPersistirRelatorio = 0; switch (opcaoTipoRelatorio) { case 1: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_1; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_QUANTITATIVOS; opcaoTipoRelatorioNome = "Quantitativo de Im�veis com Leituras Atrav�s da WEB"; break; case 2: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_2; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_QUANTITATIVOS; opcaoTipoRelatorioNome = "Quantitativo de Im�veis sem Leituras Atrav�s da ISC e WEB"; break; case 3: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_3; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_QUANTITATIVOS; opcaoTipoRelatorioNome = "Quantitativo de im�veis que est�o na rota mas n�o foram recebidos atrav�s da ISC"; break; case 4: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_4; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_RELACAO; opcaoTipoRelatorioNome = "Rela��o de im�veis com leituras n�o recebidas atrav�s da ISC"; break; case 5: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_5; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_RELACAO; opcaoTipoRelatorioNome = "Rela��o de im�veis n�o medidos que n�o est�o na rota de ISC"; break; case 6: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_6; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_RELACAO; opcaoTipoRelatorioNome = "Rela��o de im�veis medidos que n�o est�o na rota de ISC"; break; case 7: parametroPersistirRelatorio = Relatorio.GERAR_RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_7; constanteRelatorio = ConstantesRelatorios.RELATORIO_IMOVEIS_COM_LEITURAS_TIPO_7; opcaoTipoRelatorioNome = "Quantitativo de im�veis com leituras enviado e recebidos"; break; default: throw new ActionServletException("CONSTANTE DE RELATORIO INVALIDA [UC1180]"); } RelatorioImoveisComLeituras relatorio = new RelatorioImoveisComLeituras(this.getUsuarioLogado(httpServletRequest), constanteRelatorio); relatorio.addParametro("opcaoTipoRelatorio", opcaoTipoRelatorio); relatorio.addParametro("parametroPersistirRelatorio", parametroPersistirRelatorio); relatorio.addParametro("filtro", filtro); relatorio.addParametro("filtrosUtilizados", this.parseFiltrosUtilizados(filtrosUtilizados)); relatorio.addParametro("opcaoTipoRelatorioNome", opcaoTipoRelatorioNome); try { retorno = processarExibicaoRelatorio(relatorio, TarefaRelatorio.TIPO_PDF, httpServletRequest, httpServletResponse, actionMapping); } catch (RelatorioVazioException e) { // manda o erro para a p�gina no request atual reportarErros(httpServletRequest, "atencao.relatorio.vazio"); // seta o mapeamento de retorno para a tela de aten��o de popup retorno = actionMapping.findForward("telaAtencaoPopup"); } } else { throw new ActionServletException("atencao.tipo_relatorio_nao_informado"); } return retorno; } private String parseFiltrosUtilizados(ArrayList<String> filtrosUtilizados) { String filtros = ""; Iterator it = filtrosUtilizados.iterator(); while (it.hasNext()) { filtros += (String) it.next(); if(it.hasNext()){ filtros += ", "; } } return filtros; } }