From 96d2ab0d6f7997103a5b4e014914c95054bba22c Mon Sep 17 00:00:00 2001 From: Douglas Breda Date: Thu, 2 Nov 2017 19:21:11 -0200 Subject: [PATCH] =?UTF-8?q?removendo=20logs=20da=20classe=20gerada=20a=20a?= =?UTF-8?q?justes=20para=20tratamento=20de=20exce=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/br/simulador/gerador/GeradorCodigo.java | 2 + .../GeradorDeclaracaoMetodoSimulador.java | 31 ++---- .../gerenciadores/GerenciadorFuncao.java | 1 + .../plugin/biblioteca/Experimentos.java | 98 +++++++++++-------- 4 files changed, 69 insertions(+), 63 deletions(-) diff --git a/src/br/simulador/gerador/GeradorCodigo.java b/src/br/simulador/gerador/GeradorCodigo.java index a0c55b9..a6165e7 100644 --- a/src/br/simulador/gerador/GeradorCodigo.java +++ b/src/br/simulador/gerador/GeradorCodigo.java @@ -5,6 +5,7 @@ */ package br.simulador.gerador; +import br.simulador.plugin.biblioteca.erro.ErroExecucaoSimulador; import br.univali.portugol.nucleo.SimuladorPrograma; import br.univali.portugol.nucleo.asa.ASAPrograma; import br.univali.portugol.nucleo.asa.ExcecaoVisitaASA; @@ -137,6 +138,7 @@ public void gera(ASAPrograma asa, PrintWriter saida, String nomeClasseJava, .geraImportacaoPara(ErroExecucaoBiblioteca.class) .geraImportacaoPara(InvocationTargetException.class) .geraImportacaoPara(List.class) + .geraImportacaoPara(ErroExecucaoSimulador.class) .geraImportacaoBibliotecasIncluidas() .geraNomeClasse(nomeClasseJava) .geraChaveAberturaClasse() diff --git a/src/br/simulador/gerador/GeradorDeclaracaoMetodoSimulador.java b/src/br/simulador/gerador/GeradorDeclaracaoMetodoSimulador.java index 1d41d47..8780de2 100644 --- a/src/br/simulador/gerador/GeradorDeclaracaoMetodoSimulador.java +++ b/src/br/simulador/gerador/GeradorDeclaracaoMetodoSimulador.java @@ -54,34 +54,22 @@ public void gera(NoDeclaracaoFuncao noFuncao, PrintWriter saida, VisitanteASA vi saida.append("}"); saida.println(); - + //Método de configurar que chama o início saida.append("@Override"); saida.println(); saida.append("public void configurar() throws ErroExecucao, InterruptedException{"); saida.println(); - saida.append("System.out.println(\"Vai chamar o método de simular\");"); saida.append("Experimentos.simular();"); saida.println(); - saida.append("System.out.println(\"Vai definir o programa atual\");"); saida.append("Experimentos.definir_programa_atual(this);"); saida.println(); - saida.append("System.out.println(\"Vai definir a lista de agentes\");"); saida.append("setListaAgentes(Experimentos.retornar_lista_agentes());"); - saida.append("if(listaAgentes == null)"); - saida.println(); - saida.append("System.out.println(\"A lista de agentes está nula\");"); - saida.println(); - saida.append("else"); - saida.println(); - saida.append("System.out.println(\"Número de agentes\" + listaAgentes.size());"); saida.println(); - saida.append("System.out.println(\"Vai iniciar\");"); saida.append("inicio();"); saida.append("Experimentos.atualizar_tela();"); saida.println(); saida.append("}"); - saida.append(identacao) .append("@Override"); @@ -108,7 +96,6 @@ public void gera(NoDeclaracaoFuncao noFuncao, PrintWriter saida, VisitanteASA vi if (metodoPrincipal) { saida.append(identacao) - .append("System.out.println(\"Executando método simular.\");") .append("Experimentos.definir_programa_execucao(true);") .append(identacao) .append(identacao) @@ -123,15 +110,11 @@ public void gera(NoDeclaracaoFuncao noFuncao, PrintWriter saida, VisitanteASA vi .append("{").append(identacao); saida.println(); - saida.append("System.out.println(\"Vai iniciar o laço.\");"); saida.append("int contador = 0;"); saida.append("setListaAgentes(Experimentos.retornar_lista_agentes());"); saida.append("for(Object agente : listaAgentes) {"); saida.println(); saida.append(identacao); - saida.append("System.out.println(\"Repetição: \" + ++contador);"); - saida.append("System.out.println(\"Está dentro do laço.\");"); - saida.append("System.out.println(\"Total de agentes: .\" + listaAgentes.size());"); saida.append("this.agenteAtual = agente;"); saida.append("Experimentos.definir_agente_atual(agente);"); } @@ -149,12 +132,12 @@ public void gera(NoDeclaracaoFuncao noFuncao, PrintWriter saida, VisitanteASA vi saida.println(); saida.append("} catch (ErroExecucaoBiblioteca ex) {\n") - .append("throw new ErroExecucaoSimulador(ex.getMensagem());") - .append("} catch (InterruptedException ex) {\n") - .append("throw new ErroExecucaoSimulador(ex.getMensagem());") - .append("} catch (ErroExecucao ex) {") - .append("throw new ErroExecucaoSimulador(ex.getMensagem());") - .append("}\n"); + .append("Experimentos.adicionar_erro( new ErroExecucaoSimulador(ex.getMensagem()));") + .append("} catch (InterruptedException ex) {\n") + .append("Experimentos.adicionar_erro(new ErroExecucaoSimulador(ex.getMessage()));") + .append("} catch (ErroExecucao ex) {") + .append("Experimentos.adicionar_erro(new ErroExecucaoSimulador(ex.getMensagem()));") + .append("}\n"); } saida.append(identacao).append("}").println(); // finaliza o escopo do método diff --git a/src/br/simulador/gerenciadores/GerenciadorFuncao.java b/src/br/simulador/gerenciadores/GerenciadorFuncao.java index 295c7c0..e3c8c1f 100644 --- a/src/br/simulador/gerenciadores/GerenciadorFuncao.java +++ b/src/br/simulador/gerenciadores/GerenciadorFuncao.java @@ -4,6 +4,7 @@ package br.simulador.gerenciadores; import br.simulador.gerador.GeradorCodigoJavaSimulador; +import br.simulador.plugin.biblioteca.Experimentos; import br.simulador.plugin.biblioteca.erro.ErroExecucaoSimulador; import br.univali.portugol.nucleo.ErroCompilacao; import br.univali.portugol.nucleo.SimuladorPrograma; diff --git a/src/br/simulador/plugin/biblioteca/Experimentos.java b/src/br/simulador/plugin/biblioteca/Experimentos.java index 4bc7aa8..f4b9d33 100644 --- a/src/br/simulador/plugin/biblioteca/Experimentos.java +++ b/src/br/simulador/plugin/biblioteca/Experimentos.java @@ -74,7 +74,8 @@ public void simular() throws ErroExecucaoBiblioteca, InterruptedException, ErroE descricao = "Permite a criação de variáveis para controle e uso durante a simulação.", parametros = { - @DocumentacaoParametro(nome = "nome_atributo", descricao = "Define a identificação do atributo."), + @DocumentacaoParametro(nome = "nome_atributo", descricao = "Define a identificação do atributo.") + , @DocumentacaoParametro(nome = "valor_padrao", descricao = "Define um valor padrão para atribuir ao atributo criado") }, retorno = "Sem retorno", @@ -123,7 +124,6 @@ public double media(String nome_atributo) throws ErroExecucaoBiblioteca, Interru // public void atualizarValorAtributo(String nome_atributo, String valor, int id_agente) throws ErroExecucaoBiblioteca, InterruptedException { // GerenciadorExecucao.getInstance().definirValorAtributoPorAgente(nome_atributo, valor, id_agente); // } - @DocumentacaoFuncao( descricao = "Atualiza o valor a um determinado atributo.", parametros @@ -138,7 +138,7 @@ public double media(String nome_atributo) throws ErroExecucaoBiblioteca, Interru @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void atualizar_valor_atributo(String nome_atributo, String valor) throws ErroExecucaoBiblioteca, ErroExecucaoBiblioteca, InterruptedException{ + public void atualizar_valor_atributo(String nome_atributo, String valor) throws ErroExecucaoBiblioteca, ErroExecucaoBiblioteca, InterruptedException { GerenciadorExecucao.getInstance().getAgenteAtual().atualizarValorAtributo(nome_atributo, valor); } @@ -524,7 +524,6 @@ public void criar_interruptor(String nome, String titulo, boolean valor_padrao) @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") }, retorno = "Número de agentes" - ) public int agentes_com_cor(int cor) throws ErroExecucaoBiblioteca, InterruptedException { int agentes_encontrados = GerenciadorExecucao.getInstance().agentesComCor(cor); @@ -600,7 +599,7 @@ public int retornar_cor_retalho() throws ErroExecucaoBiblioteca, InterruptedExce public int retornar_valor_max_bordaX() throws ErroExecucaoBiblioteca, InterruptedException { return GerenciadorInterface.getInstance().retornarValorMaxBordaX(); } - + @DocumentacaoFuncao( descricao = "Retorna qual é o limite máximo da coordenada X do retalho.", autores @@ -622,7 +621,7 @@ public int retornar_valor_min_bordaX() throws ErroExecucaoBiblioteca, Interrupte public int retornar_valor_max_bordaY() throws ErroExecucaoBiblioteca, InterruptedException { return GerenciadorInterface.getInstance().retornarValorMaxBordaY(); } - + @DocumentacaoFuncao( descricao = "Retorna qual é o limite máximo da coordenada Y do retalho.", autores @@ -647,7 +646,7 @@ public boolean colidiu_com_parede_X() throws ErroExecucaoBiblioteca, Interrupted int idRetalho = meu_retalho(); return GerenciadorInterface.getInstance().verificarRetalhoEhParedeX(idRetalho); } - + @DocumentacaoFuncao( descricao = "Retorna se o agente colidiu com uma parede superior ou inferior (Para auxiliar no tratamento de colisões)", autores @@ -672,7 +671,6 @@ public boolean colidiu_com_parede_Y() throws ErroExecucaoBiblioteca, Interrupted // public boolean colidiuBordaX() throws ErroExecucaoBiblioteca, InterruptedException { // return GerenciadorExecucao.getInstance().getAgenteAtual().colidiuBordaX(); // } - // @DocumentacaoFuncao( // descricao = "Retorna se o agente colidiu com alguma parede superior ou inferior", // autores = { @@ -682,7 +680,6 @@ public boolean colidiu_com_parede_Y() throws ErroExecucaoBiblioteca, Interrupted // public boolean colidiuBordaY() throws ErroExecucaoBiblioteca, InterruptedException { // return GerenciadorExecucao.getInstance().getAgenteAtual().colidiuBordaY(); // } - @DocumentacaoFuncao( descricao = "Retorna o id atual do retalho em que o agente está posicionado", autores = { @@ -810,17 +807,17 @@ private boolean verificar_ambiente_inicializado() throws ErroExecucaoBiblioteca } return true; } - + @DocumentacaoFuncao( descricao = "Inverte o sentido da direção do agente (para facilitar os movimentos)", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void inverter_sentido() throws ErroExecucaoBiblioteca, InterruptedException{ + public void inverter_sentido() throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorExecucao.getInstance().getAgenteAtual().inverterSentido(); } - + @DocumentacaoFuncao( descricao = "Retorna o valor atual de um slider", autores = { @@ -830,10 +827,10 @@ public void inverter_sentido() throws ErroExecucaoBiblioteca, InterruptedExcepti @DocumentacaoParametro(nome = "nome_slider", descricao = "Nome do componente utilizado para encontrá-lo entre os componentes") } ) - public double retornar_valor_atual_slider(String nome_slider) throws ErroExecucaoBiblioteca, InterruptedException{ + public double retornar_valor_atual_slider(String nome_slider) throws ErroExecucaoBiblioteca, InterruptedException { return GerenciadorComponentes.buscarValorAtualSlider(nome_slider); } - + @DocumentacaoFuncao( descricao = "Retorna o valor atual de um interruptor", autores = { @@ -843,10 +840,10 @@ public double retornar_valor_atual_slider(String nome_slider) throws ErroExecuca @DocumentacaoParametro(nome = "nome_interruptor", descricao = "Nome do componente utilizado para encontrá-lo entre os componentes") } ) - public boolean retornar_valor_atual_interruptor(String nome_interruptor) throws ErroExecucaoBiblioteca, InterruptedException{ + public boolean retornar_valor_atual_interruptor(String nome_interruptor) throws ErroExecucaoBiblioteca, InterruptedException { return GerenciadorComponentes.buscarValorAtualInterruptor(nome_interruptor); } - + @DocumentacaoFuncao( descricao = "Define a cor apenas da borda esquerda da simulação", parametros = { @@ -856,10 +853,10 @@ public boolean retornar_valor_atual_interruptor(String nome_interruptor) throws @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void definir_borda_esquerda(int cor) throws ErroExecucaoBiblioteca, InterruptedException{ + public void definir_borda_esquerda(int cor) throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorInterface.getInstance().definirBordaEsquerda(cor); } - + @DocumentacaoFuncao( descricao = "Define a cor apenas da borda direita da simulação", parametros = { @@ -869,10 +866,10 @@ public void definir_borda_esquerda(int cor) throws ErroExecucaoBiblioteca, Inter @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void definir_borda_direita(int cor) throws ErroExecucaoBiblioteca, InterruptedException{ + public void definir_borda_direita(int cor) throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorInterface.getInstance().definirBordaDireita(cor); } - + @DocumentacaoFuncao( descricao = "Define a cor apenas da borda inferior da simulação", parametros = { @@ -882,10 +879,10 @@ public void definir_borda_direita(int cor) throws ErroExecucaoBiblioteca, Interr @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void definir_borda_inferior(int cor) throws ErroExecucaoBiblioteca, InterruptedException{ + public void definir_borda_inferior(int cor) throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorInterface.getInstance().definirBordaInferior(cor); } - + @DocumentacaoFuncao( descricao = "Define a cor apenas da borda superior da simulação", parametros = { @@ -895,65 +892,65 @@ public void definir_borda_inferior(int cor) throws ErroExecucaoBiblioteca, Inter @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void definir_borda_superior(int cor) throws ErroExecucaoBiblioteca, InterruptedException{ + public void definir_borda_superior(int cor) throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorInterface.getInstance().definirBordaSuperior(cor); } - + @DocumentacaoFuncao( descricao = "Verifica se o agente colidiu com a parede esquerda", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public boolean colidiu_com_parede_esquerda() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao{ + public boolean colidiu_com_parede_esquerda() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao { int idRetalho = meu_retalho(); return GerenciadorInterface.getInstance().verificarColidiuParedeEsquerda(idRetalho); } - + @DocumentacaoFuncao( descricao = "Verifica se o agente colidiu com a parede direita", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public boolean colidiu_com_parede_direita() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao{ + public boolean colidiu_com_parede_direita() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao { int idRetalho = meu_retalho(); return GerenciadorInterface.getInstance().verificarColidiuParedeDireita(idRetalho); } - + @DocumentacaoFuncao( descricao = "Verifica se o agente colidiu com a parede superior", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public boolean colidiu_com_parede_superior() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao{ + public boolean colidiu_com_parede_superior() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao { int idRetalho = meu_retalho(); return GerenciadorInterface.getInstance().verificarColidiuParedeSuperior(idRetalho); } - + @DocumentacaoFuncao( descricao = "Verifica se o agente colidiu com a parede inferior", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public boolean colidiu_com_parede_inferior() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao{ + public boolean colidiu_com_parede_inferior() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao { int idRetalho = meu_retalho(); return GerenciadorInterface.getInstance().verificarColidiuParedeInferior(idRetalho); } - + @DocumentacaoFuncao( descricao = "Retorna se há outro agente no mesmo retalho do agente atual", autores = { @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public int retornar_agente_aqui() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao{ + public int retornar_agente_aqui() throws ErroExecucaoBiblioteca, InterruptedException, ErroExecucao { int idRetalho = meu_retalho(); return GerenciadorExecucao.getInstance().buscarAgentesAqui(idRetalho); } - + @DocumentacaoFuncao( descricao = "Retorna a orientação de um agente específico buscando pelo seu id", parametros = { @@ -963,10 +960,10 @@ public int retornar_agente_aqui() throws ErroExecucaoBiblioteca, InterruptedExce @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public int retornar_orientacao_por_agente(int id_agente) throws ErroExecucaoBiblioteca, InterruptedException{ + public int retornar_orientacao_por_agente(int id_agente) throws ErroExecucaoBiblioteca, InterruptedException { return GerenciadorExecucao.getInstance().getOrientacaoPorId(id_agente); } - + @DocumentacaoFuncao( descricao = "Define qual será o título exibido na parte superior da simulação", parametros = { @@ -976,12 +973,35 @@ public int retornar_orientacao_por_agente(int id_agente) throws ErroExecucaoBibl @Autor(nome = "Douglas Breda", email = "bredadouglas@gmail.com") } ) - public void definir_titulo_simulacao(String titulo) throws ErroExecucaoBiblioteca, InterruptedException{ + public void definir_titulo_simulacao(String titulo) throws ErroExecucaoBiblioteca, InterruptedException { GerenciadorInterface.getInstance().definirTituloSimulacao(titulo); } - + + /** + * Método não publicado na biblioteca para disparar erros no console do + * Portugol a partir da simulação e que recebe uma instância de um erro do + * simulador + * + * @param erro + * @throws ErroExecucaoBiblioteca + * @throws InterruptedException + */ @NaoExportar - public void adicionar_erro(ErroExecucaoSimulador erro) throws ErroExecucaoBiblioteca{ + public void adicionar_erro(ErroExecucaoSimulador erro) throws ErroExecucaoBiblioteca, InterruptedException { throw new ErroExecucaoBiblioteca(erro.getMensagem()); } + + /** + * Método não publicado na biblioteca para disparar erros no console do + * Portugol a partir da simulação e que recebe uma string com o erro do + * simulador + * + * @param mensagem + * @throws ErroExecucaoBiblioteca + * @throws InterruptedException + */ + @NaoExportar + public void adicionar_erro(String mensagem) throws ErroExecucaoBiblioteca, InterruptedException { + throw new ErroExecucaoBiblioteca(mensagem); + } }