From cb346337951a88d8d04b2b589f47eeb1f17dc26e Mon Sep 17 00:00:00 2001 From: magno.oliveira Date: Sun, 28 Sep 2014 02:43:17 +0000 Subject: [PATCH] Ajustes no parametro de calculo --- Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/form.jsp | 2 +- Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp | 2 +- Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/recomendacao/form.jsp | 4 ++-- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/CopiadorParametroCalculo.java | 10 ++-------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/messages.properties | 30 +++++++++++++++++++++++++++--- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/CriteriosController.java | 71 ++++++++++++++++++++++++++++++++++++++++++++++++----------------------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java | 32 ++++++++++++++++++++++++-------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java | 41 +++++++++++++++++++++++++---------------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/RecomendacaoController.java | 80 ++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------- Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/dao/AvaliacaoDAO.java | 4 ++-- 10 files changed, 180 insertions(+), 96 deletions(-) diff --git a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/form.jsp b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/form.jsp index 093d817..fefbae2 100644 --- a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/form.jsp +++ b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/form.jsp @@ -89,7 +89,7 @@
" class="btn btn-default btn-sm">Consultar - " class="btn btn-default btn-sm btn-confirm" data-msg="Um novo Parâmetro de Cálculo será criado a partir do atual. Deseja realmente excluir a recomendação selecionada?">Excluir + " class="btn btn-default btn-sm btn-confirm" data-msg="Um novo Parâmetro de Cálculo poderá ser criado a partir do atual. Deseja realmente excluir a recomendação selecionada?">Excluir
diff --git a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp index 4474e8f..37956b0 100644 --- a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp +++ b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/parametroCalculo/lista.jsp @@ -69,7 +69,7 @@
" class="btn btn-default btn-sm">Consultar - " class="btn btn-default btn-sm btn-confirm" data-msg="Deseja realmente excluir o Parametro de Avaliação selecionado?">Excluir + " class="btn btn-default btn-sm btn-confirm" data-msg="Deseja realmente excluir o Parametro de Cálculo selecionado?">Excluir " class="btn btn-default btn-sm">Exportar
diff --git a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/recomendacao/form.jsp b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/recomendacao/form.jsp index d19342d..824a8b4 100644 --- a/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/recomendacao/form.jsp +++ b/Desenvolvimento/Codificacao/e-Selo/WebContent/WEB-INF/jsp/recomendacao/form.jsp @@ -83,9 +83,9 @@ ${criterio.tipoTeste.tipo}
- " class="btn btn-default btn-sm">Consultar + " class="btn btn-default btn-sm">Consultar - " class="btn btn-default btn-sm btn-confirm" data-msg="Deseja realmente excluir o critério selecionado?">Excluir + " class="btn btn-default btn-sm btn-confirm" data-msg="Deseja realmente excluir o critério selecionado?">Excluir
diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/CopiadorParametroCalculo.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/CopiadorParametroCalculo.java index 48762c9..9a110f0 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/CopiadorParametroCalculo.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/CopiadorParametroCalculo.java @@ -64,21 +64,15 @@ public class CopiadorParametroCalculo { novaRecomendacao.addCriterio(novoCriterio); } - + System.out.println("Recomendacao "+novaRecomendacao.getNumeroRecomendacao()); novoParametroAvaliacao.addRecomendacao(novaRecomendacao); } // Salva novo e atualiza o ultimo - ultimoParametroAvaliacao = parametroCalculoDAO.load(ultimoParametroAvaliacao.getId()); - ultimoParametroAvaliacao.setTsFim(novoParametroAvaliacao.getTsInicio()); - //parametroCalculoDAO.update(ultimoParametroAvaliacao); - - /* ultimoParametroAvaliacao = parametroCalculoDAO.getLastParametrosCalculo(); ultimoParametroAvaliacao.setTsFim(novoParametroAvaliacao.getTsInicio()); parametroCalculoDAO.update(ultimoParametroAvaliacao); - */ - + parametroCalculoDAO.save(novoParametroAvaliacao); } diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/messages.properties b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/messages.properties index 9fe9eef..3094fdf 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/messages.properties +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/component/messages.properties @@ -1,5 +1,12 @@ -faixas.mensagem.salva=Conformidade salva com sucesso. -faixas.mensagem.alterada=Conformidade alterada com sucesso. +criterio.salvo=Critério salvo com sucesso. +criterio.excluído=Critéiro excluído com sucesso. +criterio.atualizado=Critério atualizado com sucesso. +criterio.validacao.numero=É obrigatório informar o número do critério. +criterio.validacao.numero.unique=Já existe um critério com esse número. Informe outro número para o critério. +criterio.validacao.descricao=É obrigatório informar a descrição do criteiro. +criterio.validacao.tipo_teste=É obrigatório informar o Tipo de teste. +faixas.mensagem.salva=Faixa de conformidade salva com sucesso. +faixas.mensagem.alterada=Faixa de conformidade alterada com sucesso. faixas.validacao.diretriz=A Diretriz é obrigatória. faixas.validacao.descricao=A descrição é obrigatória. faixas.validacao.faixa=O número da Faixa é obrigatório. @@ -9,6 +16,18 @@ faixas.validacao.faixa_inicial=A Faixa Inicial é obrigatória. faixas.validacao.tipo_conformidade=O Tipo de Conformidade é obrigatório. faixas.validacao.range_faixas=A Faixa Inicial deve ser menor que a Faixa Inicial. parametro_calculo.validacao.descricao=A descrição é obrigatória. +parametro_calculo.validacao.excluido=Parametro de Cálculo excluído com sucesso. +parametro_calculo.validacao.nao_pode_excluir=Parametro de Cálculo não pode ser excluído pois não está ativo. +parametro_calculo.validacao.nao_pode_excluir.unico=Este é o único Parametro de Cálculo cadastrado e ele não pode ser excluído. +parametro_calculo.validacao.nao_pode_excluir.em_uso=Este Parametro de Cálculo tem avaliações associadas e não pode ser excluído. +parametro_calculo.criado=Parâmetro de Cálculo criado com base no parâmetro +parametro_calculo.criado.limpo=Novo parâmetro criado [sem recomendações ou critérios associados]! +parametro_calculo.atualizado=Parâmetro de Cálculo alterado com sucesso. +recomendacao.validacao.numero=É obrigatório informar o numero da Recomendação. +recomendacao.validacao.numero.unique=Já existe uma recomendação com esse número. +recomendacao.exclusao=Recomendação excluída com sucesso! +recomendacao.salva=Recomendação salva com sucesso! +recomendacao.atualizada=Recomendação atualizada com sucesso! tipo_conformidade.mensagem.salva=Tipo de Diretriz salvo com sucesso. tipo_conformidade.mensagem.alterada=Tipo de Diretriz alterado com sucesso. tipo_conformidade.validacao.descricao=É necessário informar o a descrição do Tipo de Diretriz. @@ -25,4 +44,9 @@ tipo_recomendacao.validacao.descricao.unique=Já existe uma descrição com este no tipo_recomendacao.validacao.maximo=É necessário informar o valor máximo do Tipo de Teste. tipo_recomendacao.validacao.maximo.min=É necessário informar o valor máximo do Tipo de Teste. tipo_recomendacao.validacao.edit=O Tipo de Teste não pode ser alterado, pois ele está sendo utilizado. -tipo_recomendacao.validacao.remove=O Tipo de Teste não pode ser excluído, pois ele está sendo utilizado. \ No newline at end of file +tipo_recomendacao.validacao.remove=O Tipo de Teste não pode ser excluído, pois ele está sendo utilizado. +validacao.peso=É obrigatório informar o peso. +validacao.peso.zero=O peso deve ser maior que zero. +validacao.descricao=É obrigatório informar a descrição. +validacao.sem_alteracao=Nenhum campo foi alterado. +validacao.acao_cancelada=Ação cancelada! \ No newline at end of file diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/CriteriosController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/CriteriosController.java index a57002b..e9833d5 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/CriteriosController.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/CriteriosController.java @@ -12,7 +12,9 @@ import br.com.caelum.vraptor.Validator; import br.com.caelum.vraptor.validator.ValidationMessage; import br.com.eselo.annotations.Restrito; import br.com.eselo.component.CopiadorParametroCalculo; +import br.com.eselo.component.Messages; import br.com.eselo.component.UsuarioWeb; +import br.com.eselo.dao.AvaliacaoDAO; import br.com.eselo.dao.CriterioDAO; import br.com.eselo.dao.ParametroCalculoDAO; import br.com.eselo.dao.RecomendacaoDAO; @@ -60,7 +62,7 @@ public class CriteriosController { return criterio; } - @Get("/criterios/form/{id}") + @Get("/criterio/form/{id}") @Restrito(descricao = "CRITERIO_ATUALIZAR") public Criterio form(Long id) { Criterio criterio = dao.load(id); @@ -91,19 +93,24 @@ public class CriteriosController { validator.onErrorUsePageOf(CriteriosController.class).novo( criterio.getRecomendacao().getId()); - this.criarNovoParametroAvaliacao(criterio, - ParametroCalculoController.MODO_ADD); - - result.include("mensagem", "Critério salvo com sucesso."); - result.redirectTo(RecomendacaoController.class).form( - criterio.getRecomendacao().getId()); + + ParametroCalculo pc = paDAO.load(criterio.getRecomendacao().getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + + dao.save(criterio); + result.include("mensagem", Messages.getString("criterio.salvo")); + }else{ + this.criarNovoParametroAvaliacao(criterio,ParametroCalculoController.MODO_ADD); + result.include("mensagem", Messages.getString("criterio.salvo")); + } + + result.redirectTo(RecomendacaoController.class).form(criterio.getRecomendacao().getId()); } @Put("/criterio") @Restrito(descricao = "CRITERIO_ATUALIZAR") public void atualizar(Criterio criterio) { - criterio.setRecomendacao(new RecomendacaoDAO(dao.getSession()) - .load(criterio.getRecomendacao().getId())); + //criterio.setRecomendacao(new RecomendacaoDAO(dao.getSession()).load(criterio.getRecomendacao().getId())); @SuppressWarnings("unchecked") List tipoTestes = (List) dao.getAllTipoTeste(); @@ -123,12 +130,22 @@ public class CriteriosController { if(validarAtualizacaoCriterio(criterio)){ - criarNovoParametroAvaliacao(criterio,ParametroCalculoController.MODO_EDIT); - result.include("mensagem", "Critério salvo com sucesso."); + ParametroCalculo pc = paDAO.load(criterioCadastrado.getRecomendacao().getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + criterioCadastrado.setNumeroCriterio(criterio.getNumeroCriterio()); + criterioCadastrado.setDescricao(criterio.getDescricao()); + criterioCadastrado.setPeso(criterio.getPeso()); + + dao.update(criterioCadastrado); + result.include("mensagem", Messages.getString("criterio.atualizado")); + }else{ + criarNovoParametroAvaliacao(criterio,ParametroCalculoController.MODO_EDIT); + result.include("mensagem", Messages.getString("criterio.salvo")); + } }else{ criterioCadastrado.setDescricao(criterio.getDescricao()); dao.update(criterioCadastrado); - result.include("mensagem", "Nenhum campo foi alterado."); + result.include("mensagem", Messages.getString("validacao.sem_alteracao")); } result.redirectTo(CriteriosController.class).form( @@ -139,12 +156,20 @@ public class CriteriosController { @Restrito(descricao = "CRITERIO_EXCLUIR") public void excluir(Long id) { Criterio criteiro = dao.load(id); - + long idRecomendacao = criteiro.getRecomendacao().getId(); + ParametroCalculo pc = paDAO.load(criteiro.getRecomendacao().getParametroCalculo().getId()); + + result.include("mensagem", Messages.getString("criterio.excluído")); + + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + dao.remove(criteiro.getId()); + result.redirectTo("/recomendacao/form/"+idRecomendacao); + }else{ criarNovoParametroAvaliacao(criteiro, - ParametroCalculoController.MODO_DELETE); - - result.include("mensagem", "Criteiro excluída com sucesso."); - result.redirectTo(ParametroCalculoController.class).index(1); + ParametroCalculoController.MODO_DELETE); + result.redirectTo(ParametroCalculoController.class).index(1); + } + } private void criarNovoParametroAvaliacao(Criterio criterio, int tipo) { @@ -213,28 +238,28 @@ public class CriteriosController { if (criterio.getNumeroCriterio() == null) { validator.add(new ValidationMessage( - "É obrigatório informar o número da recomendação.", + Messages.getString("criterio.validacao.numero"), "criteiro.numeroCriterio")); } else if (hasNumeroCriterioRecomendacaoAtual(criterio)) { validator.add(new ValidationMessage( - "Já existe um critério com esse número. Informe outro número para o critério.", + Messages.getString("criterio.validacao.numero.unique"), "criteiro.numeroCriteiro")); } else if (criterio.getPeso() == null) { validator.add(new ValidationMessage( - "É obrigatório informar o peso do criteiro.", + Messages.getString("validacao.peso"), "criteiro.peso")); } else if (criterio.getPeso() <= 0) { validator .add(new ValidationMessage( - "O peso do criteiro deve ser maior que 0.", + Messages.getString("validacao.peso.zero"), "criteiro.peso")); } else if (criterio.getDescricao() == null) { validator.add(new ValidationMessage( - "É obrigatório informar a descrição do criteiro.", + Messages.getString("criterio.validacao.descricao"), "criteiro.descricao")); } else if (criterio.getTipoTeste().getId() == null) { validator.add(new ValidationMessage( - "É obrigatório informar o Tipo de teste.", + Messages.getString("criterio.validacao.tipo_teste"), "criterio.tipoTeste")); } else { criterio.setTipoTeste(new TipoTesteDAO(dao.getSession()) diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java index a69bc31..f6ac883 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/FaixaController.java @@ -15,6 +15,7 @@ import br.com.eselo.annotations.Restrito; import br.com.eselo.component.CopiadorParametroCalculo; import br.com.eselo.component.Messages; import br.com.eselo.component.UsuarioWeb; +import br.com.eselo.dao.AvaliacaoDAO; import br.com.eselo.dao.CriterioDAO; import br.com.eselo.dao.FaixaDAO; import br.com.eselo.dao.ParametroCalculoDAO; @@ -139,11 +140,19 @@ public class FaixaController { validator.onErrorUsePageOf(FaixaController.class).add( faixa.getCriterio().getId()); } - - - criarNovoParametroAvaliacao(faixas, ParametroCalculoController.MODO_ADD); - - result.include("mensagem", Messages.getString("faixas.mensagem.salva")); + + ParametroCalculo pc = paDAO.load(criterio.getRecomendacao().getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + + for (Faixa faixa : faixas) { + dao.save(faixa); + } + result.include("mensagem", Messages.getString("faixas.mensagem.salva")); + }else{ + this.criarNovoParametroAvaliacao(faixas,ParametroCalculoController.MODO_ADD); + result.include("mensagem", Messages.getString("faixas.mensagem.salva")); + } + result.redirectTo(CriteriosController.class).form(criterio.getId()); } @@ -174,12 +183,19 @@ public class FaixaController { List faixas = new ArrayList(); faixas.add(faixaCadastrada); - criarNovoParametroAvaliacao(faixas, ParametroCalculoController.MODO_EDIT); - result.include("mensagem", Messages.getString("faixas.mensagem.alterada")); + + ParametroCalculo pc = paDAO.load(criterio.getRecomendacao().getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + dao.update(faixaCadastrada); + result.include("mensagem", Messages.getString("faixas.mensagem.alterada")); + }else{ + criarNovoParametroAvaliacao(faixas, ParametroCalculoController.MODO_EDIT); + result.include("mensagem", Messages.getString("faixas.mensagem.alterada")); + } }else{ faixaCadastrada.setDescricao(faixa.getDescricao()); dao.update(faixaCadastrada); - result.include("mensagem", "Nenhum campo foi alterado."); + result.include("mensagem", Messages.getString("validacao.sem_alteracao")); } result.redirectTo(FaixaController.class).form(faixa.getId()); } diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java index 19402a7..35b1327 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/ParametroCalculoController.java @@ -33,6 +33,7 @@ import br.com.eselo.annotations.Restrito; import br.com.eselo.component.CopiadorParametroCalculo; import br.com.eselo.component.Messages; import br.com.eselo.component.UsuarioWeb; +import br.com.eselo.dao.AvaliacaoDAO; import br.com.eselo.dao.ParametroCalculoDAO; import br.com.eselo.dao.RecomendacaoDAO; import br.com.eselo.dao.UsuarioDAO; @@ -86,19 +87,19 @@ public class ParametroCalculoController { if(acao.equals("Importar")){ ParametroCalculo pc = dao.load(idParametroCalculo); this.criarNovoParametroCalculo(pc, MODO_IMPORT); - mensagem = "Parâmetro de Cálculo criado com base no parametro " - + pc.getDescricao() + " com sucesso."; + mensagem = Messages.getString("parametro_calculo.criado") + + pc.getDescricao() + "."; result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); }else if(acao.equals("Não Importar")){ criarNovoParametroCalculo(new ParametroCalculo(), MODO_ADD); - mensagem = "Novo parâmetro criado [sem recomendações ou critérios associados]!"; + mensagem = Messages.getString("parametro_calculo.criado.limpo"); result.redirectTo(ParametroCalculoController.class).form(dao.getMaxId()); }else if(acao.equals("Cancelar")){ - mensagem = "Ação cancelada!"; + mensagem = Messages.getString("validacao.acao_cancelada"); result.redirectTo(ParametroCalculoController.class).lista(); } @@ -185,7 +186,7 @@ public class ParametroCalculoController { dao.saveOrUpdate(parametroCalculoCadastrado); - result.include("mensagem", "Parâmetro de Cálculo alterado com sucesso."); + result.include("mensagem", Messages.getString("parametro_calculo.atualizado")); result.redirectTo(ParametroCalculoController.class).index(1); } @@ -193,22 +194,30 @@ public class ParametroCalculoController { @Restrito(descricao = "PARAMETRO_CALCULO_EXCLUIR") public void excluir(Long id) { if (dao.listAll().size() > 1) { - ParametroCalculo pa = dao.load(id); - if ((pa.getTsFim() == null)) { - dao.remove(id); + ParametroCalculo pc = dao.load(id); + + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + if ((pc.getTsFim() == null)) { + dao.remove(id); + + pc = dao.getLastParametrosCalculo(); + pc.setTsFim(null); + dao.update(pc); + result.include("mensagem", + Messages.getString("parametro_calculo.validacao.excluido")); + } else { + result.include("mensagem", + Messages.getString("parametro_calculo.validacao.nao_pode_excluir")); + } + }else{ - pa = dao.getLastParametrosCalculo(); - pa.setTsFim(null); - dao.update(pa); result.include("mensagem", - "Parametro de Cálculo excluído com sucesso."); - } else { - result.include("mensagem", - "Parametro de Cálculo não pode ser excluído pois não está ativo."); + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.em_uso")); } + } else { result.include("mensagem", - "Este é o único Parametro de Cálculo cadastrado e ele não pode ser excluído."); + Messages.getString("parametro_calculo.validacao.nao_pode_excluir.unico")); } result.redirectTo(ParametroCalculoController.class).lista(); diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/RecomendacaoController.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/RecomendacaoController.java index 1b2c6c1..b72bc75 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/RecomendacaoController.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/controller/RecomendacaoController.java @@ -12,7 +12,9 @@ import br.com.caelum.vraptor.Validator; import br.com.caelum.vraptor.validator.ValidationMessage; import br.com.eselo.annotations.Restrito; import br.com.eselo.component.CopiadorParametroCalculo; +import br.com.eselo.component.Messages; import br.com.eselo.component.UsuarioWeb; +import br.com.eselo.dao.AvaliacaoDAO; import br.com.eselo.dao.ParametroCalculoDAO; import br.com.eselo.dao.RecomendacaoDAO; import br.com.eselo.model.ParametroCalculo; @@ -71,11 +73,18 @@ public class RecomendacaoController { validator.onErrorUsePageOf(RecomendacaoController.class).form( recomendacao.getParametroCalculo().getId()); - this.criarNovoParametroAvaliacao(recomendacao, - ParametroCalculoController.MODO_ADD); - - result.include("mensagem", "Recomenda��o salva com sucesso."); - result.redirectTo(ParametroCalculoController.class).index(1); + ParametroCalculo pc = paDAO.load(recomendacao.getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + + dao.save(recomendacao); + result.include("mensagem", Messages.getString("recomendacao.salva")); + result.redirectTo(ParametroCalculoController.class).atualizar(pc); + }else{ + criarNovoParametroAvaliacao(recomendacao,ParametroCalculoController.MODO_ADD); + result.include("mensagem", Messages.getString("recomendacao.salva")); + result.redirectTo(ParametroCalculoController.class).index(1); + } + } @Put("/recomendacao") @@ -89,12 +98,22 @@ public class RecomendacaoController { recomendacaoCadastrada.getId()); if(validarAtualizacaoRecomendacao(recomendacao)){ - criarNovoParametroAvaliacao(recomendacao,ParametroCalculoController.MODO_EDIT); - result.include("mensagem", "Recomendação salva com sucesso."); + ParametroCalculo pc = paDAO.load(recomendacaoCadastrada.getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + recomendacaoCadastrada.setNumeroRecomendacao(recomendacao.getNumeroRecomendacao()); + recomendacaoCadastrada.setDescricao(recomendacao.getDescricao()); + recomendacaoCadastrada.setPeso(recomendacao.getPeso()); + + dao.update(recomendacaoCadastrada); + result.include("mensagem", Messages.getString("recomendacao.atualizada")); + }else{ + criarNovoParametroAvaliacao(recomendacao,ParametroCalculoController.MODO_EDIT); + result.include("mensagem", Messages.getString("recomendacao.salva")); + } }else{ recomendacaoCadastrada.setDescricao(recomendacao.getDescricao()); dao.update(recomendacaoCadastrada); - result.include("mensagem", "Nenhum campo foi alterado."); + result.include("mensagem", Messages.getString("validacao.sem_alteracao")); } result.redirectTo(RecomendacaoController.class).form(recomendacao.getId()); @@ -104,12 +123,18 @@ public class RecomendacaoController { @Restrito(descricao = "RECOMENDACAO_EXCLUIR") public void excluir(Long id) { Recomendacao recomendacao = dao.load(id); - + + result.include("mensagem", Messages.getString("recomendacao.exclusao")); + ParametroCalculo pc = paDAO.load(recomendacao.getParametroCalculo().getId()); + if(!(new AvaliacaoDAO(dao.getSession()).existeAvaliacao(pc))){ + dao.remove(recomendacao.getId()); + result.redirectTo("/parametrosCalculo/atualizar/"+pc.getId()); + }else{ criarNovoParametroAvaliacao(recomendacao, - ParametroCalculoController.MODO_DELETE); - - result.include("mensagem", "Recomenda��o exclu�da com sucesso."); - result.redirectTo(ParametroCalculoController.class).index(1); + ParametroCalculoController.MODO_DELETE); + result.redirectTo(ParametroCalculoController.class).index(1); + } + } private void criarNovoParametroAvaliacao(Recomendacao recomendacao, int tipo) { @@ -123,16 +148,13 @@ public class RecomendacaoController { break; case ParametroCalculoController.MODO_EDIT: + ultimoParametroAvaliacao = new CopiadorParametroCalculo().copiarParametroCalculo(paDAO.getLastParametrosCalculo()); for (Recomendacao r : ultimoParametroAvaliacao.getRecomendacoes()) { if (r.getNumeroRecomendacao().longValue() == recomendacao.getNumeroRecomendacao().longValue()) { - r.setParametroCalculo(recomendacao.getParametroCalculo()); - r.setNumeroRecomendacao(recomendacao - .getNumeroRecomendacao()); + r.setNumeroRecomendacao(recomendacao.getNumeroRecomendacao()); r.setDescricao(recomendacao.getDescricao()); r.setPeso(recomendacao.getPeso()); - r.setCriterios(recomendacao.getCriterios()); - r.setId(recomendacao.getId()); ok = true; break; } @@ -141,8 +163,9 @@ public class RecomendacaoController { break; case ParametroCalculoController.MODO_DELETE: + ultimoParametroAvaliacao = paDAO.getLastParametrosCalculo(); for (Recomendacao r : ultimoParametroAvaliacao.getRecomendacoes()) { - if (r.getId().longValue() == recomendacao.getId().longValue()) { + if (r.getNumeroRecomendacao().longValue() == recomendacao.getNumeroRecomendacao().longValue()) { ultimoParametroAvaliacao.removeRecomendacao(recomendacao); ok = true; break; @@ -160,25 +183,24 @@ public class RecomendacaoController { private void validarRecomendacao(Recomendacao recomendacao) { if (recomendacao.getNumeroRecomendacao() == null) { - validator.add(new ValidationMessage( - "� obrigat�rio informar o n�mero da recomenda��o.", + validator.add(new ValidationMessage(Messages.getString("recomendacao.validacao.numero"), "recomendacao.numeroRecomendacao")); } else if (hasNumeroRecomendacaoNoParametroAtual(recomendacao)) { validator .add(new ValidationMessage( - "J� existe uma recomenda��o ativa com esse numero. Recomenda��o n�o atualizada.", + Messages.getString("recomendacao.validacao.numero.unique"), "recomendacao.numeroRecomendacao")); } else if (recomendacao.getDescricao() == null) { validator.add(new ValidationMessage( - "� obrigat�rio informar a descri��o da recomenda��o.", + Messages.getString("validacao.descricao"), "recomendacao.descricao")); } else if (recomendacao.getPeso() == null) { validator.add(new ValidationMessage( - "� obrigat�rio informar o peso da recomenda��o.", + Messages.getString("validacao.peso"), "recomendacao.peso")); } else if (recomendacao.getPeso() <= 0) { validator.add(new ValidationMessage( - "O peso da recomenda��o deve ser maior que zero.", + Messages.getString("validacao.peso.zero"), "recomendacao.peso")); } @@ -204,13 +226,7 @@ public class RecomendacaoController { return alteracao; } - /** - * Recebe uma recomenda��o antes de ser cadastrada e verifica se ja existe - * uma recomenda��o ativa com o mesmo numero. - * - * @param recomendacao - * @return boolean - */ + private boolean hasNumeroRecomendacaoNoParametroAtual( Recomendacao recomendacao) { boolean retorno = false; diff --git a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/dao/AvaliacaoDAO.java b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/dao/AvaliacaoDAO.java index 6de24ef..02793a8 100644 --- a/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/dao/AvaliacaoDAO.java +++ b/Desenvolvimento/Codificacao/e-Selo/src/main/java/br/com/eselo/dao/AvaliacaoDAO.java @@ -51,9 +51,9 @@ public class AvaliacaoDAO extends GenericDAO { @SuppressWarnings("unchecked") List encontrado = getSession() .createCriteria(getPersistentClass()) - .add(Restrictions.eq("parametroAvaliacao", parametroCalculo)) + .add(Restrictions.eq("parametroCalculo", parametroCalculo)) .list(); - return encontrado.size() >0; + return encontrado.size() > 0; } } -- libgit2 0.21.2