branch feature/spgeed updated (9543be3e -> e66626da)
This is an automated email from the git hooks/post-receive script. New change to branch feature/spgeed in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git from 9543be3e using bold new e66626da using pagination research with Spgeed 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 e66626da6b8ebe705d33a879894a5c72c44e8f81 Author: Killian <killian.herbreteau@epitech.eu> Date: Wed Nov 27 10:33:07 2019 +0100 using pagination research with Spgeed Summary of changes: .../Dao/PollenChildFavoriteListSpgeedDao.java | 2 +- .../persistence/Dao/PollenPollSpgeedDao.java | 35 ++++++++- .../persistence/Dao/PollenPrincipalSpgeedDao.java | 1 + .../persistence/Dao/PollenResourceSpgeedDao.java | 10 +-- .../pollen/persistence/Dao/PollenSpgeedDao.java | 11 +-- .../Dao/PollenUserEmailAddressSpgeedDao.java | 6 +- .../persistence/Dao/PollenUserSpgeedDao.java | 43 +++++++----- .../persistence/Dao/PollenVoteSpgeedDao.java | 14 +++- .../Dao/PollenVoterListMemberSpgeedDao.java | 28 +++++++- .../rest/api/PollenRestApiApplicationContext.java | 2 - .../chorem/pollen/services/bean/PollenBeans.java | 22 +++++- .../pollen/services/service/PollService.java | 82 +++++++++------------- .../services/service/PollenServiceSupport.java | 60 +++++++++++----- .../pollen/services/service/PollenUserService.java | 18 ++--- 14 files changed, 220 insertions(+), 114 deletions(-) -- 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/spgeed in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit e66626da6b8ebe705d33a879894a5c72c44e8f81 Author: Killian <killian.herbreteau@epitech.eu> Date: Wed Nov 27 10:33:07 2019 +0100 using pagination research with Spgeed --- .../Dao/PollenChildFavoriteListSpgeedDao.java | 2 +- .../persistence/Dao/PollenPollSpgeedDao.java | 35 ++++++++- .../persistence/Dao/PollenPrincipalSpgeedDao.java | 1 + .../persistence/Dao/PollenResourceSpgeedDao.java | 10 +-- .../pollen/persistence/Dao/PollenSpgeedDao.java | 11 +-- .../Dao/PollenUserEmailAddressSpgeedDao.java | 6 +- .../persistence/Dao/PollenUserSpgeedDao.java | 43 +++++++----- .../persistence/Dao/PollenVoteSpgeedDao.java | 14 +++- .../Dao/PollenVoterListMemberSpgeedDao.java | 28 +++++++- .../rest/api/PollenRestApiApplicationContext.java | 2 - .../chorem/pollen/services/bean/PollenBeans.java | 22 +++++- .../pollen/services/service/PollService.java | 82 +++++++++------------- .../services/service/PollenServiceSupport.java | 60 +++++++++++----- .../pollen/services/service/PollenUserService.java | 18 ++--- 14 files changed, 220 insertions(+), 114 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java index 7c31dfc8..1d476f90 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenChildFavoriteListSpgeedDao.java @@ -1,9 +1,9 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.ChildFavoriteList; +import static org.chorem.pollen.persistence.entity.ChildFavoriteList.*; public interface PollenChildFavoriteListSpgeedDao extends PollenSpgeedDao { String propertieswoForeignKey[] = {ChildFavoriteList.PROPERTY_WEIGHT, ChildFavoriteList.PROPERTY_TOPIA_ID}; - } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java index e00a4341..8aab69ff 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPollSpgeedDao.java @@ -3,6 +3,8 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.PollenMapper; import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollenPrincipal; +import org.chorem.pollen.persistence.entity.PollenUser; +import org.nuiton.spgeed.Chunk; import org.nuiton.spgeed.annotations.Select; import org.nuiton.spgeed.annotations.Update; @@ -19,6 +21,8 @@ public interface PollenPollSpgeedDao extends PollenSpgeedDao { String pollId = pollName + "." + PROPERTY_TOPIA_ID; + String pollGrouping = " ORDER BY " + pollName + "." + PROPERTY_TITLE; + String properties = pollName + "." + PROPERTY_TOPIA_ID + pollName + "." + PROPERTY_TOPIA_VERSION + ", " + pollName + "." + PROPERTY_TOPIA_CREATE_DATE + ", " @@ -53,6 +57,7 @@ public interface PollenPollSpgeedDao extends PollenSpgeedDao { + ")"; String commands = "WITH " + + PollenResourceSpgeedDao.command + ", " + PollenUserCredentialSpgeedDao.command + ", " + PollenUserEmailAddressSpgeedDao.command + ", " + PollenUserSpgeedDao.command + ", " @@ -60,8 +65,34 @@ public interface PollenPollSpgeedDao extends PollenSpgeedDao { + PollenPollSpgeedDao.command + " SELECT * FROM " + aggName; - @Select(sql = commands, mapper = PollenMapper.class) - Poll[] getallpoll(); + String getAllPolls = commands + chunkOrdering; + + @Select(sql = getAllPolls, mapper = PollenMapper.class) + Chunk<Poll> getallpoll(Chunk previousChunk, String chunkOrder); + + String getPolls = command + " WHERE ${chunkSearch | toString()}" + chunkOrdering; + + @Select(sql = getPolls, mapper = PollenMapper.class) + Chunk<Poll> getallpoll(Chunk previousChunk, String chunkOrder, String chunkSearch); + + String getAllCreatedPolls = command + + " WHERE " + PROPERTY_CREATOR + "." + PollenPrincipal.PROPERTY_POLLEN_USER + "." + PROPERTY_TOPIA_ID + " = ${user.topiaid}"; + + @Select(sql = getAllCreatedPolls, mapper = PollenMapper.class) + Chunk<Poll> getCreatedPolls(PollenUser user, Chunk previousChunk, String chunkOrder); + + String getCreatedPolls = command + + " WHERE " + PROPERTY_CREATOR + "." + PollenPrincipal.PROPERTY_POLLEN_USER + "." + PROPERTY_TOPIA_ID + " = ${user.topiaid}" + + " AND ${chunkSearch | toString()}" + chunkOrdering; + + @Select(sql = getCreatedPolls, mapper = PollenMapper.class) + Chunk<Poll> getCreatedPolls(PollenUser user, Chunk previousChunk, String chunkOrder, String chunkSearch); + + String getPoll = command + + " WHERE " + PROPERTY_TOPIA_ID + " = ${pollId}"; + + @Select(sql = getPoll, mapper = PollenMapper.class) + Poll getPoll(String pollId); String pollProperties = PROPERTY_TOPIA_ID + ", " + PROPERTY_TOPIA_VERSION + ", " + PROPERTY_TITLE + ", " + PROPERTY_DESCRIPTION + ", " diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java index ba4502d3..76a959a7 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenPrincipalSpgeedDao.java @@ -26,6 +26,7 @@ public interface PollenPrincipalSpgeedDao extends PollenSpgeedDao{ + ")"; String commands = "WITH " + + PollenResourceSpgeedDao.command + ", " + PollenUserCredentialSpgeedDao.command + ", " + PollenUserEmailAddressSpgeedDao.command + ", " + PollenUserSpgeedDao.command + ", " diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java index ce9ede6d..979685cf 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenResourceSpgeedDao.java @@ -1,7 +1,6 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.PollenMapper; -import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollenResource; import org.chorem.pollen.persistence.entity.PollenUser; import org.nuiton.spgeed.annotations.Select; @@ -11,10 +10,12 @@ import static org.chorem.pollen.persistence.entity.PollenResource.*; public interface PollenResourceSpgeedDao extends PollenSpgeedDao { - String resourceName = "uc"; + String resourceName = "re"; String aggName = "ressource_agg"; + String resourceTable = aggName + " " + resourceName; + String properties = resourceName + "." + PROPERTY_TOPIA_ID + ", " + resourceName + "." + PROPERTY_TOPIA_VERSION + ", " + resourceName + "." + PROPERTY_TOPIA_CREATE_DATE + ", " @@ -26,10 +27,11 @@ public interface PollenResourceSpgeedDao extends PollenSpgeedDao { String command = aggName + " AS (" + " SELECT " + properties - + " FROM pollenresource" + + " FROM pollenresource " + resourceName + ")"; - String commands = "WITH " + command + String commands = "WITH " + + PollenResourceSpgeedDao.command + " SELECT * FROM " + aggName; String getResource = commands + " " + resourceName diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java index f6da0612..d2012683 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenSpgeedDao.java @@ -1,15 +1,6 @@ package org.chorem.pollen.persistence.Dao; -import org.chorem.pollen.persistence.entity.PollenUser; - -import static org.nuiton.topia.persistence.TopiaEntity.*; - public interface PollenSpgeedDao { - String createTopiaEntityProperties = "( " + PROPERTY_TOPIA_ID + ", " + PROPERTY_TOPIA_VERSION + ", " + - PROPERTY_TOPIA_CREATE_DATE + " )"; - - String createTopiaEntityVariables = "(${" + PROPERTY_TOPIA_ID + "}, ${" + PROPERTY_TOPIA_VERSION + "}, " + - "${" + PROPERTY_TOPIA_CREATE_DATE + "})"; - + String chunkOrdering = " ${chunkOrder | toString()}"; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java index 8f7e0551..604d7918 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserEmailAddressSpgeedDao.java @@ -21,10 +21,12 @@ public interface PollenUserEmailAddressSpgeedDao extends PollenSpgeedDao { String emailsForeignKey = emailsName + ".pollenuser"; - String properties = PROPERTY_EMAIL_ADDRESS + ", " + String properties = PROPERTY_TOPIA_ID + ", " + + PROPERTY_TOPIA_VERSION + ", " + + PROPERTY_TOPIA_CREATE_DATE + ", " + + PROPERTY_EMAIL_ADDRESS + ", " + PROPERTY_PGP_PUBLIC_KEY + ", " + PROPERTY_VALIDATED + ", " - + PROPERTY_TOPIA_ID + ", " + "pollenuser"; String command = aggName + " AS (" diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java index c39bb2ad..913873f4 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenUserSpgeedDao.java @@ -1,16 +1,14 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.PollenMapper; -import org.chorem.pollen.persistence.entity.PollenResource; -import org.chorem.pollen.persistence.entity.PollenUser; -import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; -import org.chorem.pollen.persistence.entity.UserCredential; +import org.chorem.pollen.persistence.entity.*; import org.nuiton.spgeed.Chunk; import org.nuiton.spgeed.annotations.Select; import org.nuiton.spgeed.annotations.Update; import static org.chorem.pollen.persistence.entity.PollenUser.*; import static org.chorem.pollen.persistence.Dao.PollenUserEmailAddressSpgeedDao.*; +import static org.chorem.pollen.persistence.Dao.PollenResourceSpgeedDao.*; import static org.chorem.pollen.persistence.Dao.PollenUserCredentialSpgeedDao.*; public interface PollenUserSpgeedDao extends PollenSpgeedDao { @@ -21,6 +19,10 @@ public interface PollenUserSpgeedDao extends PollenSpgeedDao { String userId = userName + "." + PROPERTY_TOPIA_ID; + String userForeignKeyAvatar = userName + "." + PROPERTY_AVATAR; + + String userForeignKeyDefaultEmail = userName + "." + PROPERTY_DEFAULT_EMAIL_ADDRESS; + String propertieswoForeignKey = userName + "." + PROPERTY_TOPIA_ID + ", " + userName + "." + PROPERTY_TOPIA_VERSION + ", " + userName + "." + PROPERTY_TOPIA_CREATE_DATE + ", " @@ -36,24 +38,27 @@ public interface PollenUserSpgeedDao extends PollenSpgeedDao { String command = aggName + " AS (" + "SELECT " + propertieswoForeignKey + ", " + + "json_agg(" + resourceName + ".*)->0 AS " + PROPERTY_AVATAR + ", " + "json_agg(" + demailName + ".*)->0 AS " + PROPERTY_DEFAULT_EMAIL_ADDRESS + ", " + "COALESCE(json_agg(" + emailsName + ".*) FILTER (WHERE " + emailsForeignKey + " IS NOT NULL), null) AS " + PROPERTY_EMAIL_ADDRESSES + ", " + "COALESCE(json_agg(" + userCredentialName + ".*) FILTER (WHERE " + credentialForeignKey + " IS NOT NULL), null) AS " + PROPERTY_USER_CREDENTIAL + " FROM pollenuser " + userName - + " JOIN " + demailTable + " ON " + demailName + "." + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = " + userName + "." + PROPERTY_DEFAULT_EMAIL_ADDRESS - + " LEFT OUTER JOIN " + emailsTable + " ON " + emailsForeignKey + " = " + userName + "." + PROPERTY_TOPIA_ID - + " LEFT OUTER JOIN " + credentialTable + " ON " + credentialForeignKey + " = " + userId + + " LEFT JOIN " + resourceTable + " ON " + resourceName + "." + PollenResource.PROPERTY_TOPIA_ID + " = " + userForeignKeyAvatar + + " LEFT JOIN " + demailTable + " ON " + demailName + "." + PollenUserEmailAddress.PROPERTY_TOPIA_ID + " = " + userForeignKeyDefaultEmail + + " LEFT JOIN " + emailsTable + " ON " + emailsForeignKey + " = " + userId + + " LEFT JOIN " + credentialTable + " ON " + credentialForeignKey + " = " + userId + " GROUP BY " + userId + ")"; - String commands = "WITH " + - PollenUserCredentialSpgeedDao.command + ", " + - PollenUserEmailAddressSpgeedDao.command + ", " + - PollenUserSpgeedDao.command + - " SELECT * FROM " + aggName; + String commands = "WITH " + + PollenResourceSpgeedDao.command + ", " + + PollenUserCredentialSpgeedDao.command + ", " + + PollenUserEmailAddressSpgeedDao.command + ", " + + PollenUserSpgeedDao.command + " " + + "SELECT * FROM " + aggName; - String getUser = commands + " " + userName + " WHERE " + - userId + " = ${userId}"; + String getUser = commands + + " WHERE " + PROPERTY_TOPIA_ID + " = ${userId}"; @Select(sql = getUser, mapper = PollenMapper.class) PollenUser getUser(String userId); @@ -61,13 +66,19 @@ public interface PollenUserSpgeedDao extends PollenSpgeedDao { String findUserWithCredentialProviderAndValidatedId = commands + " " + userName + " WHERE " + userName + "." + PROPERTY_USER_CREDENTIAL + "." + UserCredential.PROPERTY_PROVIDER + " = ${provider}" + " AND " + userName + "." + PROPERTY_USER_CREDENTIAL + "." + UserCredential.PROPERTY_USER_ID + " = ${userId}"; + @Select(sql = findUserWithCredentialProviderAndValidatedId, mapper = PollenMapper.class) PollenUser findUserWithCredentialOrNull(String provider, String userId); - String getAllUsers = commands + " ORDER BY ${userOrder | toString()}"; + String getAllUsers = commands + chunkOrdering; @Select(sql = getAllUsers, mapper = PollenMapper.class) - Chunk<PollenUser> getAllUsers(Chunk previousChunk, String userOrder); + Chunk<PollenUser> getAllUsers(Chunk previousChunk, String chunkOrder); + + String getUsers = commands + " WHERE ${chunkSearch | toString()}" + chunkOrdering; + + @Select(sql = getUsers, mapper = PollenMapper.class) + Chunk<PollenUser> getAllUsers(Chunk previousChunk, String chunkOrder, String chunkSearch); String userProperties = PROPERTY_TOPIA_ID + ", " + PROPERTY_TOPIA_VERSION + ", " + PROPERTY_NAME + ", " + PROPERTY_ADMINISTRATOR + ", " diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java index f0554542..790cb509 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoteSpgeedDao.java @@ -1,8 +1,20 @@ package org.chorem.pollen.persistence.Dao; import org.chorem.pollen.persistence.entity.Vote; +import static org.chorem.pollen.persistence.entity.Vote.*; public interface PollenVoteSpgeedDao extends PollenSpgeedDao { - String propertieswoForeignKey[] = {Vote.PROPERTY_WEIGHT, Vote.PROPERTY_ANONYMOUS, Vote.PROPERTY_TOPIA_ID}; + String voterName = "v"; + + String aggName = "voters_agg"; + + String properties = voterName + "." + PROPERTY_TOPIA_ID + ", " + + voterName + "." + PROPERTY_TOPIA_VERSION + ", " + + voterName + "." + PROPERTY_TOPIA_CREATE_DATE + ", " + + voterName + "." + PROPERTY_WEIGHT + ", " + + voterName + "." + PROPERTY_ANONYMOUS; + + String command = aggName + " AS (" + + "SELECT " + properties + ", "; } \ No newline at end of file diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListMemberSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListMemberSpgeedDao.java index 7d190a51..0abe46bd 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListMemberSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/Dao/PollenVoterListMemberSpgeedDao.java @@ -1,9 +1,33 @@ package org.chorem.pollen.persistence.Dao; -import org.chorem.pollen.persistence.entity.VoterListMember; +import org.chorem.pollen.persistence.entity.PollenPrincipal; + +import static org.chorem.pollen.persistence.entity.VoterListMember.*; +import static org.chorem.pollen.persistence.Dao.PollenPrincipalSpgeedDao.*; public interface PollenVoterListMemberSpgeedDao { - String propertieswoForeignKey[] = {VoterListMember.PROPERTY_WEIGHT, VoterListMember.PROPERTY_INVITATION_SENT, VoterListMember.PROPERTY_TOPIA_ID}; + String voterListMemberName = "vlm"; + + String aggName = "voterListMembers_agg"; + + String voterListMemberid = voterListMemberName + "." + PROPERTY_TOPIA_ID; + + String properties = voterListMemberName + "." + PROPERTY_TOPIA_ID + ", " + + voterListMemberName + "." + PROPERTY_TOPIA_VERSION + ", " + + voterListMemberName + "." + PROPERTY_TOPIA_CREATE_DATE + ", " + + voterListMemberName + "." + PROPERTY_WEIGHT + ", " + + voterListMemberName + "." + PROPERTY_VOTER_LIST + ", " + + voterListMemberName + "." + "vote, " + + voterListMemberName + "." + PROPERTY_INVITATION_SENT; + + String command = aggName + " AS (" + + "SELECT " + properties + ", " + + "json_agg(" + principalName + ".*)->0 AS " + PROPERTY_MEMBER + + " FROM voterlistmember" + + " JOIN " + principalTable + " ON " + principalName + "." + PollenPrincipal.PROPERTY_TOPIA_ID + " = " + voterListMemberName + "." + PROPERTY_MEMBER + + " GROUP BY " + voterListMemberid + + ")"; + } \ No newline at end of file diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationContext.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationContext.java index 4671d566..0e439037 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationContext.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplicationContext.java @@ -281,8 +281,6 @@ public class PollenRestApiApplicationContext implements PollenApplicationContext PollenServiceContext serviceContext = newServiceContext(persistenceContext, Locale.FRANCE); serviceContext.setSecurityContext(new InitSecurityContext()); serviceContext.newService(PollenUserService.class).createDefaultUsers(); - } catch (InvalidFormException e) { - //Can't happen } started.set(true); 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 1d245206..268c4425 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,8 +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.nuiton.spgeed.Chunk; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.pagination.PaginationOrder; +import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; import java.util.Collection; @@ -59,10 +61,28 @@ public class PollenBeans { result.setDesc(paginationOrder.isDesc()); } + return result; + } + public static <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toBean(Chunk<E> entities, Function<E, B> beanFunction, PaginationParameter paginationParameter) { - return result; + ImmutableList<B> bs = toBeanList(entities.getResult(), beanFunction); + + PaginationResultBean<B> result = new PaginationResultBean<>(); + result.setElements(bs); + result.setPageSize((int) entities.getFetch()); + result.setCurrentPage((int) entities.getFirst()); + result.setLastPage((int) entities.getNext()); + result.setCount((int) entities.getTotal()); + List<PaginationOrder> orderClauses = paginationParameter.getOrderClauses(); + if (CollectionUtils.isNotEmpty(orderClauses)) { + // take the first order clause + PaginationOrder paginationOrder = orderClauses.get(0); + result.setOrder(paginationOrder.getClause()); + result.setDesc(paginationOrder.isDesc()); + } + return result; } public static <E extends TopiaEntity, B extends PollenBean<E>> ImmutableSet<B> toBeanSet(Collection<E> entities, Function<E, B> beanFunction) { 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 af67afe4..6c014fd6 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 @@ -26,15 +26,7 @@ import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; -import org.chorem.pollen.persistence.entity.ChoiceType; -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.persistence.entity.Question; -import org.chorem.pollen.persistence.entity.VoterList; -import org.chorem.pollen.persistence.entity.VoterListMember; +import org.chorem.pollen.persistence.entity.*; import org.chorem.pollen.services.bean.ChoiceBean; import org.chorem.pollen.services.bean.PaginationParameterBean; import org.chorem.pollen.services.bean.PaginationResultBean; @@ -47,6 +39,7 @@ import org.chorem.pollen.services.bean.VoterListMemberBean; import org.chorem.pollen.services.bean.export.ExportBean; import org.chorem.pollen.services.config.PollenServicesConfig; import org.chorem.pollen.services.service.security.PollenPermissions; +import org.nuiton.spgeed.Chunk; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; @@ -70,6 +63,8 @@ public class PollService extends PollenServiceSupport { public static String EMAIL_SUFFIX_SEPARATOR = ";"; + private static final String PROPERTY_DEFAULT_POLL_ORDER = Poll.PROPERTY_TITLE; + public PollBean toPollBean(Poll entity) { PollBean bean = new PollBean(); @@ -198,9 +193,16 @@ public class PollService extends PollenServiceSupport { checkIsAdmin(); - PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationResult<Poll> polls = getPollDao().findAll(page, search); - return toPaginationListBean(polls, this::toPollBean); + PaginationParameter page = getPaginationParameter(paginationParameter, PROPERTY_DEFAULT_POLL_ORDER); + String order = page.getOrderClauses().get(0).getClause(); + Chunk<Poll> polls; + + if (StringUtils.isNotBlank(search)) { + polls = getSpgeedPollDao().getallpoll(Chunk.init(page.getPageSize()), order, search); + } else { + polls = getSpgeedPollDao().getallpoll(Chunk.init(page.getPageSize()), order); + } + return toPaginationListBean(polls, this::toPollBean, page); } @@ -208,9 +210,15 @@ public class PollService extends PollenServiceSupport { PollenUser connectedUser = checkAndGetConnectedUser(); - PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationResult<Poll> polls = getPollDao().findAllCreated(connectedUser, page, search); - return toPaginationListBean(polls, this::toPollBean); + PaginationParameter page = getPaginationParameter(paginationParameter, PROPERTY_DEFAULT_POLL_ORDER); + String order = page.getOrderClauses().get(0).getClause(); + Chunk<Poll> polls; + if (StringUtils.isNotBlank(search)) { + polls = getSpgeedPollDao().getCreatedPolls(connectedUser, Chunk.init(page.getPageSize()), order, search); + } else { + polls = getSpgeedPollDao().getCreatedPolls(connectedUser, Chunk.init(page.getPageSize()), order); + } + return toPaginationListBean(polls, this::toPollBean, page); } @@ -218,7 +226,7 @@ public class PollService extends PollenServiceSupport { PollenUser connectedUser = checkAndGetConnectedUser(); - PaginationParameter page = getPaginationParameter(paginationParameter); + PaginationParameter page = getPaginationParameter(paginationParameter, PROPERTY_DEFAULT_POLL_ORDER); PaginationResult<Poll> polls = getPollDao().findAllInvited(connectedUser, page, search); return toPaginationListBean(polls, this::toPollBean); @@ -228,8 +236,9 @@ public class PollService extends PollenServiceSupport { PollenUser connectedUser = checkAndGetConnectedUser(); - PaginationParameter page = getPaginationParameter(paginationParameter); + PaginationParameter page = getPaginationParameter(paginationParameter, PROPERTY_DEFAULT_POLL_ORDER); PaginationResult<Poll> polls = getPollDao().findAllParticipated(connectedUser, page, search); + Question q = new QuestionImpl(); return toPaginationListBean(polls, this::toPollBean); } @@ -317,8 +326,6 @@ public class PollService extends PollenServiceSupport { getVoterListService().createVoters(savedPoll, voterLists, voterListMembers); } - - commit(); getNotificationService().onPollCreated(savedPoll); getFeedService().onPollCreated(savedPoll); @@ -343,8 +350,6 @@ public class PollService extends PollenServiceSupport { Poll savedPoll = savePoll(poll); - commit(); - getNotificationService().onPollEdited(savedPoll); getFeedService().onPollEdited(savedPoll); @@ -360,12 +365,9 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); checkPermission(PollenPermissions.delete(poll)); - getPollDao().delete(poll); - - commit(); + getSpgeedPollDao().deletePoll(poll); getNotificationService().onPollDeleted(poll); - } public PollenEntityRef<Poll> clonePoll(String pollId) { @@ -399,8 +401,6 @@ public class PollService extends PollenServiceSupport { Poll savedPoll = savePoll(clonedPoll); - commit(); - getNotificationService().onPollCreated(savedPoll); return PollenEntityRef.of(savedPoll); @@ -420,7 +420,7 @@ public class PollService extends PollenServiceSupport { poll.setEndDate(getNow()); - commit(); + poll = savePoll(toPollBean(poll)); getNotificationService().onPollClosed(poll); getFeedService().onPollClosed(poll); @@ -441,12 +441,11 @@ public class PollService extends PollenServiceSupport { poll.setEndDate(null); - commit(); + poll = savePoll(toPollBean(poll)); getNotificationService().onPollReopened(poll); getFeedService().onPollReopened(poll); } - } @@ -482,9 +481,8 @@ public class PollService extends PollenServiceSupport { if (creator == null) { poll.getCreator().setPollenUser(connectedUser); - commit(); + getSpgeedPollDao().savePoll(poll); } - return toPollBean(poll); } @@ -595,6 +593,8 @@ public class PollService extends PollenServiceSupport { connectedUser.setGtuValidationDate(getNow()); } } + commit(); + //getSpgeedPollDao().savePoll(toSave); return toSave; @@ -602,7 +602,7 @@ public class PollService extends PollenServiceSupport { protected Poll getPoll0(String pollId) { - return getPollDao().forTopiaIdEquals(pollId).findUnique(); + return getSpgeedPollDao().getPoll(pollId); } @@ -660,22 +660,6 @@ public class PollService extends PollenServiceSupport { } } - - - protected PaginationParameter getPaginationParameter(PaginationParameterBean paginationParameter) { - - if (paginationParameter == null) { - - paginationParameter = PaginationParameterBean.of(0, PAGE_SIZE_DEFAULT); - - } - if (paginationParameter.getOrder() == null) { - paginationParameter.setOrder(Poll.PROPERTY_TITLE); - } - return paginationParameter.toPaginationParameter(); - - } - public Set<String> getInvalidEmails(String pollId) { Set<String> invalidEmails = Sets.newHashSet(); Poll poll = getPoll0(pollId); 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 4701994e..788481f3 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 @@ -49,13 +49,16 @@ import org.chorem.pollen.services.service.security.PollenSecurityContext; import org.chorem.pollen.services.service.security.SecurityService; import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.internal.SessionFactoryImpl; +import org.nuiton.spgeed.Chunk; import org.nuiton.spgeed.SqlSession; +import org.nuiton.spgeed.query.Query; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaIdFactory; import org.nuiton.topia.persistence.internal.ShortTopiaIdFactory; import org.nuiton.util.StringUtil; +import org.nuiton.util.pagination.PaginationOrder; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; @@ -207,6 +210,40 @@ public abstract class PollenServiceSupport implements PollenService { return getPersistenceContext().getChoiceDao(); } + protected PaginationParameter getPaginationParameter(PaginationParameterBean paginationParameter) { + return getPaginationParameter(paginationParameter, null); + } + + protected PaginationParameter getPaginationParameter(PaginationParameterBean paginationParameter, String defaultOrder) { + + if (paginationParameter == null) { + paginationParameter = PaginationParameterBean.of(0, PAGE_SIZE_DEFAULT); + } + + if (StringUtils.isBlank(paginationParameter.getOrder())) { + if (StringUtils.isBlank(defaultOrder)) { + paginationParameter.setOrder(TopiaEntity.PROPERTY_TOPIA_CREATE_DATE); + } else { + paginationParameter.setOrder(defaultOrder); + } + } + + return paginationParameter.toPaginationParameter(); + + } + protected List<String> getOrderList(List<PaginationOrder> parameters, String defaultProperty) { + + List<String> order = new LinkedList<>(); + + if (parameters == null || parameters.size() == 0) { + order.add(defaultProperty); + } else { + for (PaginationOrder parameter : parameters) { + order.add(parameter.getClause()); + } + } + return order; + } protected PollenChoiceSpgeedDao getSpgeedChoiceDao() { return getSpgeedDao(PollenChoiceSpgeedDao.class); } @@ -219,6 +256,8 @@ public abstract class PollenServiceSupport implements PollenService { try (SqlSession session = new SqlSession(dataSource)) { spgeedSession = session; + spgeedSession.addFunction("toOrder", (Query query, Object in, Object ...args) -> + " ORDER BY " + query.addSqlParameter(String.join(args[0].toString(), (Iterable) in))); } catch(SQLException e) { throw new PollenTechnicalException("erreur lors du chargement du Dao de Spgeed", e); } @@ -246,6 +285,7 @@ public abstract class PollenServiceSupport implements PollenService { protected <E extends PollenSpgeedDao> E getSpgeedDao(Class<E> daoClass) { SqlSession session = getSpgeedSqlSession(); + PollenUser pollenUser = new PollenUserImpl() session.setDefaultMapper(PollenMapper.class); return session.getDao(daoClass); @@ -589,6 +629,10 @@ public abstract class PollenServiceSupport implements PollenService { return PollenBeans.toBean(entities, beanFunction); } + protected <E extends TopiaEntity, B extends PollenBean<E>> PaginationResultBean<B> toPaginationListBean(Chunk<E> entities, Function<E, B> beanFunction, PaginationParameter paginationParameter) { + return PollenBeans.toBean(entities, beanFunction, paginationParameter); + } + protected <E extends TopiaEntity> PollenEntityId<E> getPollenEntityId(E entity) { PollenEntityId<E> pollenEntityId = PollenEntityId.newId((Class<E>) entity.getClass()); pollenEntityId.setEntityId(entity.getTopiaId()); @@ -624,20 +668,4 @@ public abstract class PollenServiceSupport implements PollenService { token); } - protected PaginationParameter getPaginationParameter(PaginationParameterBean paginationParameter) { - - if (paginationParameter == null) { - - paginationParameter = PaginationParameterBean.of( - 0, - PAGE_SIZE_DEFAULT, - TopiaEntity.PROPERTY_TOPIA_CREATE_DATE, - true); - - } - - return paginationParameter.toPaginationParameter(); - - } - } 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 2fb19b93..e6984563 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 @@ -59,6 +59,8 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer /** Logger. */ private static final Log log = LogFactory.getLog(PollenUserService.class); + private static final String PROPERTY_DEFAULT_USER_ORDER = PollenUser.PROPERTY_NAME; + public PollenUserBean toPollenUserBean(PollenUser entity) { PollenUserBean bean = new PollenUserBean(); bean.setEntityId(entity.getTopiaId()); @@ -116,17 +118,17 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer checkIsAdmin(); - PaginationParameter page = getPaginationParameter(paginationParameter); - PaginationOrder order = page.getOrderClauses().get(0); + PaginationParameter page = getPaginationParameter(paginationParameter, PROPERTY_DEFAULT_USER_ORDER); + String order = page.getOrderClauses().get(0).getClause(); + Chunk<PollenUser> pollenUsers; - if (order.getClause() == null) { - order.setClause(PollenUser.PROPERTY_NAME); + if (StringUtils.isNotBlank(search)) { + pollenUsers = getSpgeedUserDao().getAllUsers(Chunk.init(page.getPageSize()), order, search); + } else { + pollenUsers = getSpgeedUserDao().getAllUsers(Chunk.init(page.getPageSize()), order); } - Chunk<PollenUser> users = getSpgeedUserDao().getAllUsers(Chunk.init(page.getPageSize()), order.getClause()); - PaginationResult<PollenUser> pollenUsers = getPollenUserDao().findAll(page, search); - checkNotNull(users); - return toPaginationListBean(pollenUsers, this::toPollenUserBean); + return toPaginationListBean(pollenUsers, this::toPollenUserBean, page); } public PollenUserBean getUser() { -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm