package gcom.relatorio.cadastro;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
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.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* [UC1174] Gerar Relat�rio Imoveis Com Doacoes.
*
* @author Erivan Sousa
* @date 13/06/2011, 16/06/2011
*/
public class RelatorioImoveisDoacoesEntidade extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioImoveisDoacoesEntidade(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_IMOVEIS_DOACOES_ENTIDADE);
}
@Deprecated
public RelatorioImoveisDoacoesEntidade() {
super(null, "");
}
/**
* M�todo que executa a tarefa
*
* @return Object
*
*/
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
Fachada fachada = Fachada.getInstancia();
String filtroPeriodoAdesaoInicial = (String) getParametro("filtroPeriodoAdesaoInicial");
String filtroPeriodoAdesaoFinal = (String) getParametro("filtroPeriodoAdesaoFinal");
String filtroPeriodoCancelamentoInicial = (String) getParametro("filtroPeriodoCancelamentoInicial");
String filtroPeriodoCancelamentoFinal = (String) getParametro("filtroPeriodoCancelamentoFinal");
String filtroRefInicioDoacaoInicial = (String) getParametro("filtroRefInicioDoacaoInicial");
String filtroRefInicioDoacaoFinal = (String) getParametro("filtroRefInicioDoacaoFinal");
String filtroRefFimDoacaoInicial = (String) getParametro("filtroRefFimDoacaoInicial");
String filtroRefFimDoacaoFinal= (String) getParametro("filtroRefFimDoacaoFinal");
// String filtroUsuarioAdesao = (String)getParametro("filtroUsuarioAdesao");
// String filtroUsuarioCancelamento = (String)getParametro("filtroUsuarioCancelamento");
// Integer filtroEntidadeBeneficente = Integer.parseInt((String) getParametro("filtroEntidadeBeneficente"));
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Collection colecaoImoveisDoacoes = null;
colecaoImoveisDoacoes = pesquisarDoacoes();
RelatorioImoveisDoacoesEntidadeBean relatorioBean = null;
Iterator colec = colecaoImoveisDoacoes.iterator();
while(colec.hasNext()){
Object[] objetos = (Object[])colec.next();
relatorioBean = new RelatorioImoveisDoacoesEntidadeBean();
Integer matriculaImovel = (Integer)objetos[1];
relatorioBean.setEntidade((String)objetos[0]);
if( objetos[9] != null){
relatorioBean.setCliente((String)objetos[9]);
}else{
relatorioBean.setCliente("");
}
// Cliente clienteUsuario = fachada.pesquisarClienteUsuarioImovel(matriculaImovel);
// String nomeUsuario = "";
// if(clienteUsuario != null){
// nomeUsuario = clienteUsuario.getNome();
// }
// relatorioBean.setCliente(nomeUsuario);
relatorioBean.setImovel(Util.retornaMatriculaImovelFormatada(matriculaImovel));
if( objetos[2] != null){
relatorioBean.setDataAdesao(Util.formatarData((Date) objetos[2]));
}else{
relatorioBean.setDataAdesao(" ");
}
if( objetos[3] != null){
relatorioBean.setDataCancelamento(Util.formatarData((Date) objetos[3]));
}else{
relatorioBean.setDataCancelamento(" ");
}
relatorioBean.setUsuarioAdesao(((String)objetos[4]).toUpperCase());
if((String)objetos[5] != null && !((String)objetos[5]).equals("")){
relatorioBean.setUsuarioCancelamento(((String)objetos[5]).toUpperCase());
}else{
relatorioBean.setUsuarioCancelamento("");
}
if( objetos[6] != null){
relatorioBean.setMesAnoInicio(Util.formatarAnoMesParaMesAno((Integer)objetos[6]));
}else{
relatorioBean.setMesAnoInicio(" ");
}
if( objetos[7] != null){
relatorioBean.setMesAnoFinal(Util.formatarAnoMesParaMesAno((Integer)objetos[7]));
}else{
relatorioBean.setMesAnoFinal(" ");
}
relatorioBean.setValor((BigDecimal)objetos[8]);
relatorioBeans.add(relatorioBean);
}
// valor de retorno
byte[] retorno = null;
// Par�metros do relat�rio
Map<String, String> parametros = new HashMap();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
//Formata Per�odo de ades�o
String periodoAdesao = null;
if(filtroPeriodoAdesaoInicial != null && !filtroPeriodoAdesaoInicial.equals("")&&
filtroPeriodoAdesaoFinal != null && !filtroPeriodoAdesaoFinal.equals("")){
periodoAdesao = filtroPeriodoAdesaoInicial + " a " + filtroPeriodoAdesaoFinal;
}else{
periodoAdesao = " ";
}
parametros.put("filtroPeriodoAdesao", periodoAdesao);
//Formata o Per�odo de Cancelamento
String periodoCancelamento = null;
if(filtroPeriodoCancelamentoInicial != null && !filtroPeriodoCancelamentoInicial.equals("")&&
filtroPeriodoCancelamentoFinal != null && !filtroPeriodoCancelamentoFinal.equals("")){
periodoCancelamento = filtroPeriodoCancelamentoInicial + " a " + filtroPeriodoCancelamentoFinal;
}else{
periodoCancelamento = " ";
}
parametros.put("filtroPeriodoCancelamento", periodoCancelamento);
//Formata M�s Ano Inicio
String mesAnoInicio = null;
if(filtroRefInicioDoacaoInicial != null && !filtroRefInicioDoacaoInicial.equals("")&&
filtroRefInicioDoacaoFinal != null && !filtroRefInicioDoacaoFinal.equals("")){
mesAnoInicio = filtroRefInicioDoacaoInicial + " a " + filtroRefInicioDoacaoFinal;
}else{
mesAnoInicio = " ";
}
parametros.put("filtroMesAnoInicio", mesAnoInicio);
//Formata M�s Ano Final
String mesAnoFinal = null;
if(filtroRefFimDoacaoInicial != null && !filtroRefFimDoacaoInicial.equals("")&&
filtroRefFimDoacaoFinal != null && !filtroRefFimDoacaoFinal.equals("")){
mesAnoInicio = filtroRefFimDoacaoInicial + " a " + filtroRefFimDoacaoFinal;
}else{
mesAnoInicio = " ";
}
parametros.put("filtroMesAnoFinal", mesAnoFinal);
parametros.put("tipoRelatorio", "R1174");
RelatorioDataSource ds = new RelatorioDataSource((java.util.List) relatorioBeans );
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_IMOVEIS_DOACOES_ENTIDADE, parametros, ds,
tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_IMOVEIS_DOACOES_ENTIDADE,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
// retorna o relat�rio gerado
return retorno;
}
private Collection pesquisarDoacoes(){
Collection colecao = null;
colecao = Fachada.getInstancia().pesquisarImoveisDoacoes(montarFiltro());
return colecao;
}
@Override
public int calcularTotalRegistrosRelatorio() {
Integer retorno = new Integer(0);
retorno = Fachada.getInstancia().countImoveisDoacao(montarFiltro());
if(retorno.intValue() == 0 ){
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
return retorno;
}
private GerarRelatorioImoveisDoacoesHelper montarFiltro(){
String filtroPeriodoAdesaoInicial = (String) getParametro("filtroPeriodoAdesaoInicial");
String filtroPeriodoAdesaoFinal = (String) getParametro("filtroPeriodoAdesaoFinal");
String filtroPeriodoCancelamentoInicial = (String) getParametro("filtroPeriodoCancelamentoInicial");
String filtroPeriodoCancelamentoFinal = (String) getParametro("filtroPeriodoCancelamentoFinal");
String filtroRefInicioDoacaoInicial = (String) getParametro("filtroRefInicioDoacaoInicial");
String filtroRefInicioDoacaoFinal = (String) getParametro("filtroRefInicioDoacaoFinal");
String filtroRefFimDoacaoInicial = (String) getParametro("filtroRefFimDoacaoInicial");
String filtroRefFimDoacaoFinal= (String) getParametro("filtroRefFimDoacaoFinal");
String filtroUsuarioAdesao = (String)getParametro("filtroUsuarioAdesao");
String filtroUsuarioCancelamento = (String)getParametro("filtroUsuarioCancelamento");
Integer filtroEntidadeBeneficente = Integer.parseInt((String) getParametro("filtroEntidadeBeneficente"));
GerarRelatorioImoveisDoacoesHelper filtro = new GerarRelatorioImoveisDoacoesHelper();
filtro.setIdEntidade(filtroEntidadeBeneficente);
if(filtroPeriodoAdesaoInicial != null && !filtroPeriodoAdesaoInicial.equals("")){
filtro.setDataAdesaoInicio(Util.converteStringParaDate(filtroPeriodoAdesaoInicial));
}
if(filtroPeriodoAdesaoFinal != null && !filtroPeriodoAdesaoFinal.equals("")){
filtro.setDataAdesaoFinal(Util.converteStringParaDate(filtroPeriodoAdesaoFinal));
}
if(filtroPeriodoCancelamentoInicial != null && !filtroPeriodoCancelamentoInicial.equals("")){
filtro.setDataCancelamentoInicio(Util.converteStringParaDate(filtroPeriodoCancelamentoInicial));
}
if(filtroPeriodoCancelamentoFinal != null && !filtroPeriodoCancelamentoFinal.equals("")){
filtro.setDataCancelamentoFinal(Util.converteStringParaDate(filtroPeriodoCancelamentoFinal));
}
if(filtroUsuarioAdesao != null && !filtroUsuarioAdesao.equals("")){
filtro.setLoginUsuarioAdesao(filtroUsuarioAdesao);
}
if(filtroUsuarioCancelamento != null && !filtroUsuarioCancelamento.equals("")){
filtro.setLoginUsuarioCancelamento(filtroUsuarioCancelamento);
}
if(filtroRefFimDoacaoFinal != null && !filtroRefFimDoacaoFinal.equals("")){
filtro.setRefFimDoacaoFinal(Util.formatarMesAnoComBarraParaAnoMes(filtroRefFimDoacaoFinal));
}
if(filtroRefFimDoacaoInicial != null && !filtroRefFimDoacaoInicial.equals("")){
filtro.setRefFimDoacaoInicio(Util.formatarMesAnoComBarraParaAnoMes(filtroRefFimDoacaoInicial));
}
if(filtroRefInicioDoacaoInicial != null && !filtroRefInicioDoacaoInicial.equals("")){
filtro.setRefInicioDoacaoInicio(Util.formatarMesAnoComBarraParaAnoMes(filtroRefInicioDoacaoInicial));
}
if(filtroRefInicioDoacaoFinal != null && !filtroRefInicioDoacaoFinal.equals("")){
filtro.setRefInicioDoacaoFinal(Util.formatarMesAnoComBarraParaAnoMes(filtroRefInicioDoacaoFinal));
}
return filtro;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioImoveisDoacoes", this);
}
}