Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico um software livre; voc pode redistribui-lo e/ou modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como publicada pela Fundao do Software Livre (FSF); na verso 2.1 da Licena. Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em portugus para maiores detalhes. Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do projeto no endereco https://github.com/herculeshssj/orcamento ou escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informaes sobre o programa Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguau, RJ, Brasil. ***/ package br.com.hslife.orcamento.service; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import br.com.hslife.orcamento.entity.Conta; import br.com.hslife.orcamento.entity.LancamentoConta; import br.com.hslife.orcamento.entity.Moeda; import br.com.hslife.orcamento.entity.RelatorioColuna; import br.com.hslife.orcamento.entity.RelatorioCustomizado; import br.com.hslife.orcamento.entity.RelatorioParametro; import br.com.hslife.orcamento.entity.Usuario; import br.com.hslife.orcamento.enumeration.TipoDado; import br.com.hslife.orcamento.exception.ApplicationException; import br.com.hslife.orcamento.facade.IConta; import br.com.hslife.orcamento.facade.ILancamentoConta; import br.com.hslife.orcamento.facade.IMoeda; import br.com.hslife.orcamento.facade.IRelatorioCustomizado; import br.com.hslife.orcamento.facade.IUsuario; import br.com.hslife.orcamento.util.EntityInitializerFactory; public class RelatorioCustomizadoServiceTest extends AbstractTestServices { @Autowired private IUsuario usuarioService; @Autowired private IConta contaService; @Autowired private IMoeda moedaService; @Autowired private ILancamentoConta lancamentoContaService; @Autowired private IRelatorioCustomizado relatorioCustomizadoService; private RelatorioCustomizado relatorio; private Usuario usuario; @Before public void initializeTestEnvironment() throws ApplicationException { usuario = EntityInitializerFactory.createUsuario(); usuarioService.cadastrar(usuario); relatorio = EntityInitializerFactory.createRelatorioCustomizado(usuario); } @Test public void testCadastrar() throws ApplicationException { relatorioCustomizadoService.cadastrar(relatorio); assertNotNull(relatorio.getId()); } @Test public void testAlterar() throws ApplicationException { relatorioCustomizadoService.cadastrar(relatorio); relatorio.setNome("Relatrio de teste alterado"); relatorio.setDescricao("Relatrio customizado para testes alterado"); relatorio.setConsultaSQL("SELECT * FROM lancamentoconta ORDER BY datapagamento DESC"); int i = 0; for (RelatorioColuna coluna : relatorio.getColunasRelatorio()) { coluna.setFormatar(true); coluna.setMascaraFormatacao("99/99/9999"); coluna.setNomeColuna("colunaalterada" + i); coluna.setTextoExibicao("Coluna Alterada " + i); coluna.setTipoDado(TipoDado.DATE); i++; } i = 0; for (RelatorioParametro parametro : relatorio.getParametrosRelatorio()) { parametro.setNomeParametro("parametroalterada" + i); parametro.setTextoExibicao("Parmetro alterado " + i); parametro.setTipoDado(TipoDado.DATE); i++; } // Testa o mtodo em questo relatorioCustomizadoService.alterar(relatorio); RelatorioCustomizado relatorioTest = relatorioCustomizadoService.buscarPorID(relatorio.getId()); assertEquals(relatorio.getNome(), relatorioTest.getNome()); assertEquals(relatorio.getDescricao(), relatorioTest.getDescricao()); assertEquals(relatorio.getConsultaSQL(), relatorioTest.getConsultaSQL()); i = 0; for (RelatorioColuna coluna : relatorio.getColunasRelatorio()) { if (relatorioTest.getColunasRelatorio().contains(coluna)) { for (Iterator<RelatorioColuna> iterator = relatorioTest.getColunasRelatorio().iterator(); iterator .hasNext();) { RelatorioColuna colunaTest = iterator.next(); if (colunaTest.equals(coluna)) { assertTrue(colunaTest.isFormatar()); assertEquals(coluna.getMascaraFormatacao(), colunaTest.getMascaraFormatacao()); assertEquals(coluna.getNomeColuna(), colunaTest.getNomeColuna()); assertEquals(coluna.getTextoExibicao(), colunaTest.getTextoExibicao()); assertEquals(coluna.getTipoDado(), colunaTest.getTipoDado()); } } } else { fail("Coluna no encontrada!"); } i++; } assertEquals(3, i); i = 0; for (RelatorioParametro parametro : relatorio.getParametrosRelatorio()) { if (relatorioTest.getParametrosRelatorio().contains(parametro)) { for (Iterator<RelatorioParametro> iterator = relatorioTest.getParametrosRelatorio() .iterator(); iterator.hasNext();) { RelatorioParametro parametroTest = iterator.next(); if (parametroTest.equals(parametro)) { assertEquals(parametro.getNomeParametro(), parametroTest.getNomeParametro()); assertEquals(parametro.getTextoExibicao(), parametroTest.getTextoExibicao()); assertEquals(parametro.getTipoDado(), parametroTest.getTipoDado()); } } } else { fail("Parmetro no encontrado!"); } i++; } assertEquals(3, i); } @Test public void testExcluir() throws ApplicationException { relatorioCustomizadoService.cadastrar(relatorio); // Testa o mtodo em questo relatorioCustomizadoService.excluir(relatorio); RelatorioCustomizado relatorioTest = relatorioCustomizadoService.buscarPorID(relatorio.getId()); assertNull(relatorioTest); } @Test public void testBuscarPorID() throws ApplicationException { relatorioCustomizadoService.cadastrar(relatorio); // Testa o mtodo em questo RelatorioCustomizado relatorioTest = relatorioCustomizadoService.buscarPorID(relatorio.getId()); assertEquals(relatorio.getId(), relatorioTest.getId()); } @Test public void testValidar() throws ApplicationException { // Verifica se a entidade est consistente para ser persistida relatorioCustomizadoService.validar(relatorio); relatorioCustomizadoService.cadastrar(relatorio); RelatorioCustomizado relatorioTest = EntityInitializerFactory .createRelatorioCustomizado(relatorio.getUsuario()); relatorioCustomizadoService.validar(relatorioTest); } @Test public void testBuscarNome() throws ApplicationException { relatorioCustomizadoService.cadastrar(relatorio); List<RelatorioCustomizado> listaRelatorios = relatorioCustomizadoService.buscarNomePorUsuario("teste", relatorio.getUsuario()); if (listaRelatorios == null || listaRelatorios.isEmpty()) { fail("Lista vazia."); } else { if (!listaRelatorios.contains(relatorio)) { fail("Objeto no encontrado."); } } } @Test public void testProcessarRelatorioCustomizado() throws ApplicationException { // Instancia as colunas SortedSet<RelatorioColuna> colunas = new TreeSet<>(); // Nome da conta RelatorioColuna coluna = new RelatorioColuna(); coluna.setNomeColuna("nomeConta"); coluna.setOrdem(1); coluna.setTextoExibicao("Conta"); coluna.setTipoDado(TipoDado.STRING); coluna.setFormatar(false); colunas.add(coluna); // tipo de lanamento coluna = new RelatorioColuna(); coluna.setNomeColuna("tipoLancamento"); coluna.setOrdem(2); coluna.setTextoExibicao("Tipo"); coluna.setTipoDado(TipoDado.STRING); coluna.setFormatar(false); colunas.add(coluna); // descrio do lanamento coluna = new RelatorioColuna(); coluna.setNomeColuna("descricao"); coluna.setOrdem(3); coluna.setTextoExibicao("Descrio"); coluna.setTipoDado(TipoDado.STRING); coluna.setFormatar(false); colunas.add(coluna); // Data de pagamento coluna = new RelatorioColuna(); coluna.setNomeColuna("dataPagamento"); coluna.setOrdem(4); coluna.setTextoExibicao("Pago em"); coluna.setTipoDado(TipoDado.STRING); coluna.setFormatar(false); colunas.add(coluna); // valor pago coluna = new RelatorioColuna(); coluna.setNomeColuna("valorPago"); coluna.setOrdem(5); coluna.setTextoExibicao("Valor"); coluna.setTipoDado(TipoDado.STRING); coluna.setFormatar(false); colunas.add(coluna); // Instancia os parmetros Set<RelatorioParametro> parametros = new LinkedHashSet<>(); RelatorioParametro parametro = new RelatorioParametro(); // Data inicial parametro.setNomeParametro("dataInicio"); parametro.setTextoExibicao("Data Inicial"); parametro.setTipoDado(TipoDado.DATE); parametros.add(parametro); // Data final parametro = new RelatorioParametro(); parametro.setNomeParametro("dataFim"); parametro.setTextoExibicao("Data Fim"); parametro.setTipoDado(TipoDado.DATE); parametros.add(parametro); relatorio = EntityInitializerFactory.createRelatorioCustomizado(usuario, "select c.descricao as nomeConta, l.tipoLancamento, l.descricao, l.dataPagamento, l.valorPago from lancamentoconta l inner join conta c on c.id = l.idConta where l.dataPagamento >= :dataInicio and l.dataPagamento <= :dataFim and c.idUsuario = " + usuario.getId(), colunas, parametros); relatorioCustomizadoService.cadastrar(relatorio); Moeda moeda = EntityInitializerFactory.createMoeda(usuario); moedaService.cadastrar(moeda); Conta conta = EntityInitializerFactory.createConta(usuario, moeda); contaService.cadastrar(conta); for (int i = 1; i <= 5; i++) { LancamentoConta lancamento = new LancamentoConta(); lancamento.setConta(conta); lancamento.setMoeda(moeda); lancamento.setDataPagamento(new Date()); lancamento.setDescricao("Lanamento de teste " + i); lancamento.setValorPago(i * 100); lancamentoContaService.cadastrar(lancamento); } // Seta os parmetros Map<String, Object> parameterValues = new HashMap<>(); parameterValues.put("dataInicio", new Date()); parameterValues.put("dataFim", new Date()); List<Map<String, Object>> resultado = relatorioCustomizadoService.processarRelatorioCustomizado(relatorio, parameterValues); //Itera as linhas for (Map<String, Object> linhas : resultado) { // Itera as colunas System.out.println("Nome da conta: " + linhas.get("nomeConta")); System.out.println("Tipo: " + linhas.get("tipoLancamento")); System.out.println("Descrio: " + linhas.get("descricao")); System.out.println("Pago em: " + linhas.get("dataPagamento")); System.out.println("Valor: " + linhas.get("valorPago")); System.out.println(); } } }