branch feature/58-limitation-des-votants updated (edc5229f -> e83acf6a)
This is an automated email from the git hooks/post-receive script. New change to branch feature/58-limitation-des-votants in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git omits edc5229f Limitations du nombre votants (ref #58), Déplacement des méthodes de transformation des entités en bean dans les services adds 9913fcb0 update gitlab ci for release adds d9f7d087 update gitlab ci for release adds 9366dcba update gitlab ci for release adds 26842f63 update gitlab ci for release adds 92897a30 update gitlab ci for release adds edaa1be6 fixes #150 bouchage des trous de secu adds 72199763 Maj des dépendances et entêtes en vue de la release. adds 66b90103 update gitlab ci for release new e83acf6a Limitations du nombre votants (ref #58), Déplacement des méthodes de transformation des entités en bean dans les services This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (edc5229f) \ N -- N -- N refs/heads/feature/58-limitation-des-votants (e83acf6a) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit e83acf6a4f2d007548997cd903c49e6c8d7f7bde Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 26 11:21:41 2017 +0200 Limitations du nombre votants (ref #58), Déplacement des méthodes de transformation des entités en bean dans les services Summary of changes: .gitlab-ci.yml | 69 +++++++++++++++++ .../org/chorem/pollen/persistence/DaoUtils.java | 21 ++++++ .../persistence/PollenFlywayServiceImpl.java | 21 ++++++ .../entity/ChildFavoriteListTopiaDao.java | 23 +++++- .../entity/FavoriteListMemberTopiaDao.java | 21 ++++++ .../pollen/persistence/entity/PollenUserImpl.java | 21 ++++++ .../pollen/persistence/entity/ReportResume.java | 21 ++++++ .../pollen/persistence/entity/ReportTopiaDao.java | 21 ++++++ .../persistence/entity/UserCredentialTopiaDao.java | 27 ++++++- .../entity/VoterListMemberTopiaDao.java | 21 ++++++ pollen-rest-api/pom.xml | 5 ++ pollen-rest-api/src/license/THIRD-PARTY.properties | 28 ++++--- .../pollen/rest/api/PollenRestApiApplication.java | 21 ++++++ .../pollen/rest/api/beans/ChangePasswordBean.java | 23 +++++- .../pollen/rest/api/beans/PollCreateBean.java | 21 ++++++ .../pollen/rest/api/beans/Resource64Bean.java | 21 ++++++ .../pollen/rest/api/beans/VoterListSaveBean.java | 21 ++++++ .../pollen/rest/api/converter/JacksonConfig.java | 21 ++++++ .../api/converter/PollenConverterProvider.java | 21 ++++++ .../api/converter/PollenEntityIdDeserializer.java | 21 ++++++ .../api/converter/PollenEntityIdSerializer.java | 21 ++++++ .../api/converter/PollenEntityRefDeserializer.java | 21 ++++++ .../api/converter/PollenEntityRefSerializer.java | 21 ++++++ .../FavoriteListImportExceptionMapper.java | 21 ++++++ .../InvalidEntityLinkExceptionMapper.java | 21 ++++++ .../InvalidFormExceptionMapper.java | 21 ++++++ .../PollenAbstractExceptionMapper.java | 21 ++++++ .../PollenAuthenticationExceptionMapper.java | 21 ++++++ .../PollenEmailNotValidatedExceptionMapper.java | 21 ++++++ ...rProviderAccountAlreadyUsedExceptionMapper.java | 21 ++++++ ...InvalidEmailActivationTokenExceptionMapper.java | 21 ++++++ .../PollenInvalidPermissionExceptionMapper.java | 21 ++++++ .../PollenInvalidSessionTokenExceptionMapper.java | 21 ++++++ .../PollenUnauthorizedExceptionMapper.java | 21 ++++++ .../PollenUserBannedExceptionMapper.java | 21 ++++++ .../TopiaNoResultExceptionMapper.java | 21 ++++++ .../org/chorem/pollen/rest/api/v1/ApiUtils.java | 21 ++++++ .../org/chorem/pollen/rest/api/v1/FeedbackApi.java | 21 ++++++ .../java/org/chorem/pollen/rest/api/v1/GtuApi.java | 21 ++++++ .../pollen/rest/api/v1/PollenResourceApi.java | 16 ---- .../chorem/pollen/rest/api/v1/PollenUserApi.java | 19 ++--- .../chorem/pollen/rest/api/v1/VoterListApi.java | 13 ---- .../chorem/pollen/services/PollenUIContext.java | 21 ++++++ .../java/org/chorem/pollen/services/UnitHuman.java | 21 ++++++ .../services/bean/ChildFavoriteListBean.java | 21 ++++++ .../chorem/pollen/services/bean/FeedbackBean.java | 21 ++++++ .../chorem/pollen/services/bean/GtuMetaBean.java | 21 ++++++ .../pollen/services/bean/LoginProviderBean.java | 21 ++++++ .../chorem/pollen/services/bean/ReportBean.java | 21 ++++++ .../chorem/pollen/services/bean/ReportLevel.java | 21 ++++++ .../pollen/services/bean/ReportResumeBean.java | 21 ++++++ .../pollen/services/bean/UserCredentialBean.java | 21 ++++++ .../bean/export/ChildFavoriteListExport.java | 21 ++++++ .../pollen/services/bean/export/ExportBean.java | 21 ++++++ .../services/bean/export/FavoriteListsExport.java | 21 ++++++ .../Coombs/CoombsDetailResultBean.java | 21 ++++++ .../bean/voteCounting/Coombs/CoombsRoundBean.java | 21 ++++++ .../voteCounting/Coombs/CoombsRoundChoiceBean.java | 21 ++++++ .../InstantRunoffDetailResultBean.java | 21 ++++++ .../InstantRunoff/InstantRunoffRoundBean.java | 21 ++++++ .../InstantRunoffRoundChoiceBean.java | 21 ++++++ .../voteCounting/VoteCountingDetailResultBean.java | 21 ++++++ .../voteCounting/borda/BordaChoiceRankBean.java | 21 ++++++ .../voteCounting/borda/BordaDetailResultBean.java | 21 ++++++ .../condorcet/CondorcetBattleBean.java | 21 ++++++ .../condorcet/CondorcetDetailResultBean.java | 21 ++++++ .../pollen/services/job/AbstractPollenJob.java | 21 ++++++ .../pollen/services/job/SendEmailInErrorsJob.java | 21 ++++++ .../services/job/SendPollEndReminderJob.java | 21 ++++++ .../pollen/services/service/ChoiceService.java | 1 + .../services/service/FavoriteListService.java | 77 +++++++------------ .../pollen/services/service/FeedService.java | 21 ++++++ .../pollen/services/service/FeedbackService.java | 21 ++++++ .../chorem/pollen/services/service/GtuService.java | 28 ++++++- .../pollen/services/service/PollService.java | 16 +--- .../services/service/PollenResourceService.java | 19 +---- .../services/service/PollenServiceSupport.java | 5 ++ .../pollen/services/service/PollenUserService.java | 16 ++-- .../pollen/services/service/ReportService.java | 21 ++++++ .../pollen/services/service/SocialAuthService.java | 47 +++++++----- .../services/service/VoteCountingService.java | 1 + .../services/service/mail/AbstractReportEmail.java | 21 ++++++ .../service/mail/AbstractReportForAdminEmail.java | 21 ++++++ .../services/service/mail/ChoiceReportEmail.java | 21 ++++++ .../service/mail/ChoiceReportForAdminEmail.java | 21 ++++++ .../services/service/mail/CommentReportEmail.java | 21 ++++++ .../service/mail/CommentReportForAdminEmail.java | 21 ++++++ .../services/service/mail/FeedbackEmail.java | 21 ++++++ .../services/service/mail/PollReportEmail.java | 21 ++++++ .../service/mail/PollReportForAdminEmail.java | 21 ++++++ ...EmailOrProviderAccountAlreadyUsedException.java | 21 ++++++ .../src/main/resources/oauth_consumer.properties | 22 +++++- .../pollen/services/service/PollServiceTest.java | 2 +- pollen-ui-riot-js/package.json | 2 +- .../jetty-context.xml => pollen-ui-riot-js/pom.xml | 23 ++++-- pollen-ui-riot-js/src/main/web/conf.js | 20 +++++ pollen-ui-riot-js/src/main/web/css/blaze.css | 20 +++++ .../src/main/web/css/custom-code-lutin.css | 20 +++++ pollen-ui-riot-js/src/main/web/css/custom.css | 20 +++++ pollen-ui-riot-js/src/main/web/css/print.css | 22 +++++- .../src/main/web/help/voteCountingTypes-en.html | 22 +++++- .../src/main/web/help/voteCountingTypes-fr.html | 22 +++++- pollen-ui-riot-js/src/main/web/home/en.html | 20 +++++ pollen-ui-riot-js/src/main/web/home/fr.html | 20 +++++ pollen-ui-riot-js/src/main/web/home/style.css | 20 +++++ pollen-ui-riot-js/src/main/web/homeCL/en.html | 20 +++++ pollen-ui-riot-js/src/main/web/homeCL/fr.html | 20 +++++ pollen-ui-riot-js/src/main/web/homeCL/offers.html | 20 +++++ pollen-ui-riot-js/src/main/web/homeCL/style.css | 20 +++++ pollen-ui-riot-js/src/main/web/js/AuthService.js | 2 +- pollen-ui-riot-js/src/main/web/js/Logger.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/PageTracker.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/Pagination.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/Poll.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/PollenBus.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/UIHelper.js | 20 +++++ pollen-ui-riot-js/src/main/web/js/UserService.js | 27 ++++--- .../src/main/web/js/VoterListService.js | 20 +++++ .../src/main/web/tag/HeaderI18n.tag.html | 36 ++++----- pollen-ui-riot-js/src/main/web/tag/Home.tag.html | 36 ++++----- .../src/main/web/tag/Pagination.tag.html | 20 +++++ pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html | 38 +++++----- .../src/main/web/tag/PollenFooter.tag.html | 36 ++++----- .../src/main/web/tag/PollenHeader.tag.html | 36 ++++----- .../src/main/web/tag/PollenMessageManager.tag.html | 20 +++++ .../src/main/web/tag/PollenWaiter.tag.html | 20 +++++ .../src/main/web/tag/Privacy.tag.html | 20 +++++ pollen-ui-riot-js/src/main/web/tag/QrCode.tag.html | 20 +++++ .../src/main/web/tag/SignCheck.tag.html | 36 ++++----- pollen-ui-riot-js/src/main/web/tag/SignIn.tag.html | 36 ++++----- pollen-ui-riot-js/src/main/web/tag/SignUp.tag.html | 36 ++++----- .../src/main/web/tag/UserProfile.tag.html | 24 +++++- .../src/main/web/tag/admin/GtuCard.tag.html | 20 +++++ .../src/main/web/tag/admin/Gtus.tag.html | 20 +++++ .../src/main/web/tag/admin/LoginProviders.tag.html | 20 +++++ .../src/main/web/tag/admin/UserCard.tag.html | 20 +++++ .../src/main/web/tag/admin/UserEditModal.tag.html | 20 +++++ .../src/main/web/tag/admin/Users.tag.html | 20 +++++ .../src/main/web/tag/components/Card.tag.html | 20 +++++ .../src/main/web/tag/components/Checkbox.tag.html | 22 +++++- .../web/tag/components/ContextualMenu.tag.html | 20 +++++ .../main/web/tag/components/GtuValidation.tag.html | 20 +++++ .../main/web/tag/components/HumanInput.tag.html | 20 +++++ .../src/main/web/tag/components/LazyLoad.tag.html | 20 +++++ .../main/web/tag/components/LetterAvatar.tag.html | 20 +++++ .../main/web/tag/components/LoadingCard.tag.html | 20 +++++ .../web/tag/components/MultiLineLabel.tag.html | 22 +++++- .../src/main/web/tag/components/Search.tag.html | 20 +++++ .../main/web/tag/components/date-picker.tag.html | 20 +++++ .../web/tag/components/date-time-picker.tag.html | 20 +++++ .../main/web/tag/components/time-picker.tag.html | 20 +++++ .../web/tag/favoriteList/ChildListCard.tag.html | 20 +++++ .../tag/favoriteList/ChildListEditModal.tag.html | 20 +++++ .../web/tag/favoriteList/FavoriteList.tag.html | 20 +++++ .../web/tag/favoriteList/FavoriteListCard.tag.html | 20 +++++ .../favoriteList/FavoriteListEditModal.tag.html | 20 +++++ .../web/tag/favoriteList/FavoriteLists.tag.html | 20 +++++ .../web/tag/favoriteList/ImportCsvModal.tag.html | 20 +++++ .../web/tag/favoriteList/ImportLdapModal.tag.html | 20 +++++ .../main/web/tag/favoriteList/MemberCard.tag.html | 20 +++++ .../web/tag/favoriteList/MemberEditModal.tag.html | 20 +++++ .../src/main/web/tag/poll/Choice.tag.html | 20 +++++ .../src/main/web/tag/poll/ChoiceView.tag.html | 20 +++++ .../src/main/web/tag/poll/Choices.tag.html | 20 +++++ .../src/main/web/tag/poll/Comments.tag.html | 20 +++++ .../src/main/web/tag/poll/Description.tag.html | 36 ++++----- .../src/main/web/tag/poll/EditPoll.tag.html | 36 ++++----- .../src/main/web/tag/poll/Podium.tag.html | 20 +++++ .../src/main/web/tag/poll/Poll.tag.html | 20 +++++ .../src/main/web/tag/poll/PollCard.tag.html | 20 +++++ .../src/main/web/tag/poll/Polls.tag.html | 20 +++++ .../src/main/web/tag/poll/Report.tag.html | 20 +++++ .../src/main/web/tag/poll/Results.tag.html | 20 +++++ .../src/main/web/tag/poll/Settings.tag.html | 36 ++++----- .../src/main/web/tag/poll/Summary.tag.html | 20 +++++ .../src/main/web/tag/poll/Votes.tag.html | 20 +++++ .../src/main/web/tag/popup/ConfirmPopup.tag.html | 20 +++++ .../src/main/web/tag/popup/FeedbackModal.tag.html | 20 +++++ .../src/main/web/tag/popup/GtuChangeModal.tag.html | 36 ++++----- .../main/web/tag/popup/InformationPopup.tag.html | 20 +++++ .../src/main/web/tag/popup/Modal.tag.html | 20 +++++ .../src/main/web/tag/popup/NewPassword.tag.html | 36 ++++----- .../src/main/web/tag/popup/QrCodeButton.tag.html | 20 +++++ .../main/web/tag/popup/ResendValidation.tag.html | 36 ++++----- .../voteCountingType/BordaDetailResult.tag.html | 20 +++++ .../CondorcetDetailResult.tag.html | 20 +++++ .../voteCountingType/CoombsDetailResult.tag.html | 20 +++++ .../InstantRunoffDetailResult.tag.html | 20 +++++ .../tag/voterList/ImportFavoritListModal.tag.html | 20 +++++ .../src/main/web/tag/voterList/VoterList.tag.html | 20 +++++ .../main/web/tag/voterList/VoterListCard.tag.html | 20 +++++ .../web/tag/voterList/VoterListEditModal.tag.html | 20 +++++ .../web/tag/voterList/VoterListMemberCard.tag.html | 20 +++++ .../voterList/VoterListMemberEditModal.tag.html | 20 +++++ .../model/VoteCountingDetailResult.java | 21 ++++++ .../pollen/votecounting/BordaChoiceRank.java | 21 ++++++ .../pollen/votecounting/BordaDetailResult.java | 21 ++++++ .../pollen/votecounting/CondorcetBattle.java | 21 ++++++ .../pollen/votecounting/CondorcetDetailResult.java | 21 ++++++ .../pollen/votecounting/CoombsDetailResult.java | 21 ++++++ .../chorem/pollen/votecounting/CoombsRound.java | 21 ++++++ .../pollen/votecounting/CoombsRoundChoice.java | 21 ++++++ .../votecounting/InstantRunoffDetailResult.java | 21 ++++++ .../pollen/votecounting/InstantRunoffRound.java | 21 ++++++ .../votecounting/InstantRunoffRoundChoice.java | 21 ++++++ pom.xml | 86 +++++++++++++++------- 206 files changed, 4076 insertions(+), 465 deletions(-) copy pollen-rest-api/src/jetty/jetty-context.xml => pollen-ui-riot-js/pom.xml (58%) -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/58-limitation-des-votants in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit e83acf6a4f2d007548997cd903c49e6c8d7f7bde Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 26 11:21:41 2017 +0200 Limitations du nombre votants (ref #58), Déplacement des méthodes de transformation des entités en bean dans les services --- .../pollen/persistence/entity/VoteToChoices.java | 15 +- .../db/migration/h2/V3_1_0_1__add_premium.sql | 5 + .../migration/postgresql/V3_1_0_1__add_premium.sql | 5 + pollen-persistence/src/main/xmi/pollen.properties | 2 +- pollen-persistence/src/main/xmi/pollen.zargo | Bin 28355 -> 28471 bytes .../org/chorem/pollen/rest/api/AuthApiTest.java | 8 +- .../chorem/pollen/rest/api/PollenUserApiTest.java | 2 +- pollen-services/src/main/config/PollenServices.ini | 8 +- .../services/bean/ChildFavoriteListBean.java | 23 --- .../chorem/pollen/services/bean/ChoiceBean.java | 29 ---- .../chorem/pollen/services/bean/CommentBean.java | 44 ------ .../pollen/services/bean/FavoriteListBean.java | 20 --- .../services/bean/FavoriteListMemberBean.java | 24 ---- .../pollen/services/bean/LoginProviderBean.java | 23 --- .../org/chorem/pollen/services/bean/PollBean.java | 129 ++--------------- .../chorem/pollen/services/bean/PollenBean.java | 4 - .../chorem/pollen/services/bean/PollenBeans.java | 49 +------ .../pollen/services/bean/PollenUserBean.java | 63 +++----- .../chorem/pollen/services/bean/ReportBean.java | 21 --- .../pollen/services/bean/ResourceFileBean.java | 31 ---- .../pollen/services/bean/ResourceMetaBean.java | 26 ---- .../pollen/services/bean/ResourceStreamBean.java | 36 ----- .../pollen/services/bean/UserCredentialBean.java | 21 +-- .../org/chorem/pollen/services/bean/VoteBean.java | 72 +--------- .../pollen/services/bean/VoteToChoiceBean.java | 24 ---- .../chorem/pollen/services/bean/VoterListBean.java | 24 ---- .../pollen/services/bean/VoterListMemberBean.java | 34 ----- .../bean/export/ChildFavoriteListExport.java | 16 --- .../pollen/services/service/ChoiceService.java | 56 +++++--- .../pollen/services/service/CommentService.java | 45 ++++-- .../services/service/FavoriteListService.java | 73 +++++++--- .../pollen/services/service/FeedbackService.java | 3 +- .../pollen/services/service/FixturesService.java | 14 +- .../chorem/pollen/services/service/GtuService.java | 50 ++++--- .../pollen/services/service/PollService.java | 158 +++++++++++++++------ .../services/service/PollenResourceService.java | 35 ++++- .../services/service/PollenServiceSupport.java | 43 +----- .../pollen/services/service/PollenUserService.java | 116 ++++++++------- .../pollen/services/service/ReportService.java | 30 +++- .../pollen/services/service/SocialAuthService.java | 17 ++- .../services/service/VoteCountingService.java | 13 +- .../pollen/services/service/VoteService.java | 80 ++++++++--- .../pollen/services/service/VoterListService.java | 72 +++++----- .../i18n/pollen-services_en_GB.properties | 1 + .../i18n/pollen-services_fr_FR.properties | 1 + .../services/service/PollenUserServiceTest.java | 8 +- pollen-ui-riot-js/src/main/web/i18n/en.json | 4 + pollen-ui-riot-js/src/main/web/i18n/fr.json | 4 + .../src/main/web/tag/admin/UserCard.tag.html | 16 +++ .../src/main/web/tag/admin/UserEditModal.tag.html | 19 +++ .../src/main/web/tag/components/InnerHtml.tag.html | 14 ++ .../main/web/tag/components/date-picker.tag.html | 13 +- .../src/main/web/tag/poll/Poll.tag.html | 7 + 53 files changed, 678 insertions(+), 972 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/VoteToChoices.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/VoteToChoices.java index f4a8498a..19720752 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/VoteToChoices.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/VoteToChoices.java @@ -21,9 +21,7 @@ package org.chorem.pollen.persistence.entity; * #L% */ -import java.io.Serializable; import java.util.Comparator; -import java.util.List; /** * Created on 5/16/14. @@ -33,18 +31,7 @@ import java.util.List; */ public class VoteToChoices { - public static void sortByChoiceOrder(List<VoteToChoice> voteToChoices) { - voteToChoices.sort(new VoteToChoiceComparator()); - } + public static Comparator<VoteToChoice> VOTE_TO_CHOICE_COMPARATOR = Comparator.comparingInt(v -> v.getChoice().getChoiceOrder()); - protected static class VoteToChoiceComparator implements Comparator<VoteToChoice>, Serializable { - - private static final long serialVersionUID = 1L; - - @Override - public int compare(VoteToChoice o1, VoteToChoice o2) { - return o1.getChoice().getChoiceOrder() - o2.getChoice().getChoiceOrder(); - } - } } diff --git a/pollen-persistence/src/main/resources/db/migration/h2/V3_1_0_1__add_premium.sql b/pollen-persistence/src/main/resources/db/migration/h2/V3_1_0_1__add_premium.sql new file mode 100644 index 00000000..dc4a1849 --- /dev/null +++ b/pollen-persistence/src/main/resources/db/migration/h2/V3_1_0_1__add_premium.sql @@ -0,0 +1,5 @@ +-- add premium in poll and user +alter table poll add premium boolean; +update poll set premium = false; + +alter table pollenUser add premiumTo TIMESTAMP; diff --git a/pollen-persistence/src/main/resources/db/migration/postgresql/V3_1_0_1__add_premium.sql b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_1_0_1__add_premium.sql new file mode 100644 index 00000000..dc4a1849 --- /dev/null +++ b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_1_0_1__add_premium.sql @@ -0,0 +1,5 @@ +-- add premium in poll and user +alter table poll add premium boolean; +update poll set premium = false; + +alter table pollenUser add premiumTo TIMESTAMP; diff --git a/pollen-persistence/src/main/xmi/pollen.properties b/pollen-persistence/src/main/xmi/pollen.properties index 926a53e6..d941b130 100644 --- a/pollen-persistence/src/main/xmi/pollen.properties +++ b/pollen-persistence/src/main/xmi/pollen.properties @@ -18,7 +18,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # #L% ###m -model.tagvalue.version=3.0.0.10 +model.tagvalue.version=3.1.0.1 #model.tagValue.notGenerateToString=true #model.tagValue.constantPrefix=PROPERTY_ #model.tagValue.useEnumerationName=true diff --git a/pollen-persistence/src/main/xmi/pollen.zargo b/pollen-persistence/src/main/xmi/pollen.zargo index 0da955ef..004634d3 100644 Binary files a/pollen-persistence/src/main/xmi/pollen.zargo and b/pollen-persistence/src/main/xmi/pollen.zargo differ diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AuthApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AuthApiTest.java index e3271e23..65f71e93 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AuthApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AuthApiTest.java @@ -47,7 +47,7 @@ public class AuthApiTest extends AbstractPollenRestApiTest { URI uri = createRequest(RestApiFixtures.login()) - .addParameter("login", "admin@pollen.org") + .addParameter("login", "admin@chorem.org") .addParameter("password", "admin") .build(); @@ -63,7 +63,7 @@ public class AuthApiTest extends AbstractPollenRestApiTest { public void loginThenLogout() throws URISyntaxException, IOException { URI uri = createRequest(RestApiFixtures.login()) - .addParameter("login", "admin@pollen.org") + .addParameter("login", "admin@chorem.org") .addParameter("password", "admin") .build(); @@ -89,7 +89,7 @@ public class AuthApiTest extends AbstractPollenRestApiTest { public void badLogin() throws URISyntaxException, IOException { URI uri = createRequest(RestApiFixtures.login()) - .addParameter("login", "admin@pollen.org" + System.nanoTime()) + .addParameter("login", "admin@chorem.org" + System.nanoTime()) .addParameter("password", "admin" + System.nanoTime()) .build(); @@ -105,7 +105,7 @@ public class AuthApiTest extends AbstractPollenRestApiTest { public void badPassword() throws URISyntaxException, IOException { URI uri = createRequest(RestApiFixtures.login()) - .addParameter("login", "admin@pollen.org") + .addParameter("login", "admin@chorem.org") .addParameter("password", "admin" + System.nanoTime()) .build(); diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java index 7bd1d92e..95b2e8d5 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java @@ -141,7 +141,7 @@ public class PollenUserApiTest extends AbstractPollenRestApiTest { private String login() throws URISyntaxException, IOException { URI uri = createRequest(RestApiFixtures.login()) - .addParameter("login", "admin@pollen.org") + .addParameter("login", "admin@chorem.org") .addParameter("password", "admin") .build(); Request request = Request.Post(uri); diff --git a/pollen-services/src/main/config/PollenServices.ini b/pollen-services/src/main/config/PollenServices.ini index f6a42182..0dee8b98 100644 --- a/pollen-services/src/main/config/PollenServices.ini +++ b/pollen-services/src/main/config/PollenServices.ini @@ -205,4 +205,10 @@ type = String description = pollen.configuration.feedback.locale key = pollen.feedback.locale type = String -defaultValue = en \ No newline at end of file +defaultValue = en + +[option maxVoters] +description = pollen.configuration.maxVoters +key = pollen.default.maxVoters +type = int +defaultValue = 0 \ No newline at end of file diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChildFavoriteListBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChildFavoriteListBean.java index 83c79b9e..a122fc85 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChildFavoriteListBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ChildFavoriteListBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.ChildFavoriteList; -import org.chorem.pollen.persistence.entity.ChildFavoriteListImpl; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -37,28 +36,6 @@ public class ChildFavoriteListBean extends PollenBean<ChildFavoriteList> { super(ChildFavoriteList.class); } - @Override - public void fromEntity(ChildFavoriteList entity) { - - setEntityId(entity.getTopiaId()); - FavoriteListBean child = new FavoriteListBean(); - child.fromEntity(entity.getChild()); - setChild(child); - setWeight(entity.getWeight()); - - - } - - @Override - public ChildFavoriteList toEntity() { - - ChildFavoriteList entity = new ChildFavoriteListImpl(); - entity.setWeight(getWeight()); - - return entity; - - } - public FavoriteListBean getChild() { return child; } 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 7f8d42e5..40df2410 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 @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.Choice; -import org.chorem.pollen.persistence.entity.ChoiceImpl; import org.chorem.pollen.persistence.entity.ChoiceType; /** @@ -51,34 +50,6 @@ public class ChoiceBean extends PollenBean<Choice> { super(Choice.class); } - @Override - public void fromEntity(Choice entity) { - setEntityId(entity.getTopiaId()); - if (entity.getCreator() == null || entity.getCreator().getPermission() == null) { - setPermission(null); - } else { - setPermission(entity.getCreator().getPermission().getToken()); - } - setChoiceValue(entity.getChoiceValue()); - setDescription(entity.getDescription()); - setChoiceType(entity.getChoiceType()); - setChoiceOrder(entity.getChoiceOrder()); - - } - - @Override - public Choice toEntity() { - Choice entity = new ChoiceImpl(); - entity.setTopiaId(getEntityId()); - entity.setChoiceValue(getChoiceValue()); - entity.setDescription(getDescription()); - entity.setChoiceType(getChoiceType()); - entity.setChoiceOrder(getChoiceOrder()); - - return entity; - - } - public String getPermission() { return permission; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/CommentBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/CommentBean.java index e4d235da..17b88b86 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/CommentBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/CommentBean.java @@ -22,8 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.Comment; -import org.chorem.pollen.persistence.entity.CommentImpl; -import org.chorem.pollen.persistence.entity.PollenPrincipalImpl; import java.util.Date; @@ -49,48 +47,6 @@ public class CommentBean extends PollenBean<Comment> { super(Comment.class); } - @Override - public void fromEntity(Comment entity) { - - setEntityId(entity.getTopiaId()); - - if (entity.getAuthor() == null || entity.getAuthor().getPermission() == null) { - - setPermission(null); - - } else { - - setPermission(entity.getAuthor().getPermission().getToken()); - - } - - setText(entity.getText()); - setPostDate(entity.getPostDate()); - - if (entity.getAuthor() != null) { - - setAuthorName(entity.getAuthor().getName()); - - } - - } - - @Override - public Comment toEntity() { - - Comment entity = new CommentImpl(); - - entity.setTopiaId(getEntityId()); - entity.setText(getText()); - entity.setPostDate(getPostDate()); - PollenPrincipalImpl author = new PollenPrincipalImpl(); - entity.setAuthor(author); - author.setName(getAuthorName()); - - return entity; - - } - public String getPermission() { return permission; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListBean.java index 200ee182..13398e26 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.FavoriteList; -import org.chorem.pollen.persistence.entity.FavoriteListImpl; /** * Created on 5/15/14. @@ -42,25 +41,6 @@ public class FavoriteListBean extends PollenBean<FavoriteList> { super(FavoriteList.class); } - @Override - public void fromEntity(FavoriteList entity) { - - setEntityId(entity.getTopiaId()); - setName(entity.getName()); - - } - - @Override - public FavoriteList toEntity() { - - FavoriteList entity = new FavoriteListImpl(); - entity.setTopiaId(getEntityId()); - entity.setName(getName()); - - return entity; - - } - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListMemberBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListMemberBean.java index 1af9bcb0..bce83bc4 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListMemberBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/FavoriteListMemberBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.FavoriteListMember; -import org.chorem.pollen.persistence.entity.FavoriteListMemberImpl; /** * Created on 5/15/14. @@ -42,29 +41,6 @@ public class FavoriteListMemberBean extends PollenBean<FavoriteListMember> { super(FavoriteListMember.class); } - @Override - public void fromEntity(FavoriteListMember entity) { - - setEntityId(entity.getTopiaId()); - setName(entity.getName()); - setEmail(entity.getEmail()); - setWeight(entity.getWeight()); - - } - - @Override - public FavoriteListMember toEntity() { - - FavoriteListMember entity = new FavoriteListMemberImpl(); - entity.setEmail(getEmail()); - entity.setName(getName()); - entity.setWeight(getWeight()); - - return entity; - - } - - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/LoginProviderBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/LoginProviderBean.java index c847df07..7d6725de 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/LoginProviderBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/LoginProviderBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.LoginProvider; -import org.chorem.pollen.persistence.entity.LoginProviderImpl; /** * @author Kevin Morin (Code Lutin) @@ -39,28 +38,6 @@ public class LoginProviderBean extends PollenBean<LoginProvider> { super(LoginProvider.class); } - @Override - public void fromEntity(LoginProvider entity) { - setEntityId(entity.getTopiaId()); - setName(entity.getName()); - setKey(entity.getKey()); - setSecret(entity.getSecret()); - setPermissions(entity.getPermissions()); - setActive(entity.isActive()); - } - - @Override - public LoginProvider toEntity() { - LoginProvider entity = new LoginProviderImpl(); - entity.setTopiaId(getEntityId()); - entity.setName(getName()); - entity.setKey(getKey()); - entity.setSecret(getSecret()); - entity.setPermissions(getPermissions()); - entity.setActive(isActive()); - return entity; - } - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java index c382bafa..f7f0c2e7 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java @@ -21,23 +21,15 @@ package org.chorem.pollen.services.bean; * #L% */ -import com.google.common.base.Joiner; import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.persistence.entity.ChoiceType; import org.chorem.pollen.persistence.entity.CommentVisibility; import org.chorem.pollen.persistence.entity.Poll; -import org.chorem.pollen.persistence.entity.PollImpl; import org.chorem.pollen.persistence.entity.PollType; -import org.chorem.pollen.persistence.entity.PollenPrincipal; -import org.chorem.pollen.persistence.entity.PollenPrincipalImpl; -import org.chorem.pollen.persistence.entity.Polls; import org.chorem.pollen.persistence.entity.ResultVisibility; import org.chorem.pollen.persistence.entity.VoteVisibility; -import java.util.Arrays; -import java.util.Collections; import java.util.Date; -import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; @@ -146,118 +138,7 @@ public class PollBean extends PollenBean<Poll> { protected boolean gtuValidated; - @Override - public void fromEntity(Poll entity) { - - setEntityId(entity.getTopiaId()); - - if (entity.getCreator() == null || entity.getCreator().getPermission() == null) { - - setPermission(null); - - } else { - - setPermission(entity.getCreator().getPermission().getToken()); - - } - - if (entity.getCreator() != null) { - - setCreatorName(entity.getCreator().getName()); - setCreatorEmail(entity.getCreator().getEmail()); - - } - - setTitle(entity.getTitle()); - setDescription(entity.getDescription()); - setCreateDate(entity.getTopiaCreateDate()); - setBeginChoiceDate(entity.getBeginChoiceDate()); - setEndChoiceDate(entity.getEndChoiceDate()); - setBeginDate(entity.getBeginDate()); - setEndDate(entity.getEndDate()); - setMaxChoiceNumber(entity.getMaxChoiceNumber()); - setChoiceAddAllowed(entity.isChoiceAddAllowed()); - setAnonymousVoteAllowed(entity.isAnonymousVoteAllowed()); - setContinuousResults(entity.isContinuousResults()); - setVoteCountingType(entity.getVoteCountingType()); - setPollType(entity.getPollType()); - setVoteVisibility(entity.getVoteVisibility()); - setCommentVisibility(entity.getCommentVisibility()); - setResultVisibility(entity.getResultVisibility()); - setParticipants(new LinkedHashSet<>(entity.getParticipants() == null ? Collections.emptyList() : Arrays.asList(entity.getParticipants().split("\\s")))); - setWithMe(entity.isWithMe()); - setChoiceType(entity.getChoiceType()); - setNotifyMeHoursBeforePollEnds(entity.getNotifyMeHoursBeforePollEnds()); - setVoteNotification(entity.isVoteNotification()); - setCommentNotification(entity.isCommentNotification()); - setNewChoiceNotification(entity.isNewChoiceNotification()); - setNotificationLocale(entity.getNotificationLocale()); - - Date now = new Date(); - if (Polls.isFinished(entity, now)) { - setStatus(PollStatus.CLOSED); - setClosed(true); - } else { - setClosed(false); - setStatus(PollStatus.CREATED); - - if (entity.isChoiceAddAllowed()) { - Date beginChoiceDate = entity.getBeginChoiceDate(); - Date endChoiceDate = entity.getEndChoiceDate(); - if ((beginChoiceDate == null || now.after(beginChoiceDate)) - && (endChoiceDate == null || now.before(endChoiceDate))) { - setStatus(PollStatus.ADDING_CHOICES); - } - } - - if (PollStatus.ADDING_CHOICES != getStatus()) { - Date beginDate = entity.getBeginDate(); - Date endDate = entity.getEndDate(); - if (beginDate != null && now.after(beginDate) && (endDate == null || now.before(endDate))) { - setStatus(PollStatus.VOTING); - } - } - } - } - - @Override - public Poll toEntity() { - - Poll entity = new PollImpl(); - entity.setTopiaId(getEntityId()); - PollenPrincipal creator = new PollenPrincipalImpl(); - creator.setName(getCreatorName()); - creator.setEmail(getCreatorEmail()); - entity.setCreator(creator); - - entity.setTitle(getTitle()); - entity.setDescription(getDescription()); - entity.setTitle(getTitle()); - entity.setDescription(getDescription()); - entity.setBeginChoiceDate(getBeginChoiceDate()); - entity.setEndChoiceDate(getEndChoiceDate()); - entity.setBeginDate(getBeginDate()); - entity.setEndDate(getEndDate()); - entity.setMaxChoiceNumber(getMaxChoiceNumber()); - entity.setChoiceAddAllowed(isChoiceAddAllowed()); - entity.setAnonymousVoteAllowed(isAnonymousVoteAllowed()); - entity.setContinuousResults(isContinuousResults()); - entity.setVoteCountingType(getVoteCountingType()); - entity.setPollType(getPollType()); - entity.setVoteVisibility(getVoteVisibility()); - entity.setCommentVisibility(getCommentVisibility()); - entity.setResultVisibility(getResultVisibility()); - entity.setParticipants(Joiner.on(' ').join(getParticipants())); - entity.setChoiceType(getChoiceType()); - entity.setWithMe(isWithMe()); - entity.setNotifyMeHoursBeforePollEnds(getNotifyMeHoursBeforePollEnds()); - entity.setVoteNotification(isVoteNotification()); - entity.setCommentNotification(isCommentNotification()); - entity.setNewChoiceNotification(isNewChoiceNotification()); - entity.setNotificationLocale(getNotificationLocale()); - return entity; - - } + protected int maxVoters; public String getPermission() { return permission; @@ -573,4 +454,12 @@ public class PollBean extends PollenBean<Poll> { public void setGtuValidated(boolean gtuValidated) { this.gtuValidated = gtuValidated; } + + public int getMaxVoters() { + return maxVoters; + } + + public void setMaxVoters(int maxVoters) { + this.maxVoters = maxVoters; + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBean.java index 9a2fe4ed..32bbd3f6 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBean.java @@ -76,10 +76,6 @@ public abstract class PollenBean<E extends TopiaEntity> { this.id.setEntityId(id); } - public abstract void fromEntity(E entity); - - public abstract E toEntity(); - @Override public boolean equals(Object o) { return this == o || o instanceof PollenBean && Objects.equals(id, ((PollenBean) o).id); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java index 03211c99..1d245206 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenBeans.java @@ -24,12 +24,10 @@ package org.chorem.pollen.services.bean; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import org.apache.commons.collections4.CollectionUtils; -import org.chorem.pollen.services.PollenTechnicalException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.pagination.PaginationOrder; import org.nuiton.util.pagination.PaginationResult; -import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.function.Function; @@ -42,30 +40,9 @@ import java.util.function.Function; */ public class PollenBeans { - public static <E extends TopiaEntity, B extends PollenBean<E>> B toBean(Class<B> beanType, E entity, Function<B, B> beanFunction) { + public static <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toBean(PaginationResult<E> entities, Function<E, B> beanFunction) { - try { - - B bean = beanType.newInstance(); - bean.fromEntity(entity); - - if (beanFunction != null) { - - bean = beanFunction.apply(bean); - - } - - return bean; - - } catch (InstantiationException | IllegalAccessException e) { - throw new PollenTechnicalException("Could not instanciate bean", e); - } - - } - - public static <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toBean(Class<B> beanType, PaginationResult<E> entities, Function<B, B> beanFunction) { - - ImmutableList<B> bs = toBeanList(beanType, entities.getElements(), beanFunction); + ImmutableList<B> bs = toBeanList(entities.getElements(), beanFunction); PaginationResultBean<B> result = new PaginationResultBean<>(); result.setElements(bs); @@ -88,29 +65,15 @@ public class PollenBeans { } - public static <E extends TopiaEntity, B extends PollenBean<E>> ImmutableSet<B> toBeanSet(Class<B> beanType, Collection<E> entities, Function<B, B> beanFunction) { - - Collection<B> copy = new ArrayList<>(); - - for (E entity : entities) { - B bean = toBean(beanType, entity, beanFunction); - copy.add(bean); - } + public static <E extends TopiaEntity, B extends PollenBean<E>> ImmutableSet<B> toBeanSet(Collection<E> entities, Function<E, B> beanFunction) { - return ImmutableSet.copyOf(copy); + return entities.stream().map(beanFunction).collect(ImmutableSet.toImmutableSet()); } - public static <E extends TopiaEntity, B extends PollenBean<E>> ImmutableList<B> toBeanList(Class<B> beanType, Collection<E> entities, Function<B, B> beanFunction) { - - Collection<B> copy = new ArrayList<>(); - - for (E entity : entities) { - B bean = toBean(beanType, entity, beanFunction); - copy.add(bean); - } + public static <E extends TopiaEntity, B extends PollenBean<E>> ImmutableList<B> toBeanList(Collection<E> entities, Function<E, B> beanFunction) { - return ImmutableList.copyOf(copy); + return entities.stream().map(beanFunction).collect(ImmutableList.toImmutableList()); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenUserBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenUserBean.java index d1d1ccb5..a070b2d1 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenUserBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenUserBean.java @@ -22,11 +22,10 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.PollenUser; -import org.chorem.pollen.persistence.entity.PollenUserImpl; import java.util.ArrayList; +import java.util.Date; import java.util.List; -import java.util.stream.Collectors; /** * Created on 5/15/14. @@ -56,48 +55,12 @@ public class PollenUserBean extends PollenBean<PollenUser> { protected boolean gtuValidated; - public PollenUserBean() { - super(PollenUser.class); - } - - @Override - public void fromEntity(PollenUser entity) { - - setEntityId(entity.getTopiaId()); - - setName(entity.getName()); - setAdministrator(entity.isAdministrator()); - setBanned(entity.isBanned()); - setLanguage(entity.getLanguage()); - setEmail(entity.getEmail()); - setPassword(entity.getPassword()); - setEmailIsValidate(entity.getEmailActivationToken() == null); - setWithPassword(entity.getPassword() != null); - if (entity.getUserCredential() != null) { - setCredentials(entity.getUserCredential().stream() - .map(userCredential -> { - UserCredentialBean userCredentialBean = new UserCredentialBean(); - userCredentialBean.fromEntity(userCredential); - return userCredentialBean; - }) - .collect(Collectors.toList())); - } - } - - @Override - public PollenUser toEntity() { - - PollenUser entity = new PollenUserImpl(); - - entity.setTopiaId(getEntityId()); - entity.setName(getName()); - entity.setAdministrator(isAdministrator()); - entity.setLanguage(getLanguage()); - entity.setEmail(getEmail()); - entity.setPassword(getPassword()); + protected Date premiumTo; - return entity; + protected boolean premium; + public PollenUserBean() { + super(PollenUser.class); } public String getName() { @@ -179,4 +142,20 @@ public class PollenUserBean extends PollenBean<PollenUser> { public void setGtuValidated(boolean gtuValidated) { this.gtuValidated = gtuValidated; } + + public Date getPremiumTo() { + return premiumTo; + } + + public void setPremiumTo(Date premiumTo) { + this.premiumTo = premiumTo; + } + + public boolean isPremium() { + return premium; + } + + public void setPremium(boolean premium) { + this.premium = premium; + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ReportBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ReportBean.java index c7470363..6d44ca0a 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ReportBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ReportBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.Report; -import org.chorem.pollen.persistence.entity.ReportImpl; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -63,24 +62,4 @@ public class ReportBean extends PollenBean<Report> { this.ignore = ignore; } - @Override - public void fromEntity(Report entity) { - setEntityId(entity.getTopiaId()); - - setLevel(ReportLevel.of(entity.getLevel())); - setEmail(entity.getEmail()); - setIgnore(entity.isIgnore()); - } - - @Override - public Report toEntity() { - Report entity = new ReportImpl(); - - entity.setTopiaId(getEntityId()); - entity.setLevel(getLevel().getScore()); - entity.setEmail(getEmail()); - entity.setIgnore(isIgnore()); - - return entity; - } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceFileBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceFileBean.java index 526d9fa2..61ae8b07 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceFileBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceFileBean.java @@ -23,7 +23,6 @@ package org.chorem.pollen.services.bean; import org.apache.commons.io.IOUtils; import org.chorem.pollen.persistence.entity.PollenResource; -import org.chorem.pollen.persistence.entity.PollenResourceImpl; import org.chorem.pollen.persistence.entity.ResourceType; import javax.sql.rowset.serial.SerialBlob; @@ -57,36 +56,6 @@ public class ResourceFileBean extends PollenBean<PollenResource> { super(PollenResource.class); } - @Override - public void fromEntity(PollenResource entity) { - setEntityId(entity.getTopiaId()); - - setName(entity.getName()); - setSize(entity.getSize()); - setContentType(entity.getContentType()); - setResourceType(entity.getResourceType()); - } - - @Override - public PollenResource toEntity() { - PollenResource entity = new PollenResourceImpl(); - - entity.setTopiaId(getEntityId()); - - try { - entity.setResourceContent(getResourceBlob()); - } catch (IOException | SQLException e) { - e.printStackTrace(); - } - - entity.setName(getName()); - entity.setSize(getSize()); - entity.setContentType(getContentType()); - entity.setResourceType(getResourceType()); - - return entity; - } - public File getFile() { return file; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceMetaBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceMetaBean.java index eea72c85..7c6c0d9e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceMetaBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceMetaBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.PollenResource; -import org.chorem.pollen.persistence.entity.PollenResourceImpl; import org.chorem.pollen.persistence.entity.ResourceType; import java.util.Date; @@ -48,31 +47,6 @@ public class ResourceMetaBean extends PollenBean<PollenResource> { super(PollenResource.class); } - @Override - public void fromEntity(PollenResource entity) { - setEntityId(entity.getTopiaId()); - - setName(entity.getName()); - setSize(entity.getSize()); - setContentType(entity.getContentType()); - setResourceType(entity.getResourceType()); - setUploadDate(entity.getTopiaCreateDate()); - } - - @Override - public PollenResource toEntity() { - PollenResource entity = new PollenResourceImpl(); - - entity.setTopiaId(getEntityId()); - - entity.setName(getName()); - entity.setSize(getSize()); - entity.setContentType(getContentType()); - entity.setResourceType(getResourceType()); - - return entity; - } - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceStreamBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceStreamBean.java index 75cd147c..c2a4088d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceStreamBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/ResourceStreamBean.java @@ -23,7 +23,6 @@ package org.chorem.pollen.services.bean; import org.apache.commons.io.IOUtils; import org.chorem.pollen.persistence.entity.PollenResource; -import org.chorem.pollen.persistence.entity.PollenResourceImpl; import javax.sql.rowset.serial.SerialBlob; import java.io.IOException; @@ -50,41 +49,6 @@ public class ResourceStreamBean extends PollenBean<PollenResource> { super(PollenResource.class); } - @Override - public void fromEntity(PollenResource entity) { - setEntityId(entity.getTopiaId()); - - try { - setResourceContent(entity.getResourceContent().getBinaryStream()); - } catch (SQLException e) { - e.printStackTrace(); - } - - setName(entity.getName()); - setSize(entity.getSize()); - setContentType(entity.getContentType()); - } - - @Override - public PollenResource toEntity() { - PollenResource entity = new PollenResourceImpl(); - - entity.setTopiaId(getEntityId()); - - try { - entity.setResourceContent(getResourceBlob()); - } catch (IOException | SQLException e) { - e.printStackTrace(); - } - - entity.setName(getName()); - entity.setSize(getSize()); - entity.setContentType(getContentType()); - - - return entity; - } - public InputStream getResourceContent() { return resourceContent; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/UserCredentialBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/UserCredentialBean.java index fb52615b..0bf393b7 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/UserCredentialBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/UserCredentialBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.UserCredential; -import org.chorem.pollen.persistence.entity.UserCredentialImpl; /** * @author Kevin Morin (Code Lutin) @@ -33,28 +32,10 @@ public class UserCredentialBean extends PollenBean<UserCredential> { protected String userName; protected String emailAddress; - protected UserCredentialBean() { + public UserCredentialBean() { super(UserCredential.class); } - @Override - public void fromEntity(UserCredential entity) { - setEntityId(entity.getTopiaId()); - setProvider(entity.getProvider()); - setUserName(entity.getUserName()); - setEmailAddress(entity.getEmail()); - } - - @Override - public UserCredential toEntity() { - UserCredential entity = new UserCredentialImpl(); - entity.setTopiaId(getEntityId()); - entity.setProvider(getProvider()); - entity.setUserName(getUserName()); - entity.setEmail(getEmailAddress()); - return entity; - } - public String getProvider() { return provider; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteBean.java index 58fd29d8..cf2ead11 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteBean.java @@ -23,17 +23,11 @@ package org.chorem.pollen.services.bean; import com.google.common.collect.Sets; import org.chorem.pollen.persistence.entity.PollenPrincipal; -import org.chorem.pollen.persistence.entity.PollenPrincipalImpl; import org.chorem.pollen.persistence.entity.Vote; -import org.chorem.pollen.persistence.entity.VoteImpl; -import org.chorem.pollen.persistence.entity.VoteToChoice; -import org.chorem.pollen.persistence.entity.VoteToChoices; import org.chorem.pollen.persistence.entity.VoterListMember; -import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; -import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -61,74 +55,12 @@ public class VoteBean extends PollenBean<Vote> { private ReportResumeBean report; + protected boolean ignored; + public VoteBean() { super(Vote.class); } - @Override - public void fromEntity(Vote vote) { - - setEntityId(vote.getTopiaId()); - - if (vote.getVoter() == null || vote.getVoter().getPermission() == null) { - - setPermission(null); - - } else { - - setPermission(vote.getVoter().getPermission().getToken()); - - } - - setAnonymous(vote.isAnonymous()); - getVoterId().setEntityId(vote.getVoter().getTopiaId()); - setVoterName(vote.getVoter().getName()); - setWeight(vote.getWeight()); - - List<VoteToChoice> voteToChoices = new ArrayList<>(vote.getVoteToChoice()); - VoteToChoices.sortByChoiceOrder(voteToChoices); - - for (VoteToChoice voteToChoice : voteToChoices) { - - VoteToChoiceBean choiceBean = new VoteToChoiceBean(); - choiceBean.fromEntity(voteToChoice); - addChoice(choiceBean); - - } - - if (vote.getVoterListMember() != null) { - - setVoterListMembers(vote.getVoterListMember()); - - } - - } - - @Override - public Vote toEntity() { - - Vote entity = new VoteImpl(); - - entity.setTopiaId(getEntityId()); - entity.setAnonymous(getAnonymous() != null && getAnonymous()); - entity.setWeight(getWeight()); - - PollenPrincipal voter = new PollenPrincipalImpl(); - entity.setVoter(voter); - voter.setTopiaId(getVoterId().getEntityId()); - voter.setName(getVoterName()); - - for (VoteToChoiceBean choiceBean : choice) { - - VoteToChoice voteToChoice = choiceBean.toEntity(); - entity.addVoteToChoice(voteToChoice); - - } - - return entity; - - } - public String getVoterName() { return voterName; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteToChoiceBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteToChoiceBean.java index 031a5705..4f3df80f 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteToChoiceBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoteToChoiceBean.java @@ -22,9 +22,7 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.Choice; -import org.chorem.pollen.persistence.entity.ChoiceImpl; import org.chorem.pollen.persistence.entity.VoteToChoice; -import org.chorem.pollen.persistence.entity.VoteToChoiceImpl; /** * Created on 5/15/14. @@ -42,28 +40,6 @@ public class VoteToChoiceBean extends PollenBean<VoteToChoice> { super(VoteToChoice.class); } - @Override - public void fromEntity(VoteToChoice entity) { - - setEntityId(entity.getTopiaId()); - setVoteValue(entity.getVoteValue()); - getChoiceId().setEntityId(entity.getChoice().getTopiaId()); - - } - - @Override - public VoteToChoice toEntity() { - - VoteToChoice entity = new VoteToChoiceImpl(); - entity.setTopiaId(getEntityId()); - entity.setVoteValue(getVoteValue()); - entity.setChoice(new ChoiceImpl()); - entity.getChoice().setTopiaId(getChoiceId().getEntityId()); - - return entity; - - } - public PollenEntityId<Choice> getChoiceId() { if (choiceId == null) { choiceId = PollenEntityId.newId(Choice.class); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListBean.java index 2eec3235..7d76b4f8 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListBean.java @@ -22,7 +22,6 @@ package org.chorem.pollen.services.bean; */ import org.chorem.pollen.persistence.entity.VoterList; -import org.chorem.pollen.persistence.entity.VoterListImpl; /** * Created on 5/15/14. @@ -46,29 +45,6 @@ public class VoterListBean extends PollenBean<VoterList> { super(VoterList.class); } - @Override - public void fromEntity(VoterList entity) { - - setEntityId(entity.getTopiaId()); - setName(entity.getName()); - setWeight(entity.getWeight()); - if (entity.getParent() != null) { - getParentId().setEntityId(entity.getParent().getTopiaId()); - } - } - - @Override - public VoterList toEntity() { - - VoterList entity = new VoterListImpl(); - entity.setTopiaId(getEntityId()); - entity.setName(getName()); - entity.setWeight(getWeight()); - - return entity; - - } - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListMemberBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListMemberBean.java index 09825fd6..929f3a16 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListMemberBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/VoterListMemberBean.java @@ -21,11 +21,8 @@ package org.chorem.pollen.services.bean; * #L% */ -import org.chorem.pollen.persistence.entity.PollenPrincipal; -import org.chorem.pollen.persistence.entity.PollenPrincipalImpl; import org.chorem.pollen.persistence.entity.VoterList; import org.chorem.pollen.persistence.entity.VoterListMember; -import org.chorem.pollen.persistence.entity.VoterListMemberImpl; /** * Created on 5/15/14. @@ -49,37 +46,6 @@ public class VoterListMemberBean extends PollenBean<VoterListMember> { super(VoterListMember.class); } - @Override - public void fromEntity(VoterListMember entity) { - - setEntityId(entity.getTopiaId()); - if (entity.getMember() != null) { - setName(entity.getMember().getName()); - setEmail(entity.getMember().getEmail()); - } - setWeight(entity.getWeight()); - getVoterListId().setEntityId(entity.getVoterList().getTopiaId()); - - } - - @Override - public VoterListMember toEntity() { - - VoterListMember entity = new VoterListMemberImpl(); - entity.setTopiaId(getEntityId()); - - PollenPrincipal member = new PollenPrincipalImpl(); - member.setEmail(getEmail()); - member.setName(getName()); - entity.setMember(member); - - entity.setWeight(getWeight()); - - return entity; - - } - - public String getName() { return name; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/export/ChildFavoriteListExport.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/export/ChildFavoriteListExport.java index 205e5d93..c7816a76 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/export/ChildFavoriteListExport.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/export/ChildFavoriteListExport.java @@ -24,8 +24,6 @@ package org.chorem.pollen.services.bean.export; import org.chorem.pollen.persistence.entity.ChildFavoriteList; import org.chorem.pollen.persistence.entity.ChildFavoriteListImpl; import org.chorem.pollen.persistence.entity.FavoriteList; -import org.chorem.pollen.services.bean.ChildFavoriteListBean; -import org.chorem.pollen.services.bean.FavoriteListBean; import java.util.List; @@ -75,18 +73,4 @@ public class ChildFavoriteListExport { return entity; } - - public ChildFavoriteListBean toBean(List<FavoriteList> existingFavoriteLists) { - ChildFavoriteListBean bean = new ChildFavoriteListBean(); - bean.setWeight(getWeight()); - FavoriteList childEntity = existingFavoriteLists.stream() - .filter(favoriteList -> getChild().equals(favoriteList.getName())) - .findFirst() - .orElse(null); - FavoriteListBean childBean = new FavoriteListBean(); - childBean.fromEntity(childEntity); - bean.setChild(childBean); - - return bean; - } } 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 333fd53e..ae12f859 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 @@ -24,6 +24,7 @@ package org.chorem.pollen.services.service; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.persistence.entity.Choice; +import org.chorem.pollen.persistence.entity.ChoiceImpl; import org.chorem.pollen.persistence.entity.ChoiceTopiaDao; import org.chorem.pollen.persistence.entity.ChoiceType; import org.chorem.pollen.persistence.entity.Poll; @@ -37,7 +38,6 @@ import org.chorem.pollen.services.service.security.PermissionVerb; import java.util.Calendar; import java.util.List; import java.util.Set; -import java.util.function.Function; import static org.nuiton.i18n.I18n.l; @@ -50,23 +50,49 @@ import static org.nuiton.i18n.I18n.l; public class ChoiceService extends PollenServiceSupport { - protected final Function<ChoiceBean, ChoiceBean> choiceBeanFunction = input -> { - if (isNotPermitted(PermissionVerb.editChoice, input.getEntityId())) { - input.setPermission(null); + public ChoiceBean toChoiceBean(Choice entity) { + ChoiceBean bean = new ChoiceBean(); + bean.setEntityId(entity.getTopiaId()); + + if (entity.getCreator() == null + || entity.getCreator().getPermission() == null + || isNotPermitted(PermissionVerb.editChoice, entity.getTopiaId())) { + bean.setPermission(null); } else { - ReportResumeBean report = getReportService().getReport(input.getEntityId()); - input.setReport(report); + bean.setPermission(entity.getCreator().getPermission().getToken()); } - if (input.getChoiceType() == ChoiceType.RESOURCE) { - input.setChoiceValue(getPollenResourceService().getReduceIdByTopiaId(input.getChoiceValue())); + if (bean.getChoiceType() == ChoiceType.RESOURCE) { + bean.setChoiceValue(getPollenResourceService().getReduceIdByTopiaId(entity.getChoiceValue())); + } else { + bean.setChoiceValue(entity.getChoiceValue()); + } + + bean.setDescription(entity.getDescription()); + bean.setChoiceType(entity.getChoiceType()); + bean.setChoiceOrder(entity.getChoiceOrder()); + + if (isPermitted(PermissionVerb.editChoice, entity.getTopiaId())) { + ReportResumeBean report = getReportService().getReport(entity.getTopiaId()); + bean.setReport(report); } - input.setChoiceIsDeletable(isPermitted(PermissionVerb.deleteChoice, input.getEntityId())); + bean.setChoiceIsDeletable(isPermitted(PermissionVerb.deleteChoice, entity.getTopiaId())); - return input; + return bean; }; + public Choice toChoice(ChoiceBean bean) { + Choice entity = new ChoiceImpl(); + entity.setTopiaId(bean.getEntityId()); + entity.setChoiceValue(bean.getChoiceValue()); + entity.setDescription(bean.getDescription()); + entity.setChoiceType(bean.getChoiceType()); + entity.setChoiceOrder(bean.getChoiceOrder()); + + return entity; + } + public List<ChoiceBean> getChoices(String pollId) { checkNotNull(pollId); @@ -75,7 +101,7 @@ public class ChoiceService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); List<Choice> choices = getChoiceDao().findAll(poll); - return toBeanList(ChoiceBean.class, choices, choiceBeanFunction); + return toBeanList(choices, this::toChoiceBean); } @@ -88,7 +114,7 @@ public class ChoiceService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); Choice choice = getChoice(poll, choiceId); - return toBean(ChoiceBean.class, choice, choiceBeanFunction); + return toChoiceBean(choice); } @@ -135,7 +161,7 @@ public class ChoiceService extends PollenServiceSupport { getNotificationService().onChoiceEdited(poll, result); - return toBean(ChoiceBean.class, result, choiceBeanFunction); + return toChoiceBean(result); } @@ -340,9 +366,7 @@ public class ChoiceService extends PollenServiceSupport { } - public long getChoiceCount(String pollId) { - checkNotNull(pollId); - Poll poll = getPollService().getPoll0(pollId); + public long getChoiceCount(Poll poll) { return getChoiceDao().forPollEquals(poll).count(); } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java index 34f6e8a4..d7dd28b3 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java @@ -35,8 +35,6 @@ import org.chorem.pollen.services.service.security.PermissionVerb; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; -import java.util.function.Function; - import static org.nuiton.i18n.I18n.l; /** @@ -47,14 +45,39 @@ import static org.nuiton.i18n.I18n.l; */ public class CommentService extends PollenServiceSupport { - private final Function<CommentBean, CommentBean> commentFunction = input -> { - if (isNotPermitted(PermissionVerb.editComment, input.getEntityId())) { - input.setPermission(null); + protected CommentBean toCommentBean(Comment entity) { + + CommentBean bean = new CommentBean(); + bean.setEntityId(entity.getTopiaId()); + + if (entity.getAuthor() == null + || entity.getAuthor().getPermission() == null + || isNotPermitted(PermissionVerb.editComment, entity.getTopiaId())) { + + bean.setPermission(null); + } else { - ReportResumeBean report = getReportService().getReport(input.getEntityId()); - input.setReport(report); + + bean.setPermission(entity.getAuthor().getPermission().getToken()); + + } + + bean.setText(entity.getText()); + bean.setPostDate(entity.getPostDate()); + + if (entity.getAuthor() != null) { + + bean.setAuthorName(entity.getAuthor().getName()); + + } + + if (isPermitted(PermissionVerb.editComment, entity.getTopiaId())) { + + ReportResumeBean report = getReportService().getReport(entity.getTopiaId()); + bean.setReport(report); + } - return input; + return bean; }; public PaginationResultBean<CommentBean> getComments(String pollId, PaginationParameterBean paginationParameter) { @@ -67,7 +90,7 @@ public class CommentService extends PollenServiceSupport { PaginationResult<Comment> comments = getCommentDao().find(poll, page); - return toPaginationListBean(CommentBean.class, comments, commentFunction); + return toPaginationListBean(comments, this::toCommentBean); } @@ -114,7 +137,7 @@ public class CommentService extends PollenServiceSupport { Comment comment = getComment(poll, commentId); - return toBean(CommentBean.class, comment, commentFunction); + return toCommentBean(comment); } @@ -156,7 +179,7 @@ public class CommentService extends PollenServiceSupport { getNotificationService().onCommentEdited(poll, result); getFeedService().onCommentEdited(poll, result); - return toBean(CommentBean.class, result); + return toCommentBean(result); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java index 8b0666f9..3127617f 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java @@ -72,28 +72,48 @@ import static org.nuiton.i18n.I18n.l; */ public class FavoriteListService extends PollenServiceSupport { - public FavoriteListBean favoriteListBeanFunction(FavoriteListBean input) { + public FavoriteListBean toFavoriteListBean(FavoriteList entity) { + FavoriteListBean bean = new FavoriteListBean(); + + bean.setEntityId(entity.getTopiaId()); + bean.setName(entity.getName()); long countChildren = getChildFavoriteListDao() - .forProperties(ChildFavoriteList.PROPERTY_PARENT + "." + FavoriteList.PROPERTY_TOPIA_ID, input.getEntityId()) + .forParentEquals(entity) .count(); - input.setCountChildren(countChildren); + bean.setCountChildren(countChildren); long countMembers = getFavoriteListMemberDao() - .forProperties(FavoriteListMember.PROPERTY_FAVORITE_LIST + "." + FavoriteList.PROPERTY_TOPIA_ID, input.getEntityId()) + .forFavoriteListEquals(entity) .count(); - input.setCountMembers(countMembers); + bean.setCountMembers(countMembers); - return input; + return bean; } - public ChildFavoriteListBean childFavoriteListBeanFunction(ChildFavoriteListBean input) { - input.setChild(favoriteListBeanFunction(input.getChild())); + protected ChildFavoriteListBean toChildFavoriteListBean(ChildFavoriteList entity) { + + ChildFavoriteListBean bean = new ChildFavoriteListBean(); + + bean.setEntityId(entity.getTopiaId()); + bean.setChild(toFavoriteListBean(entity.getChild())); + bean.setWeight(entity.getWeight()); - return input; + return bean; + } + + protected FavoriteListMemberBean toFavoriteListMemberBean(FavoriteListMember entity) { + FavoriteListMemberBean bean = new FavoriteListMemberBean(); + + bean.setEntityId(entity.getTopiaId()); + bean.setName(entity.getName()); + bean.setEmail(entity.getEmail()); + bean.setWeight(entity.getWeight()); + + return bean; } public PaginationResultBean<FavoriteListBean> getFavoriteLists(PaginationParameterBean paginationParameter, String search) { @@ -110,7 +130,7 @@ public class FavoriteListService extends PollenServiceSupport { favoriteLists = getFavoriteListDao().forPollenUserEquals(user).findPage(page); } - return toPaginationListBean(FavoriteListBean.class, favoriteLists, this::favoriteListBeanFunction); + return toPaginationListBean(favoriteLists, this::toFavoriteListBean); } @@ -121,7 +141,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteList favoriteList = getFavoriteList0(user, favoriteListId); - return toBean(FavoriteListBean.class, favoriteList, this::favoriteListBeanFunction); + return toFavoriteListBean(favoriteList); } @@ -164,7 +184,7 @@ public class FavoriteListService extends PollenServiceSupport { getNotificationService().onFavoriteListEdited(user, result); - return toBean(FavoriteListBean.class, result, this::favoriteListBeanFunction); + return toFavoriteListBean(result); } @@ -230,7 +250,7 @@ public class FavoriteListService extends PollenServiceSupport { } - return toPaginationListBean(FavoriteListMemberBean.class, members); + return toPaginationListBean(members, this::toFavoriteListMemberBean); } @@ -243,7 +263,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteList favoriteList = getFavoriteList0(user, favoriteListId); FavoriteListMember member = getFavoriteListMember0(favoriteList, memberId); - return toBean(FavoriteListMemberBean.class, member); + return toFavoriteListMemberBean(member); } @@ -289,7 +309,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteListMember result = saveFavoriteListMember(favoriteList, member); commit(); - return toBean(FavoriteListMemberBean.class, result); + return toFavoriteListMemberBean(result); } @@ -658,7 +678,7 @@ public class FavoriteListService extends PollenServiceSupport { } - return toPaginationListBean(ChildFavoriteListBean.class, children, this::childFavoriteListBeanFunction); + return toPaginationListBean(children, this::toChildFavoriteListBean); } @@ -671,7 +691,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteList favoriteList = getFavoriteList0(user, favoriteListId); ChildFavoriteList child = getChildList0(favoriteList, childListId); - return toBean(ChildFavoriteListBean.class, child, this::childFavoriteListBeanFunction); + return toChildFavoriteListBean(child); } @@ -713,7 +733,7 @@ public class FavoriteListService extends PollenServiceSupport { ChildFavoriteList result = saveChildFavoriteList(favoriteList, childList); commit(); - return toBean(ChildFavoriteListBean.class, result, this::childFavoriteListBeanFunction); + return toChildFavoriteListBean(result); } @@ -774,7 +794,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteList favoriteList = importFavoriteListMembersFromVoterList(voterList, user); commit(); - return toBean(FavoriteListBean.class, favoriteList); + return toFavoriteListBean(favoriteList); } protected FavoriteList importFavoriteListMembersFromVoterList(VoterList voterList, PollenUser user) { @@ -954,7 +974,7 @@ public class FavoriteListService extends PollenServiceSupport { int childIndex = 0; for (ChildFavoriteListExport childFavoriteListExport : favoriteListExport.getChildren()) { - ErrorMap errorsChild = checkChildList(favoriteList, children, childFavoriteListExport.toBean(existingFavoriteLists)); + ErrorMap errorsChild = checkChildList(favoriteList, children, toChildFavoriteListBean(childFavoriteListExport, existingFavoriteLists)); errorsChild.copyTo(errors, "favoriteLists[" + favoriteListIndex + "].children[" + childIndex + "]"); @@ -968,6 +988,19 @@ public class FavoriteListService extends PollenServiceSupport { return errors; } + protected ChildFavoriteListBean toChildFavoriteListBean(ChildFavoriteListExport entity, List<FavoriteList> existingFavoriteLists) { + ChildFavoriteListBean bean = new ChildFavoriteListBean(); + bean.setWeight(entity.getWeight()); + FavoriteList childEntity = existingFavoriteLists.stream() + .filter(favoriteList -> entity.getChild().equals(favoriteList.getName())) + .findFirst() + .orElse(null); + FavoriteListBean childBean = toFavoriteListBean(childEntity); + bean.setChild(childBean); + + return bean; + } + public ExportBean exportFavoriteLists() { PollenUser user = checkAndGetConnectedUser(); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedbackService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedbackService.java index 8854e5ec..c54df79d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedbackService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedbackService.java @@ -42,8 +42,7 @@ public class FeedbackService extends PollenServiceSupport { PollenUser user = getConnectedUser(); PollenUserBean userBean = null; if (user != null) { - userBean = new PollenUserBean(); - userBean.fromEntity(user); + userBean = getUserService().toPollenUserBean(user); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FixturesService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FixturesService.java index a6e5f465..970dcecf 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FixturesService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FixturesService.java @@ -38,11 +38,11 @@ import org.chorem.pollen.services.bean.PollBean; import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.service.security.SecurityService; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class FixturesService extends PollenServiceSupport { @@ -106,18 +106,14 @@ public class FixturesService extends PollenServiceSupport { Collection<Poll> polls = fixtures.fixture("polls"); List<Choice> choices = fixtures.fixture("choices"); - List<ChoiceBean> choicesBean = new ArrayList<>(); - for (Choice choice : choices) { - ChoiceBean choiceBean = new ChoiceBean(); - choiceBean.fromEntity(choice); - choicesBean.add(choiceBean); - } + List<ChoiceBean> choicesBean = choices.stream() + .map(getChoiceService()::toChoiceBean) + .collect(Collectors.toList()); for (Poll poll : polls) { try { - PollBean pollBean = new PollBean(); - pollBean.fromEntity(poll); + PollBean pollBean = getPollService().toPollBean(poll); PollenEntityRef<Poll> createdPoll = pollService.createPoll(pollBean, choicesBean, Collections.emptyList(), Collections.emptyList()); poll.setTopiaId(createdPoll.getEntityId()); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/GtuService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/GtuService.java index d129a0bf..83a01416 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/GtuService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/GtuService.java @@ -10,17 +10,18 @@ package org.chorem.pollen.services.service; * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.persistence.entity.Poll; @@ -41,15 +42,24 @@ import java.util.Optional; */ public class GtuService extends PollenServiceSupport { - public ResourceStreamBean getCurrentGtu() { + public GtuMetaBean toGtuMetaBean(PollenResource entity) { + GtuMetaBean bean = new GtuMetaBean(); + bean.setEntityId(entity.getTopiaId()); - ResourceStreamBean result = null; + bean.setName(entity.getName()); + bean.setSize(entity.getSize()); + bean.setContentType(entity.getContentType()); + bean.setResourceType(entity.getResourceType()); + bean.setUploadDate(entity.getTopiaCreateDate()); - Optional<PollenResource> currentGtu = getCurrentGtu0(); - if (currentGtu.isPresent()) { - result = toBean(ResourceStreamBean.class, currentGtu.get()); - } - return result; + return bean; + } + + public ResourceStreamBean getCurrentGtu() { + + return getCurrentGtu0() + .map(getPollenResourceService()::toResourceStreamBean) + .orElse(null); } public List<GtuMetaBean> getAllGtus() { @@ -62,10 +72,14 @@ public class GtuService extends PollenServiceSupport { String currentId = CollectionUtils.isNotEmpty(gtus) ? Iterables.getLast(gtus).getTopiaId() : null; - return toBeanList(GtuMetaBean.class, gtus, input -> { - input.setCurrent(input.getEntityId().equals(currentId)); - return input; - }); + ImmutableList<GtuMetaBean> gtuMetaBeans = toBeanList(gtus, this::toGtuMetaBean); + + if (CollectionUtils.isNotEmpty(gtus)) { + Iterables.getLast(gtuMetaBeans).setCurrent(true); + } + + return gtuMetaBeans; + } public boolean isGtu() { @@ -83,16 +97,6 @@ public class GtuService extends PollenServiceSupport { .toJavaUtil(); } - protected boolean isPollGtuValidated(String pollId) { - Poll poll = getPollService().getPoll0(pollId); - return isGtuValidated(poll); - } - - protected boolean isUserGtuValidated(String userId) { - PollenUser user = getUserService().getUser0(userId); - return isGtuValidated(user); - } - public boolean isGtuValidated(PollenUser user) { return isGtuValidatedForDate(user.getGtuValidationDate()); } 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 dc7f72d2..084d48b1 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 @@ -31,6 +31,7 @@ import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollType; import org.chorem.pollen.persistence.entity.PollenPrincipal; import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.Polls; import org.chorem.pollen.services.bean.ChoiceBean; import org.chorem.pollen.services.bean.PaginationParameterBean; import org.chorem.pollen.services.bean.PaginationResultBean; @@ -52,9 +53,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import java.util.function.Function; import static org.nuiton.i18n.I18n.l; @@ -66,57 +67,136 @@ import static org.nuiton.i18n.I18n.l; */ public class PollService extends PollenServiceSupport { - private final Function<PollBean, PollBean> pollBeanFunction = input -> { - if (isNotPermitted(PermissionVerb.editPoll, input.getEntityId())) { - input.setPermission(null); - input.setCreatorEmail(null); + public PollBean toPollBean(Poll entity) { + PollBean bean = new PollBean(); + + bean.setEntityId(entity.getTopiaId()); + + if (entity.getCreator() == null || entity.getCreator().getPermission() == null) { + + bean.setPermission(null); } else { - ReportResumeBean report = getReportService().getReport(input.getEntityId()); - input.setReport(report); + + bean.setPermission(entity.getCreator().getPermission().getToken()); + } - boolean commentIsVisible = isPermitted(PermissionVerb.readComment, input.getEntityId()); - input.setCommentIsVisible(commentIsVisible); + if (entity.getCreator() != null) { + + bean.setCreatorName(entity.getCreator().getName()); + bean.setCreatorEmail(entity.getCreator().getEmail()); + + } - input.setVoteIsVisible(isPermitted(PermissionVerb.readVote, input.getEntityId())); + bean.setTitle(entity.getTitle()); + bean.setDescription(entity.getDescription()); + bean.setCreateDate(entity.getTopiaCreateDate()); + bean.setBeginChoiceDate(entity.getBeginChoiceDate()); + bean.setEndChoiceDate(entity.getEndChoiceDate()); + bean.setBeginDate(entity.getBeginDate()); + bean.setEndDate(entity.getEndDate()); + bean.setMaxChoiceNumber(entity.getMaxChoiceNumber()); + bean.setChoiceAddAllowed(entity.isChoiceAddAllowed()); + bean.setAnonymousVoteAllowed(entity.isAnonymousVoteAllowed()); + bean.setContinuousResults(entity.isContinuousResults()); + bean.setVoteCountingType(entity.getVoteCountingType()); + bean.setPollType(entity.getPollType()); + bean.setVoteVisibility(entity.getVoteVisibility()); + bean.setCommentVisibility(entity.getCommentVisibility()); + bean.setResultVisibility(entity.getResultVisibility()); + bean.setParticipants(new LinkedHashSet<>(entity.getParticipants() == null ? Collections.emptyList() : Arrays.asList(entity.getParticipants().split("\\s")))); + bean.setWithMe(entity.isWithMe()); + bean.setChoiceType(entity.getChoiceType()); + bean.setNotifyMeHoursBeforePollEnds(entity.getNotifyMeHoursBeforePollEnds()); + bean.setVoteNotification(entity.isVoteNotification()); + bean.setCommentNotification(entity.isCommentNotification()); + bean.setNewChoiceNotification(entity.isNewChoiceNotification()); + bean.setNotificationLocale(entity.getNotificationLocale()); Date now = getNow(); - boolean beforePollEndDate = input.getEndDate() == null || now.before(input.getEndDate()); + if (Polls.isFinished(entity, now)) { + bean.setStatus(PollBean.PollStatus.CLOSED); + bean.setClosed(true); + } else { + bean.setClosed(false); + bean.setStatus(PollBean.PollStatus.CREATED); + + if (entity.isChoiceAddAllowed()) { + Date beginChoiceDate = entity.getBeginChoiceDate(); + Date endChoiceDate = entity.getEndChoiceDate(); + if ((beginChoiceDate == null || now.after(beginChoiceDate)) + && (endChoiceDate == null || now.before(endChoiceDate))) { + bean.setStatus(PollBean.PollStatus.ADDING_CHOICES); + } + } - boolean resultIsVisible = (beforePollEndDate || input.isContinuousResults()) - && isPermitted(PermissionVerb.readPollResult, input.getEntityId()); + if (PollBean.PollStatus.ADDING_CHOICES != bean.getStatus()) { + Date beginDate = entity.getBeginDate(); + Date endDate = entity.getEndDate(); + if (beginDate != null && now.after(beginDate) && (endDate == null || now.before(endDate))) { + bean.setStatus(PollBean.PollStatus.VOTING); + } + } + } - input.setResultIsVisible(resultIsVisible); + if (isNotPermitted(PermissionVerb.editPoll, entity.getTopiaId())) { + bean.setPermission(null); + bean.setCreatorEmail(null); + + } else { + ReportResumeBean report = getReportService().getReport(entity.getTopiaId()); + bean.setReport(report); + } + + boolean commentIsVisible = isPermitted(PermissionVerb.readComment, entity.getTopiaId()); + bean.setCommentIsVisible(commentIsVisible); + + bean.setVoteIsVisible(isPermitted(PermissionVerb.readVote, entity.getTopiaId())); + + boolean beforePollEndDate = entity.getEndDate() == null || now.before(entity.getEndDate()); + + boolean resultIsVisible = (beforePollEndDate || entity.isContinuousResults()) + && isPermitted(PermissionVerb.readPollResult, entity.getTopiaId()); + + bean.setResultIsVisible(resultIsVisible); boolean canVote = beforePollEndDate - && (input.getBeginDate() == null || !now.before(input.getBeginDate())) - && isPermitted(PermissionVerb.addVote, input.getEntityId()); + && (entity.getBeginDate() == null || !now.before(entity.getBeginDate())) + && isPermitted(PermissionVerb.addVote, entity.getTopiaId()); - input.setCanVote(canVote); + bean.setCanVote(canVote); if (commentIsVisible) { - long commentCount = getCommentService().getCommentCount(input.getEntityId()); - input.setCommentCount(commentCount); + long commentCount = getCommentService().getCommentCount(entity.getTopiaId()); + bean.setCommentCount(commentCount); + } + if (entity.isPersisted()) { + long voteCount = getVoteService().getVoteCount(entity); + bean.setVoteCount(voteCount); + long participantCount = getVoterListService().getVoterListMemberCount(entity); + bean.setParticipantCount(participantCount); + long choiceCount = getChoiceService().getChoiceCount(entity); + bean.setChoiceCount(choiceCount); } - long voteCount = getVoteService().getVoteCount(input.getEntityId()); - input.setVoteCount(voteCount); - long participantCount = getVoterListService().getVoterListMemberCount(input.getEntityId()); - input.setParticipantCount(participantCount); - long choiceCount = getChoiceService().getChoiceCount(input.getEntityId()); - input.setChoiceCount(choiceCount); - input.setGtuValidated(getGtuService().isPollGtuValidated(input.getEntityId())); + bean.setGtuValidated(getGtuService().isGtuValidated(entity)); + bean.setMaxVoters(getMaxVoters(entity)); - return input; + return bean; }; + protected int getMaxVoters(Poll poll) { + boolean premium = poll.isPremium() || getUserService().isPremium(poll.getCreator().getPollenUser()); + return premium ? 0 : getPollenServiceConfig().getMaxVoters(); + } + public PaginationResultBean<PollBean> getPolls(PaginationParameterBean paginationParameter, String search) { checkIsAdmin(); PaginationParameter page = getPaginationParameter(paginationParameter); PaginationResult<Poll> polls = getPollDao().findAll(page, search); - return toPaginationListBean(PollBean.class, polls, pollBeanFunction); + return toPaginationListBean(polls, this::toPollBean); } @@ -126,7 +206,7 @@ public class PollService extends PollenServiceSupport { PaginationParameter page = getPaginationParameter(paginationParameter); PaginationResult<Poll> polls = getPollDao().findAllCreated(connectedUser, page, search); - return toPaginationListBean(PollBean.class, polls, pollBeanFunction); + return toPaginationListBean(polls, this::toPollBean); } @@ -136,7 +216,7 @@ public class PollService extends PollenServiceSupport { PaginationParameter page = getPaginationParameter(paginationParameter); PaginationResult<Poll> polls = getPollDao().findAllInvited(connectedUser, page, search); - return toPaginationListBean(PollBean.class, polls, pollBeanFunction); + return toPaginationListBean(polls, this::toPollBean); } @@ -146,7 +226,7 @@ public class PollService extends PollenServiceSupport { PaginationParameter page = getPaginationParameter(paginationParameter); PaginationResult<Poll> polls = getPollDao().findAllParticipated(connectedUser, page, search); - return toPaginationListBean(PollBean.class, polls, pollBeanFunction); + return toPaginationListBean(polls, this::toPollBean); } @@ -157,7 +237,7 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); - return toBean(PollBean.class, poll, pollBeanFunction); + return toPollBean(poll); } @@ -258,7 +338,7 @@ public class PollService extends PollenServiceSupport { getNotificationService().onPollEdited(savedPoll, newParticipants); getFeedService().onPollEdited(savedPoll, newParticipants); - return toBean(PollBean.class, savedPoll, pollBeanFunction); + return toPollBean(savedPoll); } @@ -285,7 +365,7 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); // Clone Poll - PollBean clonedPoll = toBean(PollBean.class, poll); + PollBean clonedPoll = toPollBean(poll); clonedPoll.setEntityId(null); clonedPoll.setPermission(null); @@ -324,9 +404,6 @@ public class PollService extends PollenServiceSupport { poll.setEndDate(getNow()); - savePoll(toBean(PollBean.class, poll), null); - - //TODO : check if correct commit(); getNotificationService().onPollClosed(poll); @@ -344,9 +421,6 @@ public class PollService extends PollenServiceSupport { poll.setEndDate(null); - savePoll(toBean(PollBean.class, poll), null); - - //TODO : check if correct commit(); getNotificationService().onPollReopened(poll); @@ -389,7 +463,7 @@ public class PollService extends PollenServiceSupport { poll.getCreator().setPollenUser(connectedUser); commit(); - return toBean(PollBean.class, poll, pollBeanFunction); + return toPollBean(poll); } public Collection<Poll> getPollsWithReminderNeeded() { @@ -580,7 +654,7 @@ public class PollService extends PollenServiceSupport { ErrorMap choiceErrors = getChoiceService().checkChoice(existingChoices, choice); choiceErrors.copyTo(errorMap, "choice[" + i + "]."); - existingChoices.add(choice.toEntity()); + existingChoices.add(getChoiceService().toChoice(choice)); } 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 158b22e9..9cdd15f3 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 @@ -26,6 +26,7 @@ import org.chorem.pollen.persistence.entity.ResourceType; import org.chorem.pollen.services.PollenService; import org.chorem.pollen.services.PollenTechnicalException; import org.chorem.pollen.services.UnitHuman; +import org.chorem.pollen.services.bean.GtuMetaBean; import org.chorem.pollen.services.bean.PollenEntityId; import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.bean.ResourceFileBean; @@ -50,12 +51,42 @@ import static org.nuiton.i18n.I18n.l; */ public class PollenResourceService extends PollenServiceSupport implements PollenService { + public ResourceStreamBean toResourceStreamBean(PollenResource entity) { + ResourceStreamBean bean = new ResourceStreamBean(); + bean.setEntityId(entity.getTopiaId()); + + try { + bean.setResourceContent(entity.getResourceContent().getBinaryStream()); + } catch (SQLException e) { + throw new PollenTechnicalException(e); + } + + bean.setName(entity.getName()); + bean.setSize(entity.getSize()); + bean.setContentType(entity.getContentType()); + + return bean; + } + + public ResourceMetaBean toResourceMetaBean(PollenResource entity) { + ResourceMetaBean bean = new GtuMetaBean(); + bean.setEntityId(entity.getTopiaId()); + + bean.setName(entity.getName()); + bean.setSize(entity.getSize()); + bean.setContentType(entity.getContentType()); + bean.setResourceType(entity.getResourceType()); + bean.setUploadDate(entity.getTopiaCreateDate()); + + return bean; + } + public ResourceStreamBean getResource(String resourceId) { checkNotNull(resourceId); PollenResource resource = getResource0(resourceId); - return toBean(ResourceStreamBean.class, resource); + return toResourceStreamBean(resource); } public ResourceMetaBean getMetaResource(String resourceId) { @@ -63,7 +94,7 @@ public class PollenResourceService extends PollenServiceSupport implements Polle PollenResource resource = getResource0(resourceId); - return toBean(ResourceMetaBean.class, resource); + return toResourceMetaBean(resource); } public ResourceStreamBean getResourcePreview(String resourceId) { 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 586a2947..faa2887d 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 @@ -443,52 +443,21 @@ public abstract class PollenServiceSupport implements PollenService { } - protected <T extends TopiaEntity, B extends PollenBean<T>> B toBean(Class<B> beanType, T entity) { + protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableList<B> toBeanList(Collection<T> entities, Function<T, B> beanFunction) { - return toBean(beanType, entity, null); + return PollenBeans.toBeanList(entities, beanFunction); } - protected <T extends TopiaEntity, B extends PollenBean<T>> B toBean(Class<B> beanType, T entity, Function<B, B> beanFunction) { + protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableSet<B> toBeanSet(Collection<T> entities, Function<T, B> beanFunction) { - return PollenBeans.toBean(beanType, entity, beanFunction); + return PollenBeans.toBeanSet(entities, beanFunction); } - protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableList<B> toBeanList(Class<B> beanType, Collection<T> entities) { + protected <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toPaginationListBean(PaginationResult<E> entities, Function<E, B> beanFunction) { - return toBeanList(beanType, entities, null); - - } - - - protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableList<B> toBeanList(Class<B> beanType, Collection<T> entities, Function<B, B> beanFunction) { - - return PollenBeans.toBeanList(beanType, entities, beanFunction); - - } - - protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableSet<B> toBeanSet(Class<B> beanType, Collection<T> entities) { - - return toBeanSet(beanType, entities, null); - - } - - protected <T extends TopiaEntity, B extends PollenBean<T>> ImmutableSet<B> toBeanSet(Class<B> beanType, Collection<T> entities, Function<B, B> beanFunction) { - - return PollenBeans.toBeanSet(beanType, entities, beanFunction); - - } - - protected <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toPaginationListBean(Class<B> beanType, PaginationResult<E> entities) { - - return toPaginationListBean(beanType, entities, null); - - } - - protected <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toPaginationListBean(Class<B> beanType, PaginationResult<E> entities, Function<B, B> beanFunction) { - - return PollenBeans.toBean(beanType, entities, beanFunction); + return PollenBeans.toBean(entities, beanFunction); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java index f911963a..9bb0ed06 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java @@ -29,22 +29,25 @@ import org.chorem.pollen.persistence.entity.PollenPrincipal; import org.chorem.pollen.persistence.entity.PollenToken; import org.chorem.pollen.persistence.entity.PollenUser; import org.chorem.pollen.persistence.entity.PollenUserTopiaDao; +import org.chorem.pollen.persistence.entity.UserCredential; import org.chorem.pollen.persistence.entity.Vote; import org.chorem.pollen.services.PollenService; import org.chorem.pollen.services.bean.PaginationParameterBean; import org.chorem.pollen.services.bean.PaginationResultBean; import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.bean.PollenUserBean; +import org.chorem.pollen.services.bean.UserCredentialBean; import org.chorem.pollen.services.service.security.PollenInvalidEmailActivationTokenException; import org.chorem.pollen.services.service.security.PollenInvalidPasswordException; +import org.chorem.pollen.services.service.security.PollenSecurityContext; import org.nuiton.util.pagination.PaginationOrder; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; -import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; -import java.util.function.Function; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.l; @@ -56,12 +59,40 @@ import static org.nuiton.i18n.I18n.l; */ public class PollenUserService extends PollenServiceSupport implements PollenService { - private final Function<PollenUserBean, PollenUserBean> pollenUserFunction = input -> { - input.setPassword(null); - input.setGtuValidated(getGtuService().isUserGtuValidated(input.getEntityId())); + public PollenUserBean toPollenUserBean(PollenUser entity) { + PollenUserBean bean = new PollenUserBean(); + bean.setEntityId(entity.getTopiaId()); + + bean.setName(entity.getName()); + bean.setAdministrator(entity.isAdministrator()); + bean.setBanned(entity.isBanned()); + bean.setLanguage(entity.getLanguage()); + bean.setEmail(entity.getEmail()); + bean.setPassword(null); + bean.setEmailIsValidate(entity.getEmailActivationToken() == null); + bean.setWithPassword(entity.getPassword() != null); + if (entity.getUserCredential() != null) { + bean.setCredentials(entity.getUserCredential().stream() + .map(this::toUserCredentialBean) + .collect(Collectors.toList())); + } + bean.setPremiumTo(entity.getPremiumTo()); + - return input; - }; + bean.setGtuValidated(getGtuService().isGtuValidated(entity)); + bean.setPremium(isPremium(entity)); + + return bean; + } + + public UserCredentialBean toUserCredentialBean(UserCredential entity) { + UserCredentialBean bean = new UserCredentialBean(); + bean.setEntityId(entity.getTopiaId()); + bean.setProvider(entity.getProvider()); + bean.setUserName(entity.getUserName()); + bean.setEmailAddress(entity.getEmail()); + return bean; + } public PaginationResultBean<PollenUserBean> getUsers(PaginationParameterBean paginationParameter, String search) { @@ -73,7 +104,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer } PaginationResult<PollenUser> pollenUsers = getPollenUserDao().findAll(page, search); - return toPaginationListBean(PollenUserBean.class, pollenUsers, pollenUserFunction); + return toPaginationListBean(pollenUsers, this::toPollenUserBean); } @@ -86,7 +117,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer checkIsAdmin(); pollenUser = getUser0(userId); } - return toBean(PollenUserBean.class, pollenUser, pollenUserFunction); + return toPollenUserBean(pollenUser); } @@ -126,7 +157,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer getNotificationService().onUserEdited(result); - return toBean(PollenUserBean.class, result); + return toPollenUserBean(result); } @@ -218,46 +249,19 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer if (getPollenUserDao().count() == 0) { - List<PollenUserBean> listUser = new ArrayList<>(); - - { // set users - PollenUserBean user = new PollenUserBean(); - - user.setAdministrator(true); - user.setEmail("admin@pollen.org"); - user.setPassword("admin"); - user.setName("admin"); - - listUser.add(user); - - user = new PollenUserBean(); - - user.setAdministrator(false); - user.setEmail("user@pollen.org"); - user.setPassword("user"); - user.setName("user"); - - listUser.add(user); - - } - - - for (PollenUserBean user : listUser) { - - // create user - PollenEntityRef<PollenUser> newUser = createUser(user); - - // validate user - PollenUser pollenUser = getPollenUserDao().forTopiaIdEquals(newUser.getEntityId()).findUnique(); - - try { - validateUserEmail(newUser.getEntityId(), pollenUser.getEmailActivationToken().getToken()); - } catch (PollenInvalidEmailActivationTokenException e) { - e.printStackTrace(); - } + PollenUserBean adminBean = new PollenUserBean(); + adminBean.setEmail("admin@chorem.org"); + adminBean.setPassword("admin"); + adminBean.setName("admin"); + PollenUser admin = savePollenUser(adminBean); + admin.setAdministrator(true); + try { + validateUserEmail(admin.getTopiaId(), admin.getEmailActivationToken().getToken()); + } catch (PollenInvalidEmailActivationTokenException e) { + e.printStackTrace(); } - + commit(); } } @@ -354,10 +358,14 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer } - toSave.setAdministrator(user.isAdministrator()); + PollenSecurityContext securityContext = getSecurityContext(); + if (securityContext.isAdmin()) { + toSave.setAdministrator(user.isAdministrator()); + toSave.setBanned(user.isBanned()); + toSave.setPremiumTo(user.getPremiumTo()); + } toSave.setName(user.getName()); toSave.setLanguage(user.getLanguage()); - toSave.setBanned(user.isBanned()); toSave.setEmail(cleanMail); if (user.isEmailIsValidate() && toSave.getEmailActivationToken() != null) { toSave.setEmailActivationToken(null); @@ -411,4 +419,12 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer commit(); } + + public boolean isPremium(PollenUser user) { + return user != null && isPremium(user.getPremiumTo()); + } + + protected boolean isPremium(Date premiumTo) { + return premiumTo != null && premiumTo.after(getNow()); + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/ReportService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/ReportService.java index b6a13c1b..121fdb7c 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/ReportService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/ReportService.java @@ -25,8 +25,10 @@ import org.chorem.pollen.persistence.entity.Choice; import org.chorem.pollen.persistence.entity.Comment; import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.Report; +import org.chorem.pollen.persistence.entity.ReportImpl; import org.chorem.pollen.persistence.entity.ReportResume; import org.chorem.pollen.services.bean.ReportBean; +import org.chorem.pollen.services.bean.ReportLevel; import org.chorem.pollen.services.bean.ReportResumeBean; import org.chorem.pollen.services.service.security.PermissionVerb; import org.nuiton.topia.persistence.TopiaEntity; @@ -40,6 +42,19 @@ import static org.nuiton.i18n.I18n.l; */ public class ReportService extends PollenServiceSupport { + public ReportBean toReportBean(Report entity) { + ReportBean bean = new ReportBean(); + + bean.setEntityId(entity.getTopiaId()); + + bean.setLevel(ReportLevel.of(entity.getLevel())); + bean.setEmail(entity.getEmail()); + bean.setIgnore(entity.isIgnore()); + + return bean; + + } + public void addPollReport(String pollId, ReportBean reportBean) throws InvalidFormException { @@ -59,7 +74,7 @@ public class ReportService extends PollenServiceSupport { checkNotNull(pollId); checkPermission(PermissionVerb.editPoll, pollId); - return getReportService().getReports(pollId); + return getReports(pollId); } @@ -92,7 +107,7 @@ public class ReportService extends PollenServiceSupport { checkNotNull(choiceId); checkPermission(PermissionVerb.editPoll, pollId); - return getReportService().getReports(choiceId); + return getReports(choiceId); } @@ -125,7 +140,7 @@ public class ReportService extends PollenServiceSupport { checkNotNull(commentId); checkPermission(PermissionVerb.editPoll, pollId); - return getReportService().getReports(commentId); + return getReports(commentId); } @@ -142,7 +157,7 @@ public class ReportService extends PollenServiceSupport { List<Report> reports = getReportTopiaDao().forTargetIdEquals(targetId).findAll(); - return toBeanList(ReportBean.class, reports); + return toBeanList(reports, this::toReportBean); } protected Report addReport(ReportBean report, TopiaEntity target) throws InvalidFormException { @@ -156,7 +171,12 @@ public class ReportService extends PollenServiceSupport { ErrorMap errorMap = checkReport(report); errorMap.failIfNotEmpty(); - Report reportEntity = report.toEntity(); + Report reportEntity = new ReportImpl(); + + reportEntity.setTopiaId(report.getEntityId()); + reportEntity.setLevel(report.getLevel().getScore()); + reportEntity.setEmail(report.getEmail()); + reportEntity.setIgnore(report.isIgnore()); reportEntity.setTargetId(target.getTopiaId()); reportEntity = getReportTopiaDao().create(reportEntity); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java index 6997c249..8300665d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java @@ -181,11 +181,24 @@ public class SocialAuthService extends PollenServiceSupport { return manager; } + public LoginProviderBean toLoginProviderBean(LoginProvider entity) { + LoginProviderBean bean = new LoginProviderBean(); + + bean.setEntityId(entity.getTopiaId()); + bean.setName(entity.getName()); + bean.setKey(entity.getKey()); + bean.setSecret(entity.getSecret()); + bean.setPermissions(entity.getPermissions()); + bean.setActive(entity.isActive()); + + return bean; + } + public List<LoginProviderBean> getAllLoginProviders() { checkIsAdmin(); LoginProviderTopiaDao dao = getLoginProviderDao(); List<LoginProvider> loginProviders = dao.findAll(); - return toBeanList(LoginProviderBean.class, loginProviders); + return toBeanList(loginProviders, this::toLoginProviderBean); } public List<String> getActiveLoginProviders() { @@ -238,7 +251,7 @@ public class SocialAuthService extends PollenServiceSupport { toSave.setActive(loginProvider.isActive()); commit(); - return toBean(LoginProviderBean.class, toSave); + return toLoginProviderBean(toSave); } public void deleteLoginProvider(String providerId) { diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java index 56826893..145cb25d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java @@ -87,7 +87,7 @@ public class VoteCountingService extends PollenServiceSupport { Preconditions.checkNotNull(pollId); Poll poll = getPollService().getPoll0(pollId); - List<Vote> votes = getVoteService().getVotes0(poll); + List<Vote> votes = getVotes(poll); VoteCounting voteCounting = getVoteCounting(poll); VoteCountingStrategy strategy = voteCounting.newStrategy(); @@ -105,6 +105,15 @@ public class VoteCountingService extends PollenServiceSupport { } + protected List<Vote> getVotes(Poll poll) { + List<Vote> votes = getVoteService().getVotes0(poll); + int maxVoters = getPollService().getMaxVoters(poll); + if (maxVoters > 0 && votes.size() > maxVoters) { + votes = votes.subList(0, maxVoters); + } + return votes; + } + public ListVoteCountingResultBean getGroupResult(String pollId) { Preconditions.checkNotNull(pollId); @@ -112,7 +121,7 @@ public class VoteCountingService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); VoterList mainVoterList = getVoterListService().getMainVoterList0(poll); - List<Vote> votes = getVoteService().getVotes0(poll); + List<Vote> votes = getVotes(poll); VoteCounting voteCounting = getVoteCounting(poll); VoteCountingStrategy strategy = voteCounting.newStrategy(); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java index c2e2838e..fc907339 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java @@ -30,6 +30,7 @@ import org.chorem.pollen.persistence.entity.Polls; import org.chorem.pollen.persistence.entity.Vote; import org.chorem.pollen.persistence.entity.VoteToChoice; import org.chorem.pollen.persistence.entity.VoteToChoiceTopiaDao; +import org.chorem.pollen.persistence.entity.VoteToChoices; import org.chorem.pollen.persistence.entity.VoterList; import org.chorem.pollen.persistence.entity.VoterListMember; import org.chorem.pollen.services.bean.ChoiceBean; @@ -50,7 +51,6 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.function.Function; import static org.nuiton.i18n.I18n.l; @@ -62,19 +62,62 @@ import static org.nuiton.i18n.I18n.l; */ public class VoteService extends PollenServiceSupport { - private final Function<VoteBean, VoteBean> voteBeanFunction = input -> { - if (isNotPermitted(PermissionVerb.editVote, input.getEntityId())) { - input.setPermission(null); - if (input.isAnonymous()) { - input.setVoterName(null); + public VoteBean toVoteBean(Vote entity) { + + VoteBean bean = new VoteBean(); + + bean.setEntityId(entity.getTopiaId()); + + if (entity.getVoter() == null || entity.getVoter().getPermission() == null) { + + bean.setPermission(null); + + } else { + + bean.setPermission(entity.getVoter().getPermission().getToken()); + + } + + bean.setAnonymous(entity.isAnonymous()); + bean.getVoterId().setEntityId(entity.getVoter().getTopiaId()); + bean.setVoterName(entity.getVoter().getName()); + bean.setWeight(entity.getWeight()); + + entity.getVoteToChoice().stream() + .sorted(VoteToChoices.VOTE_TO_CHOICE_COMPARATOR) + .map(this::toVoteToChoiceBean) + .forEach(bean::addChoice); + + + if (entity.getVoterListMember() != null) { + + bean.setVoterListMembers(entity.getVoterListMember()); + + } + + if (isNotPermitted(PermissionVerb.editVote, entity.getTopiaId())) { + bean.setPermission(null); + if (entity.isAnonymous()) { + bean.setVoterName(null); } } else { - ReportResumeBean report = getReportService().getReport(input.getEntityId()); - input.setReport(report); + ReportResumeBean report = getReportService().getReport(entity.getTopiaId()); + bean.setReport(report); } - return input; + return bean; }; + public VoteToChoiceBean toVoteToChoiceBean(VoteToChoice entity) { + + VoteToChoiceBean bean = new VoteToChoiceBean(); + + bean.setEntityId(entity.getTopiaId()); + bean.setVoteValue(entity.getVoteValue()); + bean.getChoiceId().setEntityId(entity.getChoice().getTopiaId()); + + return bean; + } + public VoteBean getNewVote(String pollId) { checkPermission(PermissionVerb.addVote, pollId); @@ -113,17 +156,22 @@ public class VoteService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); List<Vote> allVotes = getVotes0(poll); + int maxVoters = getPollService().getMaxVoters(poll); + List<Vote> votes = new ArrayList<>(); + int indexVote = 0; for (Vote vote : allVotes) { - if (isPermitted(PermissionVerb.readVote, vote.getTopiaId())) { + if (isPermitted(PermissionVerb.editVote, vote.getTopiaId()) + || (isPermitted(PermissionVerb.readVote, vote.getTopiaId()) && (maxVoters == 0 || indexVote < maxVoters))) { votes.add(vote); } + indexVote++; } PaginationResult<Vote> votePaginationResult = PaginationResult.fromFullList(votes, getPaginationParameter(paginationParameter)); - return toPaginationListBean(VoteBean.class, votePaginationResult, voteBeanFunction); + return toPaginationListBean(votePaginationResult, this::toVoteBean); } @@ -136,7 +184,7 @@ public class VoteService extends PollenServiceSupport { Vote result = getVote(poll, voteId); - return toBean(VoteBean.class, result, voteBeanFunction); + return toVoteBean(result); } @@ -181,7 +229,7 @@ public class VoteService extends PollenServiceSupport { getNotificationService().onVoteEdited(poll, result); getFeedService().onVoteEdited(poll, result); - return toBean(VoteBean.class, result); + return toVoteBean(result); } @@ -423,11 +471,7 @@ public class VoteService extends PollenServiceSupport { } - public long getVoteCount(String pollId) { - checkNotNull(pollId); - - Poll poll = getPollService().getPoll0(pollId); - + public long getVoteCount(Poll poll) { return getVoteDao().forPollEquals(poll).count(); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java index 40bb172f..c9038094 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java @@ -136,30 +136,40 @@ public class VoterListService extends PollenServiceSupport { // // } - protected Function<VoterListMemberBean, VoterListMemberBean> getAddVotingField(String pollId) { - List<Vote> votes = getVoteDao().forProperties(Vote.PROPERTY_POLL + "." + Poll.PROPERTY_TOPIA_ID, pollId).findAll(); + public VoterListMemberBean toVoterListMemberBean(VoterListMember entity) { - final Set<String> memberIdVoting = votes.stream() - .map(Vote::getVoterListMember) - .flatMap(Collection::stream) - .map(VoterListMember::getTopiaId) - .collect(Collectors.toSet()); + VoterListMemberBean bean = new VoterListMemberBean(); + + bean.setEntityId(entity.getTopiaId()); + if (entity.getMember() != null) { + bean.setName(entity.getMember().getName()); + bean.setEmail(entity.getMember().getEmail()); + } + bean.setWeight(entity.getWeight()); + bean.getVoterListId().setEntityId(entity.getVoterList().getTopiaId()); + + boolean voting = getVoteDao().forVoterListMemberContains(entity).exists(); + bean.setVoting(voting); - return member -> { - member.setVoting(memberIdVoting.contains(member.getEntityId())); - return member; - }; + return bean; } - protected VoterListBean voterListBeanFunction(VoterListBean bean) { + public VoterListBean toVoterListBean(VoterList entity) { + + VoterListBean bean = new VoterListBean(); + bean.setEntityId(entity.getTopiaId()); + bean.setName(entity.getName()); + bean.setWeight(entity.getWeight()); + if (entity.getParent() != null) { + bean.getParentId().setEntityId(entity.getParent().getTopiaId()); + } - String entityId = bean.getEntityId(); long countSubLists = getVoterListDao() - .forProperties(VoterList.PROPERTY_PARENT + "." + VoterList.PROPERTY_TOPIA_ID, entityId) + .forParentEquals(entity) .count(); long countMembers = getVoterListMemberDao() - .forProperties(VoterListMember.PROPERTY_VOTER_LIST + "." + VoterList.PROPERTY_TOPIA_ID, entityId) + .forVoterListEquals(entity) .count(); bean.setCountSubLists(countSubLists); @@ -174,7 +184,7 @@ public class VoterListService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); List<VoterList> voterLists = getVoterLists0(poll, parentId); - return toBeanList(VoterListBean.class, voterLists, this::voterListBeanFunction); + return toBeanList(voterLists, this::toVoterListBean); } @@ -190,7 +200,7 @@ public class VoterListService extends PollenServiceSupport { VoterListBean result = null; if (voterList != null) { - result = toBean(VoterListBean.class, voterList, this::voterListBeanFunction); + result = toVoterListBean(voterList); } return result; @@ -203,7 +213,7 @@ public class VoterListService extends PollenServiceSupport { checkPermission(PermissionVerb.readPoll, pollId); VoterList voterList = getVoterList0(pollId, voterListId); - return toBean(VoterListBean.class, voterList, this::voterListBeanFunction); + return toVoterListBean(voterList); } @@ -239,7 +249,7 @@ public class VoterListService extends PollenServiceSupport { VoterList result = getVoterListDao().forTopiaIdEquals(voterList.getEntityId()).findUnique(); //TODO Notify - return toBean(VoterListBean.class, result, this::voterListBeanFunction); + return toVoterListBean(result); } @@ -266,7 +276,7 @@ public class VoterListService extends PollenServiceSupport { VoterList voterList = getVoterList0(pollId, voterListId); List<VoterListMember> members = getVoterListMembers0(voterList); - return toBeanSet(VoterListMemberBean.class, members, getAddVotingField(pollId)); + return toBeanSet(members, this::toVoterListMemberBean); } @@ -280,7 +290,7 @@ public class VoterListService extends PollenServiceSupport { VoterList voterList = getVoterList0(pollId, voterListId); VoterListMember member = getVoterListMember0(voterList, memberId); - return toBean(VoterListMemberBean.class, member, getAddVotingField(pollId)); + return toVoterListMemberBean(member); } @@ -295,7 +305,7 @@ public class VoterListService extends PollenServiceSupport { Collections.emptyList()); VoterListMember result = getVoterListMemberDao().forTopiaIdEquals(member.getEntityId()).findUnique(); - return toBean(VoterListMemberBean.class, result); + return toVoterListMemberBean(result); } @@ -311,7 +321,7 @@ public class VoterListService extends PollenServiceSupport { Collections.emptyList()); VoterListMember result = getVoterListMemberDao().forTopiaIdEquals(member.getEntityId()).findUnique(); - return toBean(VoterListMemberBean.class, result, getAddVotingField(pollId)); + return toVoterListMemberBean(result); } @@ -658,10 +668,10 @@ public class VoterListService extends PollenServiceSupport { VoterList oldVoterList = getVoterList0(poll, voterList.getEntityId()); sisterNames.remove(oldVoterList.getName()); - List<VoterListMember> existingVoterListMembers = getVoterListMembers0(voterList.toEntity()); - members = toBeanList(VoterListMemberBean.class, existingVoterListMembers); + List<VoterListMember> existingVoterListMembers = getVoterListMembers0(voterList.getEntityId()); + members = toBeanList(existingVoterListMembers, this::toVoterListMemberBean); List<VoterList> existingSubVoterLists = getVoterLists0(poll, voterList.getEntityId()); - subLists = toBeanList(VoterListBean.class, existingSubVoterLists); + subLists = toBeanList(existingSubVoterLists, this::toVoterListBean); } else if (listsToSave.size() == 1){ members = membersToSave; @@ -812,14 +822,8 @@ public class VoterListService extends PollenServiceSupport { return memberToSend.size(); } - public long getVoterListMemberCount(String pollId) { - checkNotNull(pollId); - checkPermission(PermissionVerb.readPoll, pollId); - - VoterList voterList = getVoterListDao() - .forProperties(VoterList.PROPERTY_POLL + "." + Poll.PROPERTY_TOPIA_ID, pollId) - .addNull(VoterList.PROPERTY_PARENT) - .findUniqueOrNull(); + public long getVoterListMemberCount(Poll poll) { + VoterList voterList = getMainVoterList0(poll); List<VoterListMember> allMembers = getVoterListDao().getAllMembers(voterList); 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 b41d405e..ad5f2ecd 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 @@ -25,6 +25,7 @@ pollen.configuration.devMode=Dev mode pollen.configuration.feedback.locale=locale to send feedback pollen.configuration.feedback.mails=mails to send feedback pollen.configuration.logConfigurationFile=Path to log configuration file +pollen.configuration.maxVoters=Maximum number of votes for standar poll pollen.configuration.registration.emailAddressPattern=Regular expression that the user email address must match for registration pollen.configuration.report.maxScore=Maximum score for reporting before administrators are notified pollen.configuration.resendEmailsCronSchedule=Time between two cron jobs of email resending 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 2a17b57e..dce0f1f5 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 @@ -25,6 +25,7 @@ pollen.configuration.devMode=Mode développement pollen.configuration.feedback.locale=La locale pour envoyer les retours utlisateur pollen.configuration.feedback.mails=Courriel destinataires des retours utilisateur pollen.configuration.logConfigurationFile=Chemin vers le fichier de configuration des logs +pollen.configuration.maxVoters=Nombre maximum de votes pris en compte pour de sondage standard pollen.configuration.registration.emailAddressPattern=Expression régulière que doivent vérifier les adresses email des utilisateurs lors de l'inscription pollen.configuration.report.maxScore=Score maximum pour un signalement avant que les administrateurs soient avertis pollen.configuration.resendEmailsCronSchedule=Intervalle entre deux lancements de la tâche de renvoi des emails en erreur diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java index 13a97308..9314c446 100644 --- a/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java +++ b/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java @@ -91,15 +91,17 @@ public class PollenUserServiceTest extends AbstractPollenServiceTest { PollenUserBean user = service.getUser(this.user.getTopiaId()); Assert.assertNotNull(user); - Assert.assertEquals(this.user, user.toEntity()); + Assert.assertEquals(this.user.getName(), user.getName()); + Assert.assertEquals(this.user.isAdministrator(), user.isAdministrator()); + Assert.assertEquals(this.user.getEmail(), user.getEmail()); + Assert.assertEquals(this.user.isBanned(), user.isBanned()); } @Test public void testCreatePollenUser() throws InvalidFormException { try { - PollenUserBean u = new PollenUserBean(); - u.fromEntity(user); + PollenUserBean u = service.toPollenUserBean(user); service.createUser(u); Assert.fail(); } catch (IllegalStateException e) { diff --git a/pollen-ui-riot-js/src/main/web/i18n/en.json b/pollen-ui-riot-js/src/main/web/i18n/en.json index fbde0ab4..3a6e4da3 100644 --- a/pollen-ui-riot-js/src/main/web/i18n/en.json +++ b/pollen-ui-riot-js/src/main/web/i18n/en.json @@ -63,6 +63,8 @@ "poll_subscribers": "subscribers", "poll_participants": "participants", "poll_participation": "of participation", + "poll_maxVotersAlert": "<strong>Warnning</strong> : Strandard offers has limited to {0} voters. Users can continue to vote but only the first {0} votes are taken into account in the calculation of the resultles.", + "poll_maxVotersAlert_offers": "Read <a href=\"#home\">the offers page</a> to unlock this limit.", "poll_closedFrom": "Closing from", "poll_urlForAdmin" : "Administrate poll with this address", "poll_urlForVote" : "Invited new participants with this address", @@ -381,6 +383,8 @@ "user_deleteUserMessage": "Delete user ?", "user_name": "Name", "user_email": "Email", + "user_premiumTo": "Unlimited until ", + "user_premiumOf": "Unlimited end from", "user_cancel": "Cancel", "user_save": "Save", "userProfile_title": "My profile", diff --git a/pollen-ui-riot-js/src/main/web/i18n/fr.json b/pollen-ui-riot-js/src/main/web/i18n/fr.json index 47f8b0d8..aa916d61 100644 --- a/pollen-ui-riot-js/src/main/web/i18n/fr.json +++ b/pollen-ui-riot-js/src/main/web/i18n/fr.json @@ -63,6 +63,8 @@ "poll_subscribers": "invités", "poll_participants": "participants", "poll_participation": "de participation", + "poll_maxVotersAlert": "<strong>Attention</strong> : L'offre standard est limitée à {0} votants. Les utilisateurs peuvent continuer à voter mais seul les {0} premiers votes sont pris en compte dans le calcul du résultat.", + "poll_maxVotersAlert_offers": "Cousulter <a href=\"#home\">la page des nos offres</a> pour déverrouiller cette limite.", "poll_closedFrom": "Fermé depuis le", "poll_urlForAdmin" : "Administrer ce sondage avec cette adresse", "poll_urlForVote" : "Inviter de nouveaux participants en leur envoyant cette adresse", @@ -381,6 +383,8 @@ "user_deleteUserMessage": "Supprimer l'utilisateur ?", "user_name": "Nom", "user_email": "Courriel", + "user_premiumTo": "Illimité jusqu'au", + "user_premiumOf": "Fin de l'illimité depuis le", "user_cancel": "Annuler", "user_save": "Enregistrer", "userProfile_title": "Mon profil", diff --git a/pollen-ui-riot-js/src/main/web/tag/admin/UserCard.tag.html b/pollen-ui-riot-js/src/main/web/tag/admin/UserCard.tag.html index 6bf7f5a0..72e1b301 100644 --- a/pollen-ui-riot-js/src/main/web/tag/admin/UserCard.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/admin/UserCard.tag.html @@ -27,6 +27,15 @@ require("./UserEditModal.tag.html"); onedit={edit} class="user-card"> <yield to="detail"> + <i if={parent.opts.user.premium} + class="premium winner fa fa-star" + aria-hidden="true" + title={parent.__.premiumTo + ' ' + parent.formatDate(parent.opts.user.premiumTo, 'LL')}> + </i> + <i if={!parent.opts.user.premium && parent.opts.user.premiumTo} + class="premium fa fa-star-o" + aria-hidden="true" + title={parent.__.premiumOf + ' ' + parent.formatDate(parent.opts.user.premiumTo, 'LL')}></i> <div class="user-email"> <i class="fa fa-refresh" if={!parent.opts.user.emailIsValidate} title={parent.__.emailValidate}></i> {parent.opts.user.email} @@ -127,5 +136,12 @@ require("./UserEditModal.tag.html"); justify-content: space-around; } + .premium { + position: absolute; + top: 65px; + font-size: 3em; + left: 105px; + } + </style> </UserCard> diff --git a/pollen-ui-riot-js/src/main/web/tag/admin/UserEditModal.tag.html b/pollen-ui-riot-js/src/main/web/tag/admin/UserEditModal.tag.html index 28610825..e8ccf5d2 100644 --- a/pollen-ui-riot-js/src/main/web/tag/admin/UserEditModal.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/admin/UserEditModal.tag.html @@ -47,6 +47,17 @@ require("../popup/Modal.tag.html"); <div class="c-hint c-hint--static c-hint--error" each={error in parent.errors.email}>{error}</div> </div> <div class="o-form-element"> + <label class="c-label" for="premiumTo">{parent.__.premiumTo}</label> + <date-picker class="o-field o-field--icon-left" + inputclass="c-field o-field--icon-left" + iconleftclass="calendar" + id="premiumTo" + ref="premiumTo" + date="{parent.premiumTo}"> + </date-picker> + <div class="c-hint c-hint--static c-hint--error" each={error in parent.errors.premiumTo}>{error}</div> + </div> + <div class="o-form-element"> <label class="c-toggle c-toggle--info"> {parent.__.administrator} <input type="checkbox" @@ -91,8 +102,10 @@ require("../popup/Modal.tag.html"); let Message = require("../../js/Message"); this.installBundle(session, "user"); let userService = require("../../js/UserService"); + let moment = require("moment-timezone"); this.errors = {}; + this.premiumTo = {date: moment(this.opts.user.premiumTo)}; this.open = () => { return this.refs.modal.open(); @@ -105,6 +118,7 @@ require("../popup/Modal.tag.html"); user2.administrator = this.refs.modal.refs.administrator.checked; user2.banned = this.refs.modal.refs.banned.checked; user2.emailIsValidate = this.refs.modal.refs.emailIsValidate.checked; + user2.premiumTo = this.refs.modal.refs.premiumTo.getValue(); return userService.saveUser(user2).then(() => { this.errors = {}; @@ -118,5 +132,10 @@ require("../popup/Modal.tag.html"); }; </script> + <style> + date-picker { + display: inherit; + } + </style> </UserEditModal> diff --git a/pollen-ui-riot-js/src/main/web/tag/components/InnerHtml.tag.html b/pollen-ui-riot-js/src/main/web/tag/components/InnerHtml.tag.html new file mode 100644 index 00000000..66958648 --- /dev/null +++ b/pollen-ui-riot-js/src/main/web/tag/components/InnerHtml.tag.html @@ -0,0 +1,14 @@ +<InnerHtml> + + <span ref="html"></span> + + <script> + + this.updateHtml = () => { + this.refs.html.innerHTML = this.opts.html; + }; + + this.on("update", this.updateHtml); + </script> + +</InnerHtml> diff --git a/pollen-ui-riot-js/src/main/web/tag/components/date-picker.tag.html b/pollen-ui-riot-js/src/main/web/tag/components/date-picker.tag.html index e2ba23f8..a0f93916 100644 --- a/pollen-ui-riot-js/src/main/web/tag/components/date-picker.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/components/date-picker.tag.html @@ -58,7 +58,7 @@ this.session = require("../../js/Session"); this.format = "LL"; - this.moment = require("moment"); + this.moment = require("moment-timezone"); this.moment.locale(this.session.locale); this.installBundle(this.session, "date-picker", locale => { @@ -231,6 +231,17 @@ this.refs.date.focus(); }; + this.getValue = () => { + if (this.session.dateInputSupported) { + return this.moment(this.refs.date.value).valueOf(); + } + if (!this.date.date) { + return null; + } + let selectedMoment = this.moment.tz(this.date.date, this.moment.tz.guess()); + return selectedMoment.valueOf(); + }; + </script> <style scoped> diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html index 00f4c110..ba136545 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html @@ -25,6 +25,7 @@ require("./Choices.tag.html"); require("./Settings.tag.html"); require("../popup/QrCodeButton.tag.html"); require("../components/MultiLineLabel.tag.html"); +require("../components/InnerHtml.tag.html"); require("./Report.tag.html"); <Poll> @@ -131,6 +132,12 @@ require("./Report.tag.html"); <p><MultiLineLabel label="{poll.description}"></MultiLineLabel></p> </div> + <div if={poll.maxVoters > 0 && poll.voteCount > poll.maxVoters} + class="c-alert c-alert--warning"> + <InnerHtml html={_l("maxVotersAlert", poll.maxVoters)}/> + <InnerHtml if={poll.permission} html={__.maxVotersAlert_offers} /> + </div> + <Votes if={selectedTab === "votes"}/> <Results if={selectedTab === "results"}/> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm