Added ConstraintViolationException for saveEdge

This commit is contained in:
Artem Babak 2020-12-15 11:06:39 +02:00
parent 720c89f109
commit 6cdb549704

View File

@ -25,6 +25,7 @@ import org.apache.http.HttpHost;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.hibernate.exception.ConstraintViolationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.Cache;
@ -172,6 +173,21 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
public Edge saveEdge(Edge edge) {
log.trace("Executing saveEdge [{}]", edge);
edgeValidator.validate(edge, Edge::getTenantId);
Edge savedEdge;
if (!sqlDatabaseUsed) {
savedEdge = edgeDao.save(edge.getTenantId(), edge);
} else {
try {
savedEdge = edgeDao.save(edge.getTenantId(), edge);
} catch (Exception t) {
ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("edge_name_unq_key")) {
throw new DataValidationException("Edge with such name already exists!");
} else {
throw t;
}
}
}
return edgeDao.save(edge.getTenantId(), edge);
}