From 8f94bc9f505cdd661b865986eca89b88f8cf82a8 Mon Sep 17 00:00:00 2001 From: Ronan Tavares Camargo Date: Thu, 7 Apr 2016 16:55:49 -0300 Subject: [PATCH] Redmine #4207 --- cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+), 0 deletions(-) diff --git a/cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java b/cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java index 2bfcd0a..6fe0e8f 100644 --- a/cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java +++ b/cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java @@ -2,8 +2,11 @@ package br.com.centralit.controller; import java.util.List; +import org.apache.commons.lang3.SerializationUtils; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -76,6 +79,37 @@ public class ComissaoController extends GenericController { return responseBody; } + @RequestMapping(method = RequestMethod.POST, value = "") + @ResponseBody + public ResponseBodyWrapper save(@RequestBody Comissao entity) throws Exception{ + boolean uniqueConstraintViolate = true; + + Comissao comissao = new Comissao(); + + //TODO Solução temporária para evitar que sejam criados registros com o código duplicado. Alterar solução quando for implementado o cache compartilhado + for(int i = 5; i > 0 && uniqueConstraintViolate; i--){ + try{ + comissao = this.comissaoService.save(SerializationUtils.clone(entity)); + uniqueConstraintViolate = false; + }catch(Throwable e){ + if(e.getCause() instanceof ConstraintViolationException){ + ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); + if(ex.getSQLException().getMessage().contains("codigo_unico_comissao")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(comissao, getEditView()); + + return responseBody; + } + /** * Método responsável por listar Comissao por nome e Organizacao e Dominio * -- libgit2 0.21.2