01/04: delete resource : check if not used
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 44c24dc6adc476911d1f0b0eb80a25b4c103006e Author: Adrien <a.garandel@dralagen.fr> Date: Fri Jul 18 15:02:41 2014 +0200 delete resource : check if not used --- .../pollen/services/service/ChoiceService.java | 10 ++++--- .../pollen/services/service/PollService.java | 3 ++ .../services/service/PollenResourceService.java | 32 +++++++++++++++++++--- .../services/service/PollenServiceSupport.java | 2 +- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java index 268a212..06ab67e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java @@ -27,6 +27,7 @@ import com.google.common.base.Function; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.persistence.entity.*; +import org.chorem.pollen.services.PollenService; import org.chorem.pollen.services.bean.ChoiceBean; import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.service.security.PermissionVerb; @@ -172,9 +173,10 @@ public class ChoiceService extends PollenServiceSupport { } if (choice.getChoiceType() == ChoiceType.IMAGE) { + PollenResourceService resourceService = getPollenResourceService(); - PollenResource resource = getResourceService().getResourceByShortId(choice.getChoiceValue()); - + String resourceId = resourceService.getTopiaIdByReduceId(choice.getChoiceValue()); + PollenResource resource = resourceService.getResource0(resourceId); getPollenResourceDao().delete(resource); } @@ -324,8 +326,8 @@ public class ChoiceService extends PollenServiceSupport { break; case IMAGE: - - PollenResource resource = getResourceService().getResourceByShortId(choice.getChoiceValue()); + PollenResourceService resourceService = getPollenResourceService(); + PollenResource resource = resourceService.getResource0(resourceService.getTopiaIdByReduceId(choice.getChoiceValue())); boolean resourceExist = checkNotBlank(errors, "choiceValue", diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index 6261e08..77baf7e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -204,6 +204,9 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); getPollDao().delete(poll); + + //TODO agarandel 18/07/14 : Check resource without choice + commit(); getNotificationService().onPollDeleted(poll); 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 c4f296e..9a67b0e 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 @@ -1,5 +1,8 @@ package org.chorem.pollen.services.service; +import org.apache.shiro.authz.UnauthorizedException; +import org.chorem.pollen.persistence.entity.Choice; +import org.chorem.pollen.persistence.entity.ChoiceType; import org.chorem.pollen.persistence.entity.PollenResource; import org.chorem.pollen.services.PollenService; import org.chorem.pollen.services.bean.*; @@ -7,6 +10,8 @@ import org.nuiton.topia.persistence.TopiaIdFactory; import java.io.IOException; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; /** * Created on 10/07/14. @@ -59,9 +64,19 @@ public class PollenResourceService extends PollenServiceSupport implements Polle public void deleteResource (String resourceId) { checkNotNull(resourceId); - PollenResource resource = getResource0(resourceId); + List<ChoiceType> choiceTypesResource = new ArrayList<>(); + choiceTypesResource.add(ChoiceType.IMAGE); + + List<Choice> choices = getChoiceDao().forIn(Choice.PROPERTY_CHOICE_TYPE, choiceTypesResource).addEquals(Choice.PROPERTY_CHOICE_VALUE, getReduceId(resourceId)).findAll(); + + if (choices.size() == 0) { // Resource not used in choice + PollenResource resource = getResource0(resourceId); + getPollenResourceDao().delete(resource); + } + else { + throw new UnauthorizedException("PollenResource is used"); + } - getPollenResourceDao().delete(resource); commit(); } @@ -101,12 +116,21 @@ public class PollenResourceService extends PollenServiceSupport implements Polle return toSave; } - public PollenResource getResourceByShortId(String shortId) { + protected String getTopiaIdByReduceId(String shortId) { PollenEntityId<PollenResource> resourceId = PollenEntityId.newId(PollenResource.class); resourceId.setReducedId(shortId); TopiaIdFactory topiaIdFactory = serviceContext.getTopiaApplicationContext().getTopiaIdFactory(); resourceId.decode(topiaIdFactory); - return getResource0(resourceId.getEntityId()); + return resourceId.getEntityId(); + } + + protected String getReduceId(String topiaId) { + PollenEntityId<PollenResource> resourceId = PollenEntityId.newId(PollenResource.class); + resourceId.setEntityId(topiaId); + TopiaIdFactory topiaIdFactory = serviceContext.getTopiaApplicationContext().getTopiaIdFactory(); + resourceId.encode(topiaIdFactory); + + return resourceId.getReducedId(); } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java index 71c2aca..97fb35f 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java @@ -123,7 +123,7 @@ public abstract class PollenServiceSupport implements PollenService { return newService(SecurityService.class); } - protected PollenResourceService getResourceService() { + protected PollenResourceService getPollenResourceService() { return newService(PollenResourceService.class); } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm