package gcom.relatorio.transacao; import gcom.batch.Relatorio; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.relatorio.ConstantesRelatorios; import gcom.relatorio.RelatorioDataSource; import gcom.relatorio.RelatorioVazioException; import gcom.seguranca.acesso.FiltroOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoEfetuada; import gcom.seguranca.acesso.usuario.FiltroUsuarioAlteracao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAlteracao; import gcom.seguranca.transacao.FiltroTabelaLinhaColunaAlteracao; import gcom.seguranca.transacao.TabelaLinhaColunaAlteracao; import gcom.tarefa.TarefaException; import gcom.tarefa.TarefaRelatorio; import gcom.util.ControladorException; import gcom.util.Util; import gcom.util.agendadortarefas.AgendadorTarefas; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.StringTokenizer; /** * classe respons�vel por criar o relat�rio de opera��o consultar * * @author Rafael Corr�a * @created 06/04/2006 */ public class RelatorioConsultarOperacao extends TarefaRelatorio { private static final long serialVersionUID = 1L; /** * Construtor da classe RelatorioAnaliseFisicoQuimicaAgua */ public RelatorioConsultarOperacao(Usuario usuario) { super(usuario,ConstantesRelatorios.RELATORIO_OPERACAO_CONSULTAR); } @Deprecated public RelatorioConsultarOperacao() { super(null, ""); } /** * < <Descri��o do m�todo>> * * @param bairros * Description of the Parameter * @param bairroParametros * Description of the Parameter * @return Descri��o do retorno * @exception RelatorioVazioException * Descri��o da exce��o */ @SuppressWarnings("unchecked") public Object executar() throws TarefaException { // ------------------------------------ Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada(); // ------------------------------------ String[] idOperacoes = (String[]) getParametro("idOperacoes"); Usuario usuario = (Usuario) getParametro("usuario"); UsuarioAcao usuarioAcao = (UsuarioAcao) getParametro("usuarioAcao"); Date periodoRealizacaoInicial = (Date) getParametro("periodoRealizacaoInicial"); Date periodoRealizacaoFinal = (Date) getParametro("periodoRealizacaoFinal"); Date horarioRealizacaoInicial = (Date) getParametro("horarioRealizacaoInicial"); Date horarioRealizacaoFinal = (Date) getParametro("horarioRealizacaoFinal"); Integer id1 = (Integer) getParametro("id1"); int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio"); String tipoRelatorio = (String) getParametro("tipoRelatorio"); String unidadeNegocio = (String) getParametro("unidadeNegocio"); Integer idFuncionalidade = (Integer) getParametro("idFuncionalidade"); Hashtable<String, String> argumentos = (Hashtable<String, String>) getParametro("argumentos"); // valor de retorno byte[] retorno = null; // Instacia a fachada Fachada fachada = Fachada.getInstancia(); Collection colecaoOperacoesEfetuadas = null; colecaoOperacoesEfetuadas = fachada.pesquisarUsuarioAlteracaoDasOperacoesEfetuadasHqlRelatorio( usuarioAcao.getId() , idOperacoes , usuario.getLogin(), periodoRealizacaoInicial , periodoRealizacaoFinal , horarioRealizacaoInicial , horarioRealizacaoFinal , argumentos , id1 , unidadeNegocio ); // cole��o de beans do relat�rio List relatorioBeans = new ArrayList(); RelatorioConsultarOperacaoBean relatorioBean = null; // se a cole��o de par�metros da analise n�o for vazia if (colecaoOperacoesEfetuadas != null && !colecaoOperacoesEfetuadas.isEmpty()) { // coloca a cole��o de par�metros da analise no iterator Iterator colecaoOperacoesEfetuadasIterator = colecaoOperacoesEfetuadas .iterator(); // la�o para criar a cole��o de par�metros da analise while (colecaoOperacoesEfetuadasIterator.hasNext()) { OperacaoEfetuada operacaoEfetuada = (OperacaoEfetuada) colecaoOperacoesEfetuadasIterator.next(); FiltroUsuarioAlteracao filtroUsuarioAlteracao = new FiltroUsuarioAlteracao(); filtroUsuarioAlteracao.adicionarParametro(new ParametroSimples( FiltroUsuarioAlteracao.OPERACAO_EFETUADA_ID , operacaoEfetuada.getId())); filtroUsuarioAlteracao.adicionarCaminhoParaCarregamentoEntidade("usuario"); Collection colecaoUsuarioAlteracao = fachada.pesquisar( filtroUsuarioAlteracao , UsuarioAlteracao.class.getName()); String nomeUsuario = ""; String ipUsuario = ""; if ( colecaoUsuarioAlteracao != null && !colecaoUsuarioAlteracao.isEmpty()) { UsuarioAlteracao usuarioAlteracao = (UsuarioAlteracao) colecaoUsuarioAlteracao.iterator().next(); nomeUsuario = usuarioAlteracao.getUsuario().getNomeUsuario(); ipUsuario = usuarioAlteracao.getIpAlteracao(); } FiltroTabelaLinhaColunaAlteracao filtroTabelaLinhaColunaAlteracao = new FiltroTabelaLinhaColunaAlteracao(); filtroTabelaLinhaColunaAlteracao.adicionarCaminhoParaCarregamentoEntidade(FiltroTabelaLinhaColunaAlteracao.TABELA_COLUNA); filtroTabelaLinhaColunaAlteracao.adicionarParametro(new ParametroSimples(FiltroTabelaLinhaColunaAlteracao.OPERACAO_EFETUADA_ID, operacaoEfetuada.getId())); Collection<TabelaLinhaColunaAlteracao> colecaoTabelaLinhaColunaAlteracao = (Collection<TabelaLinhaColunaAlteracao>) fachada.pesquisar(filtroTabelaLinhaColunaAlteracao, TabelaLinhaColunaAlteracao.class.getName()); for ( TabelaLinhaColunaAlteracao tabelaLinhaColunaAlteracao : colecaoTabelaLinhaColunaAlteracao ) { relatorioBean = new RelatorioConsultarOperacaoBean( // Data Realiza��o operacaoEfetuada.getUltimaAlteracao(), // Nome da operacao operacaoEfetuada.getOperacao().getDescricao(), // dados operacaoEfetuada.getArgumentoValor() + "", // outros dados consultarInformacoesExtrasOperacaoEfetuada(operacaoEfetuada), // Usu�rio nomeUsuario, // Id Opera��o Efetuada operacaoEfetuada.getId(), // Campo tabelaLinhaColunaAlteracao.getTabelaColuna().getDescricaoColuna(), // Conte�do Anterior tabelaLinhaColunaAlteracao.getConteudoColunaAnterior(), // Conte�do Atual tabelaLinhaColunaAlteracao.getConteudoColunaAtual(), // Data da Atualiza��o tabelaLinhaColunaAlteracao.getUltimaAlteracao(), ipUsuario ); // adiciona o bean a cole��o relatorioBeans.add(relatorioBean); } } } // __________________________________________________________________ // Par�metros do relat�rio Map parametros = new HashMap(); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); parametros.put("imagem", sistemaParametro.getImagemRelatorio()); if (tipoRelatorio != null) { parametros.put("tipoRelatorio", tipoRelatorio); } else { parametros.put("tipoRelatorio", ""); } // adiciona os par�metros do relat�rio // adiciona o laudo da an�lise Operacao operacao = null; if (idOperacoes != null && idOperacoes.length == 1){ FiltroOperacao filtro = new FiltroOperacao(); filtro.adicionarParametro(new ParametroSimples(FiltroOperacao.ID, idOperacoes[0])); Collection operacoes = Fachada.getInstancia().pesquisar(filtro, Operacao.class.getSimpleName()); operacao = (Operacao) Util.retonarObjetoDeColecao(operacoes); } if (operacao != null){ parametros.put("idOperacao", operacao.getId() == null? "": "" + operacao.getId()); parametros.put("nomeOperacao", operacao.getDescricao()); } else { parametros.put("idOperacao", ""); parametros.put("nomeOperacao", ""); } parametros.put("idUsuario", usuario.getId() == null ? "": "" + usuario.getId()); parametros.put("nomeUsuario", usuario.getNomeUsuario()); parametros.put("acaoUsuario", usuarioAcao.getDescricao()); if (periodoRealizacaoInicial != null && periodoRealizacaoFinal != null) { parametros.put("periodoRealizacao", "" + Util.formatarData(periodoRealizacaoInicial) + " a " + Util.formatarData(periodoRealizacaoFinal)); } else { parametros.put("periodoRealizacao", ""); } if (horarioRealizacaoInicial != null && horarioRealizacaoFinal != null) { parametros.put("horarioRealizacao", "" +Util.formatarHoraSemData(horarioRealizacaoInicial) + " a " + Util.formatarHoraSemData(horarioRealizacaoFinal)); } else { parametros.put("horarioRealizacao", ""); } if( idFuncionalidade != null ){ parametros.put( "idFuncionalidade" , "" +idFuncionalidade ); } else{ parametros.put( "idFuncionalidade" , "" ); } if( unidadeNegocio != null ){ parametros.put( "unidadeNegocio" , unidadeNegocio ); } else{ parametros.put( "unidadeNegocio" , "" ); } // cria uma inst�ncia do dataSource do relat�rio RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); retorno = gerarRelatorio( ConstantesRelatorios.RELATORIO_OPERACAO_EFETUADA , parametros, ds, tipoFormatoRelatorio ); // ------------------------------------ // Grava o relat�rio no sistema try { persistirRelatorioConcluido( retorno , Relatorio.CONSULTAR_OPERACAO , idFuncionalidadeIniciada ); } catch (ControladorException e) { e.printStackTrace(); throw new TarefaException("Erro ao gravar relat�rio no sistema", e); } // ------------------------------------ // retorna o relat�rio gerado return retorno; } @Override public int calcularTotalRegistrosRelatorio() { return 0; } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioConsultarOperacao", this); } private String consultarInformacoesExtrasOperacaoEfetuada(OperacaoEfetuada operacaoEfetuada){ String dadosFormatados = ""; String dadosAdicionais = operacaoEfetuada.getDadosAdicionais(); if (dadosAdicionais != null){ StringTokenizer stk = new StringTokenizer(dadosAdicionais,"$"); while (stk.hasMoreElements()) { String element = (String) stk.nextElement(); int ind = element.indexOf(":"); if (ind != -1){ String label = element.substring(0,ind); String valor = element.substring(ind+1, element.length()); dadosFormatados += label + "="+valor + ";"; } } } return dadosFormatados; } }