Example usage for org.hibernate.exception ConstraintViolationException getConstraintName

List of usage examples for org.hibernate.exception ConstraintViolationException getConstraintName

Introduction

In this page you can find the example usage for org.hibernate.exception ConstraintViolationException getConstraintName.

Prototype

public String getConstraintName() 

Source Link

Document

Returns the name of the violated constraint, if known.

Usage

From source file:pl.surreal.finance.transaction.resources.AccountResource.java

License:Apache License

@POST
@UnitOfWork//from w  ww.jav a 2s  .c  o  m
@ApiOperation(value = "Create new account")
@ApiResponses(value = { @ApiResponse(code = 400, message = "Contraint violation") })
public AccountApi createAccount(
        @ApiParam(value = "new account object", required = true) AccountApi accountApi) {
    Account accountToCreate = mapApiToDomain(accountApi, null);
    Account account;
    try {
        account = accountDAO.create(accountToCreate);
    } catch (ConstraintViolationException ex) {
        throw new BadRequestException("Constraint violation on " + ex.getConstraintName());
    }
    accountApi.setId(account.getId());
    return accountApi;
}

From source file:pl.surreal.finance.transaction.resources.CardResource.java

License:Apache License

@POST
@UnitOfWork//ww  w  .j a v  a  2s.c om
public CardApi createCard(CardApi cardApi) {
    Card cardToCreate = mapApiToDomain(cardApi, null);
    Card card;
    try {
        card = cardDAO.create(cardToCreate);
    } catch (ConstraintViolationException ex) {
        throw new BadRequestException("Constraint violation on " + ex.getConstraintName());
    }
    cardApi.setId(card.getId());
    return cardApi;
}

From source file:py.una.pol.karaku.controller.KarakuAdvancedController.java

License:Open Source License

/**
 * {@inheritDoc}//from  ww w  .  ja  va  2  s. c  o  m
 * <p>
 * Esta implementacin captura las excepciones del tipo
 * {@link UniqueConstraintException} y las excepciones del tipo
 * {@link DataIntegrityViolationException} y intenta generar un mensaje de
 * error pertinente.
 * </p>
 * 
 */
@Override
public boolean handleException(final Exception e) {

    if (e instanceof UniqueConstraintException) {
        UniqueConstraintException unique = (UniqueConstraintException) e;
        if (unique.getFields().size() == 1) {
            String field = unique.getFields().get(0);
            controllerHelper.addWarnMessage(field, getMessage("FIELD_DUPLICATE"),
                    getMessage("FIELD_DUPLICATE_DETAIL"));
        }
        if (unique.getFields().size() > 1) {
            controllerHelper.addGlobalWarnMessage(getMessage("FIELDS_DUPLICATED"),
                    getMessage("FIELDS_DUPLICATED_DETAIL", unique.getFields().toArray()));
        }
        return true;

    } else if (e instanceof DataIntegrityViolationException) {

        // TODO: buscar una solucion mas generica para este caso, de
        // identificar excepciones causadas por constraints de foreign keys

        DataIntegrityViolationException integrityException = (DataIntegrityViolationException) e;

        /* controlar que su causa sea del tipo constraintException */
        if (integrityException.getCause() instanceof ConstraintViolationException) {

            /* controlar que el constraint sea de fk */
            ConstraintViolationException constraintException = (ConstraintViolationException) integrityException
                    .getCause();

            if (constraintException.getConstraintName().startsWith("fk")) {
                controllerHelper.createGlobalFacesMessage(FacesMessage.SEVERITY_WARN, "ENTITY_REQUIRED_DETAIL");
                return true;
            }
        }
    }
    return false;
}

From source file:py.una.pol.karaku.util.UniqueHelper.java

License:Open Source License

/**
 * Si es una exception {@link ConstraintViolationException} que viene de la
 * base de datos, entonces recupera informacin valiosa y genera una
 * Excepcin {@link UniqueConstraintException}.
 * // w w  w. j a v  a  2s  .  c o  m
 * @param exception
 *            Excepcion genrica
 * @param clazz
 *            Clase de la entidad duea de los atributos
 * @return {@link UniqueConstraintException} si es el caso, o la misma
 *         Excepcin que se recibe
 */
public Exception createUniqueException(final Exception exception, final Class<?> clazz) {

    if (exception instanceof ConstraintViolationException) {
        ConstraintViolationException cve = (ConstraintViolationException) exception;
        String constraint = cve.getConstraintName();
        Map<String, UniqueRestrintion> constrainsName = getConstrains(clazz);
        if (constrainsName.get(constraint) != null) {
            UniqueRestrintion ur = constrainsName.get(constraint);
            return new UniqueConstraintException(ur);
        }
    }
    return exception;
}