Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package br.eti.danielcamargo.backend.common.rest.handlers; import br.eti.danielcamargo.backend.common.exceptions.BusinessException; import br.eti.danielcamargo.backend.common.exceptions.ValidationOccurrence; import br.eti.danielcamargo.backend.common.rest.transfer.Mensagem; import br.eti.danielcamargo.backend.common.utils.MessageUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.WebRequest; /** * * @author Daniel */ @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler({ BusinessException.class }) public ResponseEntity<List<Mensagem>> handleBadRequest(final BusinessException ex, final WebRequest request) { List<ValidationOccurrence> ocorrencias = ex.getOccurrences(); List<Mensagem> mensagens = new ArrayList<>(); for (ValidationOccurrence validationOccurrence : ocorrencias) { if (validationOccurrence.isConstraintViolation()) { mensagens.add(MessageUtils.criarMensagemErroValidacao(ex.getModulo(), validationOccurrence)); } else { mensagens.add(MessageUtils.criarMensagemErro(ex.getModulo(), validationOccurrence)); } } ResponseEntity<List<Mensagem>> responseEntity = new ResponseEntity<>(mensagens, HttpStatus.BAD_REQUEST); return responseEntity; } @ExceptionHandler public ResponseEntity<List<Mensagem>> handleException(DataIntegrityViolationException ex) { String constraint = null; Mensagem mensagem = null; String msg = ex.getMessage(); Pattern p = Pattern.compile("\\[(\\w+_ukey)\\]"); Matcher m = p.matcher(msg); if (m.find()) { constraint = m.group(1); mensagem = MessageUtils.criarMensagemViolacaoUnicidade("common", constraint); } p = Pattern.compile("\\[(\\w+_pkey)\\]"); m = p.matcher(msg); if (m.find()) { constraint = m.group(1); mensagem = MessageUtils.criarMensagemViolacaoChavePrimaria("common", constraint); } p = Pattern.compile("\\[(\\w+_fkey)\\]"); m = p.matcher(msg); if (m.find()) { constraint = m.group(1); mensagem = MessageUtils.criarMensagemViolacaoChaveEstrangeira("common", constraint); } List<Mensagem> list = new ArrayList<>(); list.add(mensagem); ResponseEntity<List<Mensagem>> responseEntity = new ResponseEntity<>(list, HttpStatus.BAD_REQUEST); return responseEntity; } }