package gcom.relatorio.micromedicao;
import gcom.batch.Relatorio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.micromedicao.leitura.FiltroLeituraAnormalidade;
import gcom.micromedicao.leitura.LeituraAnormalidade;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesInterfaceGSAN;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* classe respons�vel por criar o relat�rio de bairro manter de �gua
*
* @author S�vio Luiz
* @created 11 de Julho de 2005
*/
public class RelatorioAnormalidadeLeituraPeriodo extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAnormalidadeLeituraPeriodo(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_ANORMALIDADE_LEITURA_PERIODO);
}
@Deprecated
public RelatorioAnormalidadeLeituraPeriodo() {
super(null, "");
}
public Object executar() throws TarefaException {
List<RelatorioAnormalidadeLeituraPeriodoBean> relatorioBeans = executarConsultaRelatoriosBean();
if(Util.isVazioOrNulo(relatorioBeans)){
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_PESQUISA_NENHUM_RESULTADO);
}
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
byte[] retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_ANORMALIDADE_LEITURA_PERIODO,
criarParametros() , ds, tipoFormatoRelatorio);
try {
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_ANORMALIDADE_LEITURA_PERIODO,this.getIdFuncionalidadeIniciada());
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException(ConstantesInterfaceGSAN.ERRO_GSAN_ERRO_GRAVAR_RELATORIO_SISTEMA, e);
}
return retorno;
}
/**
* O m�todo cria os parametros necess�rios a gera��o do relatorio.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private Map<String, Object> criarParametros() {
FiltrarRelatorioAnormalidadeLeituraPeriodoHelper filtro = (FiltrarRelatorioAnormalidadeLeituraPeriodoHelper) getParametro("filtroRelatorio");
FiltroLeituraAnormalidade filtroConsumoAnormalidade = new FiltroLeituraAnormalidade();
filtroConsumoAnormalidade.adicionarParametro(new ParametroSimples(FiltroLeituraAnormalidade.ID,
filtro.getAnormalidadeLeitura()));
filtroConsumoAnormalidade.adicionarParametro(new ParametroSimples(FiltroLeituraAnormalidade.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<LeituraAnormalidade> colecaoAnormalidadeleitura = Fachada.getInstancia().pesquisar(filtroConsumoAnormalidade, LeituraAnormalidade.class.getName());
LeituraAnormalidade anormalidade = colecaoAnormalidadeleitura.iterator().next();
Map<String,Object> parametros = new HashMap<String,Object>();
parametros.put("imagem", Fachada.getInstancia().pesquisarParametrosDoSistema().getImagemRelatorio());
parametros.put("filtroPeriodoLeitura", Util.formatarAnoMesParaMesAno(filtro.getAnoMesReferenciaInicial()) + " - " + Util.formatarAnoMesParaMesAno(filtro.getAnoMesReferenciaFinal()));
parametros.put("filtroAnormalidade", anormalidade.getId() + " - " + anormalidade.getDescricao());
return parametros;
}
/**
* Esse m�todo tem a l�gica para realizar a consulta referente ao relatorio
* e a partir do resultado obtido criar os beans.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private List<RelatorioAnormalidadeLeituraPeriodoBean> executarConsultaRelatoriosBean() {
FiltrarRelatorioAnormalidadeLeituraPeriodoHelper filtro = (FiltrarRelatorioAnormalidadeLeituraPeriodoHelper) getParametro("filtroRelatorio");
return (List<RelatorioAnormalidadeLeituraPeriodoBean>)Fachada.getInstancia().pesquisarRelatorioAnormalidadeLeituraPeriodo(filtro);
}
@Override
public int calcularTotalRegistrosRelatorio() {
Collection<Object[]> colecaoDados = Fachada.getInstancia().pesquisarTotalRegistrosRelatorioAnormalidadeLeituraPeriodo(
(FiltrarRelatorioAnormalidadeLeituraPeriodoHelper) getParametro("filtroRelatorio"));
if(Util.isVazioOrNulo(colecaoDados)){
throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_PESQUISA_NENHUM_RESULTADO);
}
return colecaoDados.size();
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioAnormalidadeLeituraPeriodo", this);
}
}