02/02: choice service : new check when choiceType equal 'IMAGE'
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 77cdc92bdb9b7f884640e017b64b8ddc15ed3143 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Jul 17 14:58:57 2014 +0200 choice service : new check when choiceType equal 'IMAGE' --- .../pollen/services/service/ChoiceService.java | 52 ++++++++++++++-------- .../services/service/PollenResourceService.java | 14 ++++-- .../i18n/pollen-services_en_GB.properties | 2 + .../i18n/pollen-services_fr_FR.properties | 2 + .../src/main/webapp/js/controllers/pollCtrl.js | 3 ++ pollen-ui-angular/src/main/webapp/js/directives.js | 5 ++- 6 files changed, 54 insertions(+), 24 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 db64ec1..90a2dd2 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 @@ -33,6 +33,7 @@ import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.service.security.PermissionVerb; import org.nuiton.topia.persistence.TopiaIdFactory; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; @@ -174,12 +175,7 @@ public class ChoiceService extends PollenServiceSupport { if (choice.getChoiceType() == ChoiceType.IMAGE) { - PollenEntityId<PollenResource> resourceId = PollenEntityId.newId(PollenResource.class); - resourceId.setReducedId(choice.getChoiceValue()); - TopiaIdFactory topiaIdFactory = serviceContext.getTopiaApplicationContext().getTopiaIdFactory(); - resourceId.decode(topiaIdFactory); - - PollenResource resource = getResourceService().getResource0(resourceId.getEntityId()); + PollenResource resource = getResourceService().getResourceByShortId(choice.getChoiceValue()); getPollenResourceDao().delete(resource); } @@ -317,19 +313,16 @@ public class ChoiceService extends PollenServiceSupport { break; case DATE: - Date choiceDate = new Date(Long.parseLong(choice.getChoiceValue())); - - boolean dateNotBlank; - if (choiceDate == null) { - dateNotBlank = checkNotBlank(errors, "choiceValue", null, l(getLocale(), "pollen.error.choice.choiceDateEmpty")); - } - else { - dateNotBlank = checkNotBlank(errors, - "choiceValue", - String.valueOf(choiceDate), - l(getLocale(), "pollen.error.choice.choiceDateEmpty")); + Date choiceDate = null; + if (choice.getChoiceValue() != null) { + choiceDate = new Date(Long.parseLong(choice.getChoiceValue())); } + boolean dateNotBlank = checkNotBlank(errors, + "choiceValue", + String.valueOf(choiceDate), + l(getLocale(), "pollen.error.choice.choiceDateEmpty")); + if (dateNotBlank) { boolean dateAdded = choiceNames.add(String.valueOf(choiceDate.getTime())); check(errors, "choiceValue", dateAdded, l(getLocale(), "pollen.error.choice.choiceDateExist")); @@ -338,7 +331,30 @@ public class ChoiceService extends PollenServiceSupport { break; case IMAGE: - // TODO : verify picture + + PollenResource resource = getResourceService().getResourceByShortId(choice.getChoiceValue()); + + boolean resourceExist = checkNotBlank(errors, + "choiceValue", + resource.getName(), + l(getLocale(), "pollen.error.image.notExist")); + + if (resourceExist) { + List<String> contentTypeAccepted = new ArrayList<>(); + contentTypeAccepted.add("image/bmp"); + contentTypeAccepted.add("image/gif"); + contentTypeAccepted.add("image/jpeg"); + contentTypeAccepted.add("image/png"); + contentTypeAccepted.add("image/vnd.microsoft.icon"); + + boolean isImage = contentTypeAccepted.contains(resource.getContentType()); + + check(errors, + "choiceValue", + isImage, + l(getLocale(), "pollen.error.image.badFormat")); + } + 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 0fae9bb..c4f296e 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 @@ -2,10 +2,8 @@ package org.chorem.pollen.services.service; import org.chorem.pollen.persistence.entity.PollenResource; import org.chorem.pollen.services.PollenService; -import org.chorem.pollen.services.bean.PollenEntityRef; -import org.chorem.pollen.services.bean.ResourceFileBean; -import org.chorem.pollen.services.bean.ResourceMetaBean; -import org.chorem.pollen.services.bean.ResourceStreamBean; +import org.chorem.pollen.services.bean.*; +import org.nuiton.topia.persistence.TopiaIdFactory; import java.io.IOException; import java.sql.SQLException; @@ -103,4 +101,12 @@ public class PollenResourceService extends PollenServiceSupport implements Polle return toSave; } + public PollenResource getResourceByShortId(String shortId) { + PollenEntityId<PollenResource> resourceId = PollenEntityId.newId(PollenResource.class); + resourceId.setReducedId(shortId); + TopiaIdFactory topiaIdFactory = serviceContext.getTopiaApplicationContext().getTopiaIdFactory(); + resourceId.decode(topiaIdFactory); + + return getResource0(resourceId.getEntityId()); + } } 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 2ec870f..ba4905e 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 @@ -29,6 +29,8 @@ pollen.error.favoriteListMember.email.empty=member email can not be empty pollen.error.favoriteListMember.email.invalid=member email is not valid pollen.error.favoriteListMember.name.already.used=member name already used pollen.error.favoriteListMember.name.empty=member name can not be empty +pollen.error.image.badFormat=Your Image is in bad format +pollen.error.image.notExist=Image don't exist pollen.error.poll.choice.mandatory=At least a choice is mandatory pollen.error.poll.commentVisibility.mandatory=comment visiblity is mandatory pollen.error.poll.mismatch.freePoll=cant' have a voter list for a free poll 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 2685800..b37f11a 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 @@ -29,6 +29,8 @@ pollen.error.favoriteListMember.email.empty=Le courriel est obligatoire pollen.error.favoriteListMember.email.invalid=Le courriel du membre est invalide pollen.error.favoriteListMember.name.already.used=Le nom du membre est déjà utilisé dans cette liste pollen.error.favoriteListMember.name.empty=Le nom du membre est obligatoire +pollen.error.image.badFormat=L'image n'est pas du bon format +pollen.error.image.notExist=L'image n'existe pas sur le serveur pollen.error.poll.choice.mandatory=Au moins un choix est nécessaire pollen.error.poll.commentVisibility.mandatory=la visibilité des commentaires est obligatoire pollen.error.poll.pollType.mandatory=le type de sondage est obligatoire diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js index a59d583..95d2ed9 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js @@ -581,6 +581,9 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr if (angular.isDefined(error.data['choice['+index+'].choiceValue'])) { choice.restError = {choiceValue:error.data['choice['+index+'].choiceValue']}; } + else { + delete choice.restError; + } }); if (angular.isDefined(error.data.choice)) { diff --git a/pollen-ui-angular/src/main/webapp/js/directives.js b/pollen-ui-angular/src/main/webapp/js/directives.js index 478f369..d1c4c01 100644 --- a/pollen-ui-angular/src/main/webapp/js/directives.js +++ b/pollen-ui-angular/src/main/webapp/js/directives.js @@ -420,13 +420,14 @@ angular.module('pollenDirective', []) reader.onload = function (loadEvent) { var formData = new FormData(element[0].firstChild); scope.$apply(function () { - scope.ngModel = { meta: changeEvent.target.files[0], data: loadEvent.target.result}; + scope.ngModel = { meta: changeEvent.target.files[0] }; }); PollenResource.upload(formData, function (response) { scope.ngModel.meta.id = response.id; + scope.ngModel.id = response.id; + scope.ngModel.data = conf.restURL+'/resources/'+response.id; }); - } reader.readAsDataURL( changeEvent.target.files[0] ); }); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm