From bfc2ddfcff0101d9d6add7c4752381ed51f9a2a5 Mon Sep 17 00:00:00 2001 From: Ronan Tavares Camargo Date: Thu, 7 Apr 2016 16:59:40 -0300 Subject: [PATCH] Redmine #4207 --- citgrp-patrimonio-api/src/main/java/br/com/centralit/api/model/SaidaTemporaria.java | 12 ++++++++++++ citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/AdicaoBemPrincipalController.java | 33 +++++++++++++++++++++++++++++++++ citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java | 35 ++++++++++++++++++++++++++++++++++- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/DefinicaoDetentorController.java | 35 +++++++++++++++++++++++++++++++++++ citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java | 36 ++++++++++++++++++++++++++++++++++-- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/InventarioController.java | 28 ++++++++++++++++++++++++++-- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SaidaTemporariaController.java | 12 +++++------- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SelecaoBemPatrimonialController.java | 36 +++++++++++++++++++++++++++++++++++- citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java | 9 ++++----- 9 files changed, 218 insertions(+), 18 deletions(-) diff --git a/citgrp-patrimonio-api/src/main/java/br/com/centralit/api/model/SaidaTemporaria.java b/citgrp-patrimonio-api/src/main/java/br/com/centralit/api/model/SaidaTemporaria.java index 33b1510..f6094ec 100644 --- a/citgrp-patrimonio-api/src/main/java/br/com/centralit/api/model/SaidaTemporaria.java +++ b/citgrp-patrimonio-api/src/main/java/br/com/centralit/api/model/SaidaTemporaria.java @@ -1,5 +1,6 @@ package br.com.centralit.api.model; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -17,6 +18,7 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.UniqueConstraint; +import org.apache.commons.beanutils.BeanUtilsBean2; import org.hibernate.envers.Audited; import org.hibernate.envers.NotAudited; @@ -406,5 +408,15 @@ public class SaidaTemporaria extends PersistentObjectAuditOrganizacao { this.saidaTemporariaItens = saidaTemporariaItens; } + + public static SaidaTemporaria clone(SaidaTemporaria objeto) throws Exception{ + SaidaTemporaria saidaTempoaria = (SaidaTemporaria) BeanUtilsBean2.getInstance().cloneBean(objeto); + + saidaTempoaria.setSaidaTemporariaItens(new ArrayList()); + for(SaidaTemporariaItem item : objeto.getSaidaTemporariaItens()){ + saidaTempoaria.getSaidaTemporariaItens().add((SaidaTemporariaItem) BeanUtilsBean2.getInstance().cloneBean(item)); + } + return saidaTempoaria; + } } diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/AdicaoBemPrincipalController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/AdicaoBemPrincipalController.java index a018a39..3d227fb 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/AdicaoBemPrincipalController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/AdicaoBemPrincipalController.java @@ -2,6 +2,8 @@ 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; @@ -66,6 +68,37 @@ public class AdicaoBemPrincipalController extends GenericController 0 && uniqueConstraintViolate; i--){ + try{ + adicaoBemPrincipal = this.adicaoBemPrincipalService.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_adicaobemprincipal")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(adicaoBemPrincipal, getEditView()); + + return responseBody; + } /** *

Iniciativa(s): NUMERO_INICIATIVA

diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java index ba2b242..87fa1d4 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/BaixaController.java @@ -1,7 +1,10 @@ package br.com.centralit.controller; +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; @@ -9,7 +12,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import br.com.centralit.api.model.BaixaPatrimonio; import br.com.centralit.api.service.BaixaService; -import br.com.centralit.api.service.InventarioService; import br.com.centralit.framework.controller.GenericController; import br.com.centralit.framework.json.ResponseBodyWrapper; import br.com.centralit.framework.json.Views; @@ -77,6 +79,37 @@ public class BaixaController extends GenericController { return Views.BaixaListView.class; } + + @RequestMapping(method = RequestMethod.POST, value = "") + @ResponseBody + public ResponseBodyWrapper save(@RequestBody BaixaPatrimonio entity) throws Exception{ + boolean uniqueConstraintViolate = true; + + BaixaPatrimonio baixa = new BaixaPatrimonio(); + + //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{ + baixa = this.baixaService.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_baixapatrimonio")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(baixa, getEditView()); + + return responseBody; + } @RequestMapping(value = "/findIdsBemPatrimonialPorData", method = RequestMethod.GET, produces = "application/json") @ResponseBody diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/DefinicaoDetentorController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/DefinicaoDetentorController.java index ef45369..b70009a 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/DefinicaoDetentorController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/DefinicaoDetentorController.java @@ -23,9 +23,12 @@ import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.xml.JRXmlLoader; +import org.apache.commons.lang3.SerializationUtils; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; 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; @@ -40,6 +43,7 @@ import br.com.centralit.api.service.InternacionalizacaoService; import br.com.centralit.api.service.UsuarioService; import br.com.centralit.framework.controller.GenericController; import br.com.centralit.framework.controller.ReportController; +import br.com.centralit.framework.json.ResponseBodyWrapper; import br.com.centralit.framework.json.Views; import br.com.centralit.framework.model.Dominio; import br.com.centralit.framework.model.Usuario; @@ -222,6 +226,37 @@ public class DefinicaoDetentorController extends GenericController 0 && uniqueConstraintViolate; i--){ + try{ + definicaoDetentor = this.definicaoDetentorService.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_definicaodetentor")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(definicaoDetentor, getEditView()); + + return responseBody; + } @Override public Class getListView() { diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java index 5b1701f..0c5d524 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/EntradaController.java @@ -1,9 +1,10 @@ package br.com.centralit.controller; -import java.math.BigDecimal; import java.util.ArrayList; 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.PathVariable; @@ -22,7 +23,6 @@ import br.com.centralit.api.service.EntradaService; import br.com.centralit.framework.controller.GenericController; import br.com.centralit.framework.json.ResponseBodyWrapper; import br.com.centralit.framework.json.Views; -import br.com.centralit.framework.util.UtilObjeto; import br.com.centralit.framework.view.ResultResponseVH; /** @@ -115,6 +115,38 @@ public class EntradaController extends GenericController { this.entradaService.uploadAnexoCaracteristica(file, idEntradaItem); } + + @RequestMapping(method = RequestMethod.POST, value = "") + @ResponseBody + public ResponseBodyWrapper save(@RequestBody EntradaPatrimonio entity) throws Exception{ + boolean uniqueConstraintViolate = true; + + EntradaPatrimonio entrada = new EntradaPatrimonio(); + + //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{ + entrada = this.entradaService.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_entrada")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(entrada, getEditView()); + + return responseBody; + } + /** * Método responsável por listar Entrada por codigo e Organizacao diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/InventarioController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/InventarioController.java index bdde3f1..e49fdcf 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/InventarioController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/InventarioController.java @@ -2,6 +2,8 @@ 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; @@ -120,8 +122,30 @@ public class InventarioController extends GenericController { @RequestMapping(method = RequestMethod.POST, value = "/saveInventario") @ResponseBody public ResponseBodyWrapper saveInventario(@RequestBody InventarioVH inventarioVH) throws Exception { - - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.inventarioService.save(inventarioVH), getEditView()); + boolean uniqueConstraintViolate = true; + + Inventario inventario = new Inventario(); + + //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{ + inventario = this.inventarioService.save(SerializationUtils.clone(inventarioVH)); + uniqueConstraintViolate = false; + }catch(Throwable e){ + if(e.getCause() instanceof ConstraintViolationException){ + ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); + if(ex.getSQLException().getMessage().contains("codigo_unico_inventario")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(inventario, getEditView()); return responseBody; } diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SaidaTemporariaController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SaidaTemporariaController.java index 8bfd157..1034c3c 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SaidaTemporariaController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SaidaTemporariaController.java @@ -2,7 +2,6 @@ package br.com.centralit.controller; import java.util.Collection; -import org.apache.commons.beanutils.BeanUtilsBean; import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -112,22 +111,21 @@ public class SaidaTemporariaController extends GenericController 0 && uniqueConstraintViolate; i--){ try{ - saidaTemporaria = (SaidaTemporaria) BeanUtilsBean.getInstance().cloneBean(entity); - saidaTemporaria = this.saidaTemporariaService.save(saidaTemporaria); + saidaTemporaria = this.saidaTemporariaService.save(SaidaTemporaria.clone(entity)); uniqueConstraintViolate = false; }catch(Throwable e){ if(e.getCause() instanceof ConstraintViolationException){ ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); - if(ex.getSQLException().getMessage().contains("saidatemp_codigo_organizacao_id_key")){ + if(ex.getSQLException().getMessage().contains("codigo_unico_saidatemporaria")){ uniqueConstraintViolate = true; }else{ - uniqueConstraintViolate = false; + throw e; } }else{ - uniqueConstraintViolate = false; + throw e; } } } diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SelecaoBemPatrimonialController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SelecaoBemPatrimonialController.java index 7aba38a..170fe9e 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SelecaoBemPatrimonialController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/SelecaoBemPatrimonialController.java @@ -2,14 +2,16 @@ package br.com.centralit.controller; import java.util.Collection; +import org.apache.commons.beanutils.BeanUtilsBean; +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; import org.springframework.web.bind.annotation.ResponseBody; -import br.com.centralit.api.model.ContaContabil; import br.com.centralit.api.model.SelecaoBemPatrimonial; import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.SelecaoBemPatrimonialService; @@ -107,6 +109,38 @@ public class SelecaoBemPatrimonialController extends GenericController 0 && uniqueConstraintViolate; i--){ + try{ + selecaoBemPatrimonial = (SelecaoBemPatrimonial) BeanUtilsBean.getInstance().cloneBean(objeto); + selecaoBemPatrimonial = this.selecaoBemPatrimonialService.save(selecaoBemPatrimonial); + uniqueConstraintViolate = false; + }catch(Throwable e){ + if(e.getCause() instanceof ConstraintViolationException){ + ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); + if(ex.getSQLException().getMessage().contains("codigo_unico_selecaobempatrimonial")){ + uniqueConstraintViolate = true; + }else{ + throw e; + } + }else{ + throw e; + } + } + } + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(selecaoBemPatrimonial, getEditView()); + + return responseBody; + } + @Override public Class getListView() { diff --git a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java index fa30dd6..3e61baf 100644 --- a/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java +++ b/citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/TransferenciaController.java @@ -339,7 +339,7 @@ public class TransferenciaController extends GenericController{ boolean uniqueConstraintViolate = true; List transferencias = new LinkedList(); - //TODO Solução temporária para evitar que sejam criadas transferencias com o código duplicado. Alterar solução quando for implementado o cache compartilhado + //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{ Transferencia transferencia = (Transferencia) BeanUtilsBean.getInstance().cloneBean(objeto); @@ -348,14 +348,13 @@ public class TransferenciaController extends GenericController{ }catch(PersistenceException e){ if(e.getCause() instanceof ConstraintViolationException){ ConstraintViolationException ex = (ConstraintViolationException) e.getCause(); - if(ex.getSQLException().getMessage().contains("trans_codigo_organizacao_id_key") - || ex.getSQLException().getMessage().contains("trans_codigo_organizacao_codigoasi_id_key")){ + if(ex.getSQLException().getMessage().contains("codigo_unico")){ uniqueConstraintViolate = true; }else{ - uniqueConstraintViolate = false; + throw e; } }else{ - uniqueConstraintViolate = false; + throw e; } } } -- libgit2 0.21.2