03/04: Auto delete resources when delete choice in ChoiceTopiaDao
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 289ef818eb906830330351a2689afe4cbf98d3dd Author: Adrien <a.garandel@dralagen.fr> Date: Fri Jul 18 17:12:36 2014 +0200 Auto delete resources when delete choice in ChoiceTopiaDao --- .../pollen/persistence/entity/ChoiceTopiaDao.java | 23 +++++++++++ pollen-rest-api/src/main/resources/mapping | 2 +- .../chorem/pollen/services/bean/ChoiceBean.java | 4 ++ .../pollen/services/service/ChoiceService.java | 45 +++++++++++++--------- .../services/service/PollenResourceService.java | 16 ++++---- .../i18n/pollen-services_en_GB.properties | 1 + .../i18n/pollen-services_fr_FR.properties | 1 + 7 files changed, 64 insertions(+), 28 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 18206e2..da3a9e2 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 @@ -21,6 +21,8 @@ package org.chorem.pollen.persistence.entity; * #L% */ +import org.nuiton.topia.persistence.TopiaNoResultException; + import java.util.List; public class ChoiceTopiaDao extends AbstractChoiceTopiaDao<Choice> { @@ -33,4 +35,25 @@ public class ChoiceTopiaDao extends AbstractChoiceTopiaDao<Choice> { return choices; } + + @Override + public void delete(Choice entity) { + // remove Resource + if (entity.getChoiceType() == ChoiceType.RESOURCE) { + try { + PollenResourceTopiaDao dao = topiaDaoSupplier + .getDao(PollenResource.class, PollenResourceTopiaDao.class); + PollenResource resource = dao + .forEquals(PollenResource.PROPERTY_TOPIA_ID, entity.getChoiceValue()) + .findUnique(); + + dao.delete(resource); + + } catch (TopiaNoResultException e) { + e.printStackTrace(); + } + } + + super.delete(entity); + } } diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping index 07e4877..1d55eb5 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/bean/ChoiceBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChoiceBean.java index 8f2a5cc..5b2ffb4 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChoiceBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChoiceBean.java @@ -67,6 +67,10 @@ public class ChoiceBean extends PollenBean<Choice> { case TEXT: case DATE: + + setChoiceValue(entity.getChoiceValue()); + break; + case RESOURCE: setChoiceValue(entity.getChoiceValue()); 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 79c45bf..4eb39ad 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,12 +27,10 @@ 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; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; @@ -53,6 +51,11 @@ public class ChoiceService extends PollenServiceSupport { if (isNotPermitted(PermissionVerb.editChoice, input.getEntityId())) { input.setPermission(null); } + + if (input.getChoiceType() == ChoiceType.RESOURCE) { + input.setChoiceValue(getPollenResourceService().getReduceIdByTopiaId(input.getChoiceValue())); + } + return input; } }; @@ -101,7 +104,7 @@ public class ChoiceService extends PollenServiceSupport { // creator.setEmail(connectedUser.getEmail()); // } // -// ChoiceBean choiceBean = toBean(ChoiceBean.class, choiceBean ); +// ChoiceBean choiceBean = toBean(ChoiceBean.class, choiceBean, choiceBeanFunction); return choiceBean; } @@ -149,7 +152,7 @@ public class ChoiceService extends PollenServiceSupport { getNotificationService().onChoiceEdited(poll, result); - return toBean(ChoiceBean.class, result); + return toBean(ChoiceBean.class, result, choiceBeanFunction); } @@ -172,14 +175,6 @@ public class ChoiceService extends PollenServiceSupport { errors.failIfNotEmpty(); } - if (choice.getChoiceType() == ChoiceType.RESOURCE) { - PollenResourceService resourceService = getPollenResourceService(); - - String resourceId = resourceService.getTopiaIdByReduceId(choice.getChoiceValue()); - PollenResource resource = resourceService.getResource0(resourceId); - getPollenResourceDao().delete(resource); - } - getChoiceDao().delete(choice); commit(); @@ -243,11 +238,15 @@ public class ChoiceService extends PollenServiceSupport { case TEXT: case DATE: - case RESOURCE: toSave.setChoiceValue(choice.getChoiceValue()); break; + case RESOURCE: + + toSave.setChoiceValue(getPollenResourceService().getTopiaIdByReduceId(choice.getChoiceValue())); + break; + default: throw new UnsupportedOperationException("Unexpected value : " + toSave.getChoiceType()); @@ -326,13 +325,21 @@ public class ChoiceService extends PollenServiceSupport { break; case RESOURCE: - PollenResourceService resourceService = getPollenResourceService(); - PollenResource resource = resourceService.getResource0(resourceService.getTopiaIdByReduceId(choice.getChoiceValue())); - checkNotBlank(errors, - "choiceValue", - resource.getName(), - l(getLocale(), "pollen.error.resource.notExist")); + boolean hasResource = checkNotBlank(errors, + "choiceValue", + choice.getChoiceValue(), + l(getLocale(), "pollen.error.resource.empty")); + + if (hasResource) { + PollenResourceService resourceService = getPollenResourceService(); + PollenResource resource = resourceService.getResource0(resourceService.getTopiaIdByReduceId(choice.getChoiceValue())); + + checkNotBlank(errors, + "choiceValue", + resource.getName(), + l(getLocale(), "pollen.error.resource.notExist")); + } break; 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 742a6fa..379579a 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,17 +1,15 @@ 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.*; +import org.chorem.pollen.services.service.security.PollenUnauthorizedException; 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. @@ -64,14 +62,17 @@ public class PollenResourceService extends PollenServiceSupport implements Polle public void deleteResource (String resourceId) { checkNotNull(resourceId); - List<Choice> choices = getChoiceDao().forEquals(Choice.PROPERTY_CHOICE_TYPE, ChoiceType.RESOURCE).addEquals(Choice.PROPERTY_CHOICE_VALUE, getReduceId(resourceId)).findAll(); + boolean choiceExist = getChoiceDao() + .forEquals(Choice.PROPERTY_CHOICE_TYPE, ChoiceType.RESOURCE) + .addEquals(Choice.PROPERTY_CHOICE_VALUE, resourceId) + .exists(); - if (choices.size() == 0) { // Resource not used in choice + if (!choiceExist) { // Resource not used in choice PollenResource resource = getResource0(resourceId); getPollenResourceDao().delete(resource); } else { - throw new UnauthorizedException("PollenResource is used"); + throw new PollenUnauthorizedException("PollenResource is used"); } commit(); @@ -80,7 +81,6 @@ public class PollenResourceService extends PollenServiceSupport implements Polle protected PollenResource getResource0(String resourceId) { PollenResource resource = getPollenResourceDao().forTopiaIdEquals(resourceId).findUnique(); - return resource; } @@ -122,7 +122,7 @@ public class PollenResourceService extends PollenServiceSupport implements Polle return resourceId.getEntityId(); } - protected String getReduceId(String topiaId) { + protected String getReduceIdByTopiaId(String topiaId) { PollenEntityId<PollenResource> resourceId = PollenEntityId.newId(PollenResource.class); resourceId.setEntityId(topiaId); TopiaIdFactory topiaIdFactory = serviceContext.getTopiaApplicationContext().getTopiaIdFactory(); diff --git a/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties b/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties index 4e60c30..be4953d 100644 --- a/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties +++ b/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties @@ -40,6 +40,7 @@ pollen.error.poll.voteCountingType.mandatory=vote counting type is mandatory pollen.error.poll.voteVisibility.mandatory=vote visibility is mandatory pollen.error.poll.voterList.mandatory.for.groupedPoll=At least one voter list ins mandatory for a grouped poll pollen.error.poll.voterList.mismatch.freePoll= +pollen.error.resource.empty=No resource sent pollen.error.resource.notExist=Image don't exist pollen.error.user.mailEmpty=email can not be empty pollen.error.user.mailExist=email already exists diff --git a/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties b/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties index 93bdce1..137807f 100644 --- a/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties +++ b/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties @@ -39,6 +39,7 @@ pollen.error.poll.voteCountingType.mandatory=le type de vote est obligatoire pollen.error.poll.voteVisibility.mandatory=la visiblité des votes est obligatoire pollen.error.poll.voterList.mandatory.for.groupedPoll=Au moins une liste de votant est obligatoire pour un sondage groupé pollen.error.poll.voterList.mismatch.freePoll=Liste de votants impossible pour un sondage libre +pollen.error.resource.empty=Aucune resource envoyé pollen.error.resource.notExist=L'image n'existe pas sur le serveur pollen.error.user.mailEmpty=Courriel ne peut pas être vide pollen.error.user.mailExist=Courriel existe déjà -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm