Commit ace183b74ee419ce38468fb5a6706faa4fa1aef5

Authored by Ronan Tavares Camargo
2 parents f9b72d11 8f94bc9f
Exists in master

Merge branch 'tarefa-4207' into adm-1.12.0

cit-tabelas-corp-web/src/main/java/br/com/centralit/controller/ComissaoController.java
... ... @@ -2,8 +2,11 @@ package br.com.centralit.controller;
2 2  
3 3 import java.util.List;
4 4  
  5 +import org.apache.commons.lang3.SerializationUtils;
  6 +import org.hibernate.exception.ConstraintViolationException;
5 7 import org.springframework.beans.factory.annotation.Autowired;
6 8 import org.springframework.stereotype.Controller;
  9 +import org.springframework.web.bind.annotation.RequestBody;
7 10 import org.springframework.web.bind.annotation.RequestMapping;
8 11 import org.springframework.web.bind.annotation.RequestMethod;
9 12 import org.springframework.web.bind.annotation.RequestParam;
... ... @@ -76,6 +79,37 @@ public class ComissaoController extends GenericController<Comissao> {
76 79 return responseBody;
77 80 }
78 81  
  82 + @RequestMapping(method = RequestMethod.POST, value = "")
  83 + @ResponseBody
  84 + public ResponseBodyWrapper save(@RequestBody Comissao entity) throws Exception{
  85 + boolean uniqueConstraintViolate = true;
  86 +
  87 + Comissao comissao = new Comissao();
  88 +
  89 + //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
  90 + for(int i = 5; i > 0 && uniqueConstraintViolate; i--){
  91 + try{
  92 + comissao = this.comissaoService.save(SerializationUtils.clone(entity));
  93 + uniqueConstraintViolate = false;
  94 + }catch(Throwable e){
  95 + if(e.getCause() instanceof ConstraintViolationException){
  96 + ConstraintViolationException ex = (ConstraintViolationException) e.getCause();
  97 + if(ex.getSQLException().getMessage().contains("codigo_unico_comissao")){
  98 + uniqueConstraintViolate = true;
  99 + }else{
  100 + throw e;
  101 + }
  102 + }else{
  103 + throw e;
  104 + }
  105 + }
  106 + }
  107 +
  108 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(comissao, getEditView());
  109 +
  110 + return responseBody;
  111 + }
  112 +
79 113 /**
80 114 * Método responsável por listar <code>Comissao</code> por nome e <code>Organizacao</code> e <code>Dominio</code>
81 115 *
... ...