This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See http://git.chorem.org/pollen.git commit b74be2055671225d698e0c37f29a0f5b4bb5c35a Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Jul 24 17:52:27 2014 +0200 Improve delete resource --- .../pollen/persistence/entity/ChoiceTopiaDao.java | 19 +++++----- .../persistence/entity/PollenResourceTopiaDao.java | 41 ++++++++++++++++++++++ pollen-rest-api/src/main/resources/mapping | 2 +- .../services/service/PollenResourceService.java | 14 ++------ 4 files changed, 55 insertions(+), 21 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/ChoiceTopiaDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/ChoiceTopiaDao.java index c0548ed..0144bce 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/ChoiceTopiaDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/ChoiceTopiaDao.java @@ -39,14 +39,17 @@ public class ChoiceTopiaDao extends AbstractChoiceTopiaDao<Choice> { if (entity.getChoiceType() == ChoiceType.RESOURCE) { - // remove Resource - PollenResourceTopiaDao dao = topiaDaoSupplier - .getDao(PollenResource.class, PollenResourceTopiaDao.class); - PollenResource resource = dao - .forEquals(PollenResource.PROPERTY_TOPIA_ID, entity.getChoiceValue()) - .findUnique(); - - dao.delete(resource); + { // --- remove Resource --- // + + PollenResourceTopiaDao dao = topiaDaoSupplier + .getDao(PollenResource.class, PollenResourceTopiaDao.class); + PollenResource resource = dao + .forEquals(PollenResource.PROPERTY_TOPIA_ID, entity.getChoiceValue()) + .findUnique(); + + dao.delete(resource, entity.getTopiaId()); + + } } diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenResourceTopiaDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenResourceTopiaDao.java new file mode 100644 index 0000000..a90cf09 --- /dev/null +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenResourceTopiaDao.java @@ -0,0 +1,41 @@ +package org.chorem.pollen.persistence.entity; + +/** + * Created on 24/07/14. + * + * @author dralagen + */ +public class PollenResourceTopiaDao extends AbstractPollenResourceTopiaDao<PollenResource> { + + @Override + public void delete(PollenResource entity) { + + // check if resource is used + ChoiceTopiaDao dao = topiaDaoSupplier + .getDao(Choice.class, ChoiceTopiaDao.class); + + boolean isUsed = dao.forEquals(Choice.PROPERTY_CHOICE_VALUE, entity.getTopiaId()) + .addEquals(Choice.PROPERTY_CHOICE_TYPE, ChoiceType.RESOURCE) + .exists(); + + if (!isUsed) { + super.delete(entity); + } + } + + public void delete(PollenResource entity, String choiceId) { + + ChoiceTopiaDao dao = topiaDaoSupplier + .getDao(Choice.class, ChoiceTopiaDao.class); + + boolean isUsed = dao.forEquals(Choice.PROPERTY_CHOICE_TYPE, ChoiceType.RESOURCE) + .addEquals(Choice.PROPERTY_CHOICE_VALUE, entity.getTopiaId()) + .addNotEquals(Choice.PROPERTY_TOPIA_ID, choiceId) + .exists(); + + if (!isUsed) { + super.delete(entity); + } + + } +} diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping index 1d55eb5..07e4877 100644 --- a/pollen-rest-api/src/main/resources/mapping +++ b/pollen-rest-api/src/main/resources/mapping @@ -121,7 +121,7 @@ GET /v1/resources/{resourceId}/meta PollenResourceApi.getMetaReso GET /v1/resources/{resourceId}/preview PollenResourceApi.getPreviewResource POST /v1/resources PollenResourceApi.createResource POST /v1/resources/{resourceId} PollenResourceApi.editResource -# DELETE /v1/resources/{resourceId} PollenResourceApi.deleteResource +DELETE /v1/resources/{resourceId} PollenResourceApi.deleteResource # PollenUserApi diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenResourceService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenResourceService.java index 379579a..4375052 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenResourceService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenResourceService.java @@ -62,18 +62,8 @@ public class PollenResourceService extends PollenServiceSupport implements Polle public void deleteResource (String resourceId) { checkNotNull(resourceId); - boolean choiceExist = getChoiceDao() - .forEquals(Choice.PROPERTY_CHOICE_TYPE, ChoiceType.RESOURCE) - .addEquals(Choice.PROPERTY_CHOICE_VALUE, resourceId) - .exists(); - - if (!choiceExist) { // Resource not used in choice - PollenResource resource = getResource0(resourceId); - getPollenResourceDao().delete(resource); - } - else { - throw new PollenUnauthorizedException("PollenResource is used"); - } + PollenResource resource = getResource0(resourceId); + getPollenResourceDao().delete(resource); commit(); } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.