package gcom.gui.relatorio.micromedicao;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.gui.ActionServletException;
import gcom.gui.micromedicao.GerarRelatorioAnormalidadeLeituraPeriodoActionForm;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.micromedicao.FiltrarRelatorioAnormalidadeLeituraPeriodoHelper;
import gcom.relatorio.micromedicao.RelatorioAnormalidadeLeituraPeriodo;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesInterfaceGSAN;
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 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 GerarRelatorioAnormalidadeLeituraPeriodoAction extends
ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm = (GerarRelatorioAnormalidadeLeituraPeriodoActionForm) actionForm;
validarForm(relatorioForm);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
RelatorioAnormalidadeLeituraPeriodo relatorioAnormalidadeLeituraPeriodo = criarRelatorioBeanParametros(
relatorioForm, httpServletRequest,tipoRelatorio);
return processarExibicaoRelatorio(relatorioAnormalidadeLeituraPeriodo,
tipoRelatorio, httpServletRequest, httpServletResponse,actionMapping);
}
/**
* Esse m�todo faz todas as valida��es necess�rias antes de gerar o relat�rio.
*
*@since 30/10/2009
*@author Marlon Patrick
*/
private void validarForm(GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm) {
if ( Util.verificarNaoVazio(relatorioForm.getIdLocalidadeInicial())) {
validarLocalidade(relatorioForm);
}
if ( Util.verificarNaoVazio(relatorioForm.getCodigoSetorComercialInicial())) {
validarSetorComercial(relatorioForm);
}
if ( Util.verificarNaoVazio(relatorioForm.getCodigoRotaInicial())) {
validarRota(relatorioForm);
}
}
/**
* Esse m�todo cria o Bean do relatorio j� com os seus parametros.
*
*@since 30/10/2009
*@author Marlon Patrick
*/
private RelatorioAnormalidadeLeituraPeriodo criarRelatorioBeanParametros(
GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm,
HttpServletRequest httpServletRequest,String tipoRelatorio) {
RelatorioAnormalidadeLeituraPeriodo relatorio = new RelatorioAnormalidadeLeituraPeriodo(
(Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorio.addParametro("relatorioForm",relatorioForm);
relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
relatorio.addParametro("filtroRelatorio", criarFiltro(relatorioForm));
return relatorio;
}
/**
* Esse m�todo faz valida��es em cima dos campos
* de localidade inicial e final.
*
*@since 30/10/2009
*@author Marlon Patrick
*/
private void validarLocalidade(GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID,relatorioForm.getIdLocalidadeInicial()));
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO
,ConstantesSistema.INDICADOR_USO_ATIVO));
boolean isUnidadeNegocioInformado = false;
if(Util.isCampoComboboxInformado(relatorioForm.getIdUnidadeNegocio())){
isUnidadeNegocioInformado = true;
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.UNIDADE_NEGOCIO_ID,relatorioForm.getIdUnidadeNegocio()));
}
Collection<Localidade> colecaoLocalidade =
this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName());
if ( Util.isVazioOrNulo(colecaoLocalidade)) {
if(isUnidadeNegocioInformado){
throw new ActionServletException(
ConstantesInterfaceGSAN.ATENCAO_GSAN_CAMPO1_INEXISTENTE_NA_CAMPO2_INFORMADA,
ConstantesInterfaceGSAN.LABEL_GSAN_LOCALIDADE_INICIAL,ConstantesInterfaceGSAN.LABEL_GSAN_UNIDADE_NEGOCIO);
}
throw new ActionServletException(
ConstantesInterfaceGSAN.ATENCAO_PESQUISA_INEXISTENTE,ConstantesInterfaceGSAN.LABEL_GSAN_LOCALIDADE_INICIAL);
}
if( !relatorioForm.getIdLocalidadeInicial().equals(relatorioForm.getIdLocalidadeFinal())){
filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID,relatorioForm.getIdLocalidadeFinal()));
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO
,ConstantesSistema.INDICADOR_USO_ATIVO));
isUnidadeNegocioInformado = false;
if(Util.isCampoComboboxInformado(relatorioForm.getIdUnidadeNegocio())){
isUnidadeNegocioInformado = true;
filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.UNIDADE_NEGOCIO_ID,relatorioForm.getIdUnidadeNegocio()));
}
colecaoLocalidade = this.getFachada().pesquisar(filtroLocalidade, Localidade.class.getName());
if ( Util.isVazioOrNulo(colecaoLocalidade)) {
if(isUnidadeNegocioInformado){
throw new ActionServletException(
ConstantesInterfaceGSAN.ATENCAO_GSAN_CAMPO1_INEXISTENTE_NA_CAMPO2_INFORMADA,
ConstantesInterfaceGSAN.LABEL_GSAN_LOCALIDADE_FINAL,ConstantesInterfaceGSAN.LABEL_GSAN_UNIDADE_NEGOCIO);
}
throw new ActionServletException(
ConstantesInterfaceGSAN.ATENCAO_PESQUISA_INEXISTENTE,ConstantesInterfaceGSAN.LABEL_GSAN_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(GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,relatorioForm.getCodigoSetorComercialInicial()));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.LOCALIDADE_ID, relatorioForm.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(
ConstantesInterfaceGSAN.ATENCAO_GSAN_CAMPO1_INEXISTENTE_NA_CAMPO2_INFORMADA,
ConstantesInterfaceGSAN.LABEL_GSAN_SETOR_COMERCIAL_INICIAL,ConstantesInterfaceGSAN.LABEL_GSAN_LOCALIDADE_INICIAL);
}
if( !relatorioForm.getCodigoSetorComercialInicial().equals(relatorioForm.getCodigoSetorComercialFinal())){
filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,relatorioForm.getCodigoSetorComercialFinal()));
filtroSetorComercial.adicionarParametro(
new ParametroSimples(FiltroSetorComercial.LOCALIDADE_ID, relatorioForm.getIdLocalidadeFinal()));
colecaoSetorComercial =
this.getFachada().pesquisar(filtroSetorComercial, SetorComercial.class.getName());
if ( Util.isVazioOrNulo(colecaoSetorComercial)) {
throw new ActionServletException(
ConstantesInterfaceGSAN.ATENCAO_GSAN_CAMPO1_INEXISTENTE_NA_CAMPO2_INFORMADA,
ConstantesInterfaceGSAN.LABEL_GSAN_SETOR_COMERCIAL_FINAL,ConstantesInterfaceGSAN.LABEL_GSAN_LOCALIDADE_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(GerarRelatorioAnormalidadeLeituraPeriodoActionForm 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");
}
}
}
/**
* Este m�todo cria e configura o filtro necess�rio a gera��o do relat�rio.
*
*
*@since 25/08/2009
*@author Marlon Patrick
*/
private FiltrarRelatorioAnormalidadeLeituraPeriodoHelper criarFiltro(
GerarRelatorioAnormalidadeLeituraPeriodoActionForm relatorioForm) {
FiltrarRelatorioAnormalidadeLeituraPeriodoHelper filtro =
new FiltrarRelatorioAnormalidadeLeituraPeriodoHelper();
filtro.setAnoMesReferenciaInicial(new Integer(
Util.formatarMesAnoParaAnoMesSemBarra(relatorioForm.getMesAnoReferenciaInicial())));
filtro.setAnoMesReferenciaFinal(new Integer(
Util.formatarMesAnoParaAnoMesSemBarra(relatorioForm.getMesAnoReferenciaFinal())));
Integer diferencaMeses = Util.getDiferencaMeses(relatorioForm.getMesAnoReferenciaInicial(), relatorioForm.getMesAnoReferenciaFinal());
diferencaMeses++;
filtro.setQuantidadeMeses(diferencaMeses);
filtro.setAnormalidadeLeitura(new Integer(relatorioForm.getIdAnormalidadeLeitura()));
if (Util.isCampoComboboxInformado(relatorioForm.getIdGrupoFaturamento())) {
filtro.setGrupoFaturamento(new Integer(relatorioForm.getIdGrupoFaturamento()));
}
if (Util.isCampoComboboxInformado(relatorioForm.getIdUnidadeNegocio())) {
filtro.setUnidadeNegocio(new Integer(relatorioForm.getIdUnidadeNegocio()));
}
if (Util.verificarNaoVazio(relatorioForm.getIdLocalidadeInicial())) {
filtro.setLocalidadeInicial(new Integer(relatorioForm.getIdLocalidadeInicial()));
filtro.setLocalidadeFinal(new Integer(relatorioForm.getIdLocalidadeFinal()));
}
if (Util.verificarNaoVazio(relatorioForm.getCodigoSetorComercialInicial())) {
filtro.setSetorComercialInicial(new Integer(relatorioForm.getCodigoSetorComercialInicial()));
filtro.setSetorComercialFinal(new Integer(relatorioForm.getCodigoSetorComercialFinal()));
}
if (Util.verificarNaoVazio(relatorioForm.getCodigoRotaInicial())) {
filtro.setRotaInicial(new Integer(relatorioForm.getCodigoRotaInicial()));
filtro.setRotaFinal(new Integer(relatorioForm.getCodigoRotaFinal()));
}
if (Util.verificarNaoVazio(relatorioForm.getSequencialRotaInicial())) {
filtro.setSequencialRotaInicial(new Integer(relatorioForm.getSequencialRotaInicial()));
filtro.setSequencialRotaFinal(new Integer(relatorioForm.getSequencialRotaFinal()));
}
return filtro;
}
}