Pollen-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
June 2010
- 2 participants
- 15 discussions
Author: tchemit
Date: 2010-06-27 08:36:51 +0200 (Sun, 27 Jun 2010)
New Revision: 3036
Url: http://chorem.org/repositories/revision/pollen/3036
Log:
Utilisation de mavenpom4redmine 2.2.1
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-24 22:43:53 UTC (rev 3035)
+++ trunk/pom.xml 2010-06-27 06:36:51 UTC (rev 3036)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>2.2</version>
+ <version>2.2.1</version>
</parent>
<groupId>org.chorem</groupId>
1
0
r3035 - trunk/pollen-business/src/main/java/org/chorem/pollen/service
by fdesbois@users.chorem.org 24 Jun '10
by fdesbois@users.chorem.org 24 Jun '10
24 Jun '10
Author: fdesbois
Date: 2010-06-25 00:43:53 +0200 (Fri, 25 Jun 2010)
New Revision: 3035
Url: http://chorem.org/repositories/revision/pollen/3035
Log:
Can use association property
Modified:
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-24 22:43:53 UTC (rev 3035)
@@ -168,22 +168,22 @@
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- String participantChoiceProperty =
- TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_ACCOUNT,
- PollAccount.PROPERTY_CHOICE_VOTE,
- Vote.PROPERTY_CHOICE);
+// String participantChoiceProperty =
+// TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_ACCOUNT,
+// PollAccount.PROPERTY_CHOICE_VOTE,
+// Vote.PROPERTY_CHOICE);
+//
+// TopiaQuery query = dao.createQueryFindAllByPoll(filter).
+// addDistinct().
+// addFetch(participantChoiceProperty);
+ PollenQueryHelper.PollAccountProperty accountProperty =
+ PollenQueryHelper.newPollAccountProperty();
+
TopiaQuery query = dao.createQueryFindAllByPoll(filter).
addDistinct().
- addFetch(participantChoiceProperty);
+ addFetch(accountProperty.choiceVoteProperty().choice());
-// PollenQueryHelper.PollAccountProperty accountProperty =
-// PollenQueryHelper.newPollAccountProperty();
-//
-// TopiaQuery query = dao.createQueryFindAllByPoll(filter).
-// addDistinct().
-// addFetch(accountProperty.choiceVoteProperty().choice());
-
List<PollAccount> results = dao.findAllByQuery(query);
if (log.isDebugEnabled()) {
1
0
r3034 - in trunk/pollen-business/src/main/java/org/chorem/pollen: entity service
by fdesbois@users.chorem.org 24 Jun '10
by fdesbois@users.chorem.org 24 Jun '10
24 Jun '10
Author: fdesbois
Date: 2010-06-24 18:58:30 +0200 (Thu, 24 Jun 2010)
New Revision: 3034
Url: http://chorem.org/repositories/revision/pollen/3034
Log:
Refactor queries to use PollenQueryHelper
Modified:
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
@@ -19,23 +19,35 @@
filter.checkReference(FavoriteList.class, true);
- // ------------------------- PROPERTIES ----------------------------- //
+// // ------------------------- PROPERTIES ----------------------------- //
+//
+// String participantAlias = PollenQueryHelper.ALIAS_FAVORITE_PARTICIPANT;
+// String listAlias = PollenQueryHelper.ALIAS_FAVORITE_LIST;
+// String listParticipantProperty =
+// TopiaQuery.getProperty(listAlias,
+// FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
+//
+// filter.setReferenceProperty(listAlias);
+//
+// // ----------------------- QUERY ------------------------------------ //
+//
+// TopiaQuery query = context.createQuery(FavoriteList.class, listAlias).
+// setSelect(participantAlias).
+// addJoin(listParticipantProperty, participantAlias, false).
+// addFilter(filter, participantAlias);
- String participantAlias = PollenQueryHelper.ALIAS_FAVORITE_PARTICIPANT;
- String listAlias = PollenQueryHelper.ALIAS_FAVORITE_LIST;
- String listParticipantProperty =
- TopiaQuery.getProperty(listAlias,
- FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
+ PollenQueryHelper.FavoriteListProperty listProperty =
+ PollenQueryHelper.newFavoriteListProperty();
+ PollenQueryHelper.FavoriteParticipantProperty participantProperty =
+ PollenQueryHelper.newFavoriteParticipantProperty();
- filter.setReferenceProperty(listAlias);
+ filter.setReferenceProperty(listProperty.$alias());
- // ----------------------- QUERY ------------------------------------ //
+ TopiaQuery query = PollenQueryHelper.createQuery(listProperty).
+ setSelect(participantProperty.$alias()).
+ addJoin(listProperty.favoriteParticipant(), participantProperty.$alias(), false).
+ addFilter(filter, participantProperty.$alias());
- TopiaQuery query = context.createQuery(FavoriteList.class, listAlias).
- setSelect(participantAlias).
- addJoin(listParticipantProperty, participantAlias, false).
- addFilter(filter, participantAlias);
-
return query;
}
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
@@ -18,54 +18,85 @@
filter.checkReference(Poll.class, true);
- // ------------------------- PROPERTIES ----------------------------- //
+// // ------------------------- PROPERTIES ----------------------------- //
+//
+// String pollAlias = PollenQueryHelper.ALIAS_POLL;
+// String pollAccountProperty =
+// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+//
+// String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
+// String participantVoteDateProperty =
+// TopiaQuery.getProperty(participantAlias,
+// PollAccount.PROPERTY_VOTE_DATE);
+//
+// filter.setReferenceProperty(pollAlias);
+//
+// // ----------------------- QUERY ------------------------------------ //
+//
+// // Will return lists in case of GROUP poll
+// TopiaQuery query = context.createQuery(Poll.class, pollAlias).
+// setSelect(participantAlias).
+// addJoin(pollAccountProperty, participantAlias, false).
+// addNotNull(participantVoteDateProperty).
+// addFilter(filter, participantAlias);
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
- String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+ PollenQueryHelper.PollProperty pollProperty =
+ PollenQueryHelper.newPollProperty();
+ PollenQueryHelper.PollAccountProperty participantProperty =
+ PollenQueryHelper.newPollAccountProperty();
- String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
- String participantVoteDateProperty =
- TopiaQuery.getProperty(participantAlias,
- PollAccount.PROPERTY_VOTE_DATE);
+ filter.setReferenceProperty(pollProperty.$alias());
- filter.setReferenceProperty(pollAlias);
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
+ setSelect(participantProperty.$alias()).
+ addJoin(pollProperty.pollAccount(), participantProperty.$alias(), false).
+ addNotNull(participantProperty.voteDate()).
+ addFilter(filter, participantProperty.$alias());
- // ----------------------- QUERY ------------------------------------ //
-
- // Will return lists in case of GROUP poll
- TopiaQuery query = context.createQuery(Poll.class, pollAlias).
- setSelect(participantAlias).
- addJoin(pollAccountProperty, participantAlias, false).
- addNotNull(participantVoteDateProperty).
- addFilter(filter, participantAlias);
-
return query;
}
@Override
public TopiaQuery createQueryFindAllParticipantsByPoll(Poll poll) {
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
- String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+// String pollAlias = PollenQueryHelper.ALIAS_POLL;
+// String pollAccountProperty =
+// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+//
+// String listAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
+// String listChildProperty =
+// TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
+//
+// String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD;
+//
+// TopiaQuery query = context.createQuery(Poll.class, pollAlias).
+// setSelect(participantAlias).
+// addEquals(pollAlias, poll);
+//
+// // Manage join depends on pollType
+// if (poll.getPollType().isGroup()) {
+// query.addJoin(pollAccountProperty, listAlias, false).
+// addJoin(listChildProperty, participantAlias, false);
+// } else {
+// query.addJoin(pollAccountProperty, participantAlias, false);
+// }
+ PollenQueryHelper.PollProperty pollProperty =
+ PollenQueryHelper.newPollProperty();
+ PollenQueryHelper.PollAccountProperty listProperty =
+ PollenQueryHelper.newPollAccountProperty();
+ PollenQueryHelper.PollAccountProperty participantProperty =
+ PollenQueryHelper.newPollAccountChildProperty();
- String listAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
- String listChildProperty =
- TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
+ setSelect(participantProperty.$alias()).
+ addEquals(pollProperty.$alias(), poll);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD;
-
- TopiaQuery query = context.createQuery(Poll.class, pollAlias).
- setSelect(participantAlias).
- addEquals(pollAlias, poll);
-
// Manage join depends on pollType
if (poll.getPollType().isGroup()) {
- query.addJoin(pollAccountProperty, listAlias, false).
- addJoin(listChildProperty, participantAlias, false);
+ query.addJoin(pollProperty.pollAccount(), listProperty.$alias(), false).
+ addJoin(listProperty.child(), participantProperty.$alias(), false);
} else {
- query.addJoin(pollAccountProperty, participantAlias, false);
+ query.addJoin(pollProperty.pollAccount(), participantProperty.$alias(), false);
}
return query;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
@@ -8,6 +8,7 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.entity.FavoriteList;
import org.chorem.pollen.entity.FavoriteListDAO;
import org.chorem.pollen.entity.FavoriteListImpl;
@@ -76,10 +77,7 @@
// check favoriteList name exist for user
UserAccount user = list.getUserAccount();
-// int count = dao.createQuery().
-// add(FavoriteList.USER_ACCOUNT, user).
-// add(FavoriteList.NAME, list.getName()).
-// executeCount();
+
// existing list found
if (dao.existByNaturalId(list.getName(), user)) {
throw new PollenBusinessException(
@@ -246,13 +244,16 @@
FavoriteParticipantDAO dao =
PollenDAOHelper.getFavoriteParticipantDAO(transaction);
+ PollenQueryHelper.FavoriteParticipantProperty participantProperty =
+ PollenQueryHelper.newFavoriteParticipantProperty();
+
TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter);
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
}
- query.addLoad(FavoriteParticipant.PROPERTY_FAVORITE_LIST);
+ query.addLoad(participantProperty.favoriteList());
Map<String, FavoriteParticipant> results =
dao.findAllMappedByQuery(query);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
@@ -357,10 +357,13 @@
PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
+ PollenQueryHelper.PollAccountProperty participantProperty =
+ PollenQueryHelper.newPollAccountChildProperty();
+
// Filter can be apply on userAccount as reference
TopiaQuery query = dao.createQueryFindAllByUser(filter);
- query.addSelect(PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD);
+ query.addSelect(participantProperty.$alias());
log.debug("Query : " + query);
@@ -436,18 +439,23 @@
CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction);
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
- String pollCommentProperty =
- TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_COMMENT);
- String commentAlias = PollenQueryHelper.ALIAS_COMMENT;
+// String pollAlias = PollenQueryHelper.ALIAS_POLL;
+// String pollCommentProperty =
+// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_COMMENT);
+// String commentAlias = PollenQueryHelper.ALIAS_COMMENT;
+ PollenQueryHelper.PollProperty pollProperty =
+ PollenQueryHelper.newPollProperty();
+ PollenQueryHelper.CommentProperty commentProperty =
+ PollenQueryHelper.newCommentProperty();
+
filter.checkReference(Poll.class, true);
- filter.setReferenceProperty(pollAlias);
+ filter.setReferenceProperty(pollProperty.$alias());
- TopiaQuery query = transaction.createQuery(Poll.class, pollAlias).
- setSelect(commentAlias).
- addJoin(pollCommentProperty, commentAlias, false).
- addFilter(filter);
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
+ setSelect(commentProperty.$alias()).
+ addJoin(pollProperty.comment(), commentProperty.$alias(), false).
+ addFilter(filter);
List<Comment> comments = dao.findAllByQuery(query);
@@ -537,32 +545,25 @@
String accountUid, String pollUid)
throws TopiaException {
- PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
-
- // No need alias managment so, no need of queryBuilder
-// Prop builder = context.newQueryBuilder(dao);
+// String creatorUidProperty =
+// TopiaQuery.getProperty(Poll.PROPERTY_CREATOR,
+// PollAccount.PROPERTY_UID);
//
-// EntityQueryProperty creatorProperty =
-// builder.getPollCreatorProperty(Poll.CREATOR);
-//
-// int count = builder.getQuery().
-// add(Poll.UID, pollUid).
-// add(creatorProperty.nameProperty(PollAccount.UID), accountUid).
-// executeCount();
+// TopiaQuery query = dao.createQuery().
+// addEquals(Poll.PROPERTY_UID, pollUid).
+// addEquals(creatorUidProperty, accountUid);
- String creatorUidProperty =
- TopiaQuery.getProperty(Poll.PROPERTY_CREATOR,
- PollAccount.PROPERTY_UID);
+ PollenQueryHelper.PollProperty pollProperty = PollenQueryHelper.newPollProperty();
- TopiaQuery query = dao.createQuery().
- addEquals(Poll.PROPERTY_UID, pollUid).
- addEquals(creatorUidProperty, accountUid);
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
+ addEquals(pollProperty.uid(), pollUid).
+ addEquals(pollProperty.creatorProperty().uid(), accountUid);
// Note a boolean admin exist in PollAccount, maybe
// find the account in lists
- boolean result = dao.existByQuery(query);
+ boolean result = PollenDAOHelper.getPollDAO(transaction).existByQuery(query);
return result;
}
@@ -572,21 +573,26 @@
String pollUid, String... properties)
throws TopiaException, PollenBusinessException {
- PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
-
// TopiaQuery query = dao.createQuery().
// addLoad(properties).
// addEquals(Poll.UID, pollUid);
- TopiaQuery query = dao.createQuery().
- addFetch(properties);
+// TopiaQuery query = dao.createQuery().
+// addFetch(properties);
+//
+// String pollUidProperty =
+// TopiaQuery.getProperty(query.getMainAlias(), Poll.PROPERTY_UID);
+//
+// query.addEquals(pollUidProperty, pollUid);
- String pollUidProperty =
- TopiaQuery.getProperty(query.getMainAlias(), Poll.PROPERTY_UID);
+ PollenQueryHelper.PollProperty pollProperty =
+ PollenQueryHelper.newPollProperty();
- query.addEquals(pollUidProperty, pollUid);
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
+ addFetch(properties).
+ addEquals(pollProperty.uid(), pollUid);
- Poll result = dao.findByQuery(query);
+ Poll result = PollenDAOHelper.getPollDAO(transaction).findByQuery(query);
if (result == null) {
throw new PollenBusinessException(
PollenBusinessException.PollenExceptionType.POLL_NOT_EXIST);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-24 16:58:30 UTC (rev 3034)
@@ -177,6 +177,13 @@
addDistinct().
addFetch(participantChoiceProperty);
+// PollenQueryHelper.PollAccountProperty accountProperty =
+// PollenQueryHelper.newPollAccountProperty();
+//
+// TopiaQuery query = dao.createQueryFindAllByPoll(filter).
+// addDistinct().
+// addFetch(accountProperty.choiceVoteProperty().choice());
+
List<PollAccount> results = dao.findAllByQuery(query);
if (log.isDebugEnabled()) {
1
0
r3033 - in trunk: . pollen-business pollen-business/src/main/java/org/chorem/pollen pollen-business/src/main/java/org/chorem/pollen/entity pollen-business/src/main/java/org/chorem/pollen/service pollen-business/src/main/xmi pollen-ui pollen-votecounting
by fdesbois@users.chorem.org 24 Jun '10
by fdesbois@users.chorem.org 24 Jun '10
24 Jun '10
Author: fdesbois
Date: 2010-06-24 18:34:31 +0200 (Thu, 24 Jun 2010)
New Revision: 3033
Url: http://chorem.org/repositories/revision/pollen/3033
Log:
Use last Topia and EUGene snapshot + QueryHelperTransformer
Removed:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java
Modified:
trunk/
trunk/pollen-business/
trunk/pollen-business/pom.xml
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenException.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
trunk/pollen-business/src/main/xmi/pollen.zargo
trunk/pollen-ui/
trunk/pollen-votecounting/
trunk/pom.xml
Property changes on: trunk
___________________________________________________________________
Modified: svn:ignore
- target
nbactions.xml
.settings
.classpath
.project
*.ipr
*.iws
*.iml
.pollen
+ *.ipr
*.iws
.classpath
.project
target
.pollen
.settings
nbactions.xml
Property changes on: trunk/pollen-business
___________________________________________________________________
Modified: svn:ignore
- target
.classpath
.project
.settings
*.ipr
*.iws
*.iml
+ *.ipr
*.iws
.classpath
.project
target
.settings
Modified: trunk/pollen-business/pom.xml
===================================================================
--- trunk/pollen-business/pom.xml 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/pom.xml 2010-06-24 16:34:31 UTC (rev 3033)
@@ -117,7 +117,8 @@
org.nuiton.topia.generator.ServiceTransformer,
org.nuiton.eugene.java.JavaInterfaceTransformer,
org.nuiton.eugene.java.JavaBeanTransformer,
- org.nuiton.topia.generator.BinderHelperTransformer
+ org.nuiton.topia.generator.BinderHelperTransformer,
+ org.nuiton.topia.generator.QueryHelperTransformer
</templates>
<excludeTemplates>
<excludeTemplate>org.nuiton.topia.generator.EntityAbstractTransformer</excludeTemplate>
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -315,16 +315,7 @@
}
}
}
- throw new PollenException(eee, message, args);
- // PollenBusinessException must be managed (catch and throw) when needed
-// if (! (eee instanceof PollenBusinessException)) {
-// throw new PollenException(eee, message, args);
-// } else {
-// if (log.isDebugEnabled()) {
-// log.debug("Business error : " + _(message, args));
-// }
-// throw eee;
-// }
+ throw new PollenException(message, eee, args);
}
/**
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenException.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenException.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenException.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -12,7 +12,7 @@
* @param args
*/
- public PollenException(Throwable eee, String message, Object... args) {
+ public PollenException(String message, Throwable eee, Object... args) {
super(message, eee);
this.args = args;
}
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -1,23 +0,0 @@
-package org.chorem.pollen;
-
-/**
- * Created: 3 juin 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public class PollenQueryAlias {
-
- public static final String POLL = "P";
-
- public static final String POLL_PARTICIPANT = "A";
-
- public static final String POLL_LIST = "PL";
-
- public static final String FAVORITE_PARTICIPANT = "FP";
-
- public static final String FAVORITE_LIST = "FL";
-
- public static final String COMMENT = "C";
-
-}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -1,6 +1,6 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryAlias;
+import org.chorem.pollen.PollenQueryHelper;
import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
@@ -21,8 +21,8 @@
// ------------------------- PROPERTIES ----------------------------- //
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
- String listAlias = PollenQueryAlias.POLL_LIST;
+ String participantAlias = PollenQueryHelper.ALIAS_FAVORITE_PARTICIPANT;
+ String listAlias = PollenQueryHelper.ALIAS_FAVORITE_LIST;
String listParticipantProperty =
TopiaQuery.getProperty(listAlias,
FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -1,6 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryAlias;
+import org.chorem.pollen.PollenContext;
+import org.chorem.pollen.PollenQueryHelper;
import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
@@ -19,11 +20,11 @@
// ------------------------- PROPERTIES ----------------------------- //
- String pollAlias = PollenQueryAlias.POLL;
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
String participantVoteDateProperty =
TopiaQuery.getProperty(participantAlias,
PollAccount.PROPERTY_VOTE_DATE);
@@ -45,15 +46,15 @@
@Override
public TopiaQuery createQueryFindAllParticipantsByPoll(Poll poll) {
- String pollAlias = PollenQueryAlias.POLL;
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
- String listAlias = PollenQueryAlias.POLL_LIST;
+ String listAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT;
String listChildProperty =
TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD;
TopiaQuery query = context.createQuery(Poll.class, pollAlias).
setSelect(participantAlias).
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -1,6 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryAlias;
+import org.chorem.pollen.PollenContext;
+import org.chorem.pollen.PollenQueryHelper;
import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
@@ -19,45 +20,68 @@
// Filter reference is not always necessary but only used on UserAccount
filter.checkReference(UserAccount.class, false);
- // ------------------------- PROPERTIES ----------------------------- //
+// // ------------------------- PROPERTIES ----------------------------- //
+//
+// String pollAlias = PollenQueryAlias.POLL;
+// String pollCreatorProperty =
+// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR);
+// String pollAccountProperty =
+// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+//
+// // Property names for participant
+// String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+// String participantUserProperty =
+// TopiaQuery.getProperty(participantAlias,
+// PollAccount.PROPERTY_USER_ACCOUNT);
+//
+// // Property names for participant list
+// String listAlias = PollenQueryAlias.POLL_LIST;
+// String listChildProperty =
+// TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
+//
+// // participantUser is the reference to filter on if necessary
+// filter.setReferenceProperty(participantUserProperty);
+//
+// // ----------------------- QUERY ------------------------------------ //
+//
+// StringBuilder orBuilder = new StringBuilder(participantAlias).
+// // IN poll.pollAccount (NORMAL)
+// append(" IN (").append(listAlias).append(')').
+// append(" OR ").append(participantAlias).
+// // IN poll.pollAccount.child (GROUP)
+// append(" IN elements(").append(listChildProperty).append(')').
+// append(" OR ").append(participantAlias).
+// // = poll.creator (CREATOR)
+// append(" = ").append(pollCreatorProperty);
+//
+// TopiaQuery query = createQuery(pollAlias).
+// addDistinct().
+// addLeftJoin(pollAccountProperty, listAlias, false).
+// addFrom(PollAccount.class, participantAlias).
+// addWhere(orBuilder.toString()).
+// addFilter(filter);
- String pollAlias = PollenQueryAlias.POLL;
- String pollCreatorProperty =
- TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR);
- String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+ PollenQueryHelper.PollProperty pollProperty =
+ PollenQueryHelper.newPollProperty();
+ PollenQueryHelper.PollAccountProperty listProperty =
+ PollenQueryHelper.newPollAccountProperty();
+ PollenQueryHelper.PollAccountProperty participantProperty =
+ PollenQueryHelper.newPollAccountChildProperty();
- // Property names for participant
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
- String participantUserProperty =
- TopiaQuery.getProperty(participantAlias,
- PollAccount.PROPERTY_USER_ACCOUNT);
-
- // Property names for participant list
- String listAlias = PollenQueryAlias.POLL_LIST;
- String listChildProperty =
- TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
-
// participantUser is the reference to filter on if necessary
- filter.setReferenceProperty(participantUserProperty);
+ filter.setReferenceProperty(participantProperty.userAccount());
- // ----------------------- QUERY ------------------------------------ //
-
- StringBuilder orBuilder = new StringBuilder(participantAlias).
- // IN poll.pollAccount (NORMAL)
- append(" IN (").append(listAlias).append(')').
- append(" OR ").append(participantAlias).
- // IN poll.pollAccount.child (GROUP)
- append(" IN elements(").append(listChildProperty).append(')').
- append(" OR ").append(participantAlias).
- // = poll.creator (CREATOR)
- append(" = ").append(pollCreatorProperty);
-
- TopiaQuery query = createQuery(pollAlias).
+ TopiaQuery query = PollenQueryHelper.createQuery(pollProperty).
addDistinct().
- addLeftJoin(pollAccountProperty, listAlias, false).
- addFrom(PollAccount.class, participantAlias).
- addWhere(orBuilder.toString()).
+ addLeftJoin(pollProperty.pollAccount(), listProperty.$alias(), false).
+ addFrom(PollAccount.class, participantProperty.$alias()).
+ addWhere(PollenQueryHelper.format(
+ "$1 IN ($2) OR $1 IN elements($3) OR $1 = $4",
+ participantProperty.$alias(),
+ listProperty.$alias(),
+ listProperty.child(),
+ pollProperty.creator())
+ ).
addFilter(filter);
return query;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -8,7 +8,7 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenQueryAlias;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.bean.UserPoll;
import org.chorem.pollen.bean.UserPollImpl;
import org.chorem.pollen.common.ChoiceType;
@@ -360,7 +360,7 @@
// Filter can be apply on userAccount as reference
TopiaQuery query = dao.createQueryFindAllByUser(filter);
- query.addSelect(PollenQueryAlias.POLL_PARTICIPANT);
+ query.addSelect(PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD);
log.debug("Query : " + query);
@@ -394,7 +394,7 @@
return result;
}
- protected List<UserPoll> retrieveUserPolls(TopiaContext transaction,
+ protected List<UserPoll> retrieveUserPolls(TopiaContext transaction,
TopiaQuery query)
throws TopiaException {
@@ -436,10 +436,10 @@
CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction);
- String pollAlias = PollenQueryAlias.POLL;
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollCommentProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_COMMENT);
- String commentAlias = PollenQueryAlias.COMMENT;
+ String commentAlias = PollenQueryHelper.ALIAS_COMMENT;
filter.checkReference(Poll.class, true);
filter.setReferenceProperty(pollAlias);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-24 16:34:31 UTC (rev 3033)
@@ -8,7 +8,7 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenQueryAlias;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.entity.Choice;
import org.chorem.pollen.entity.Poll;
import org.chorem.pollen.entity.PollAccount;
@@ -121,10 +121,10 @@
TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD;
String pollCreatorProperty =
- TopiaQuery.getProperty(PollenQueryAlias.POLL,
+ TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL,
Poll.PROPERTY_CREATOR);
query.addEquals(participantAlias, participant).
@@ -169,7 +169,7 @@
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
String participantChoiceProperty =
- TopiaQuery.getProperty(PollenQueryAlias.POLL_PARTICIPANT,
+ TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_ACCOUNT,
PollAccount.PROPERTY_CHOICE_VOTE,
Vote.PROPERTY_CHOICE);
@@ -316,7 +316,7 @@
TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_ACCOUNT_CHILD;
String participantNameProperty =
TopiaQuery.getProperty(participantAlias,
Modified: trunk/pollen-business/src/main/xmi/pollen.zargo
===================================================================
(Binary files differ)
Property changes on: trunk/pollen-ui
___________________________________________________________________
Modified: svn:ignore
- *.ipr
*.iws
.classpath
*.iml
.project
target
profiles.xml
.pollen
nbactions.xml
.settings
+ *.ipr
.classpath
*.iws
.project
target
profiles.xml
.pollen
.settings
nbactions.xml
Property changes on: trunk/pollen-votecounting
___________________________________________________________________
Modified: svn:ignore
- target
.classpath
.project
.settings
*.ipr
*.iws
*.iml
+ *.ipr
*.iws
.classpath
.project
target
.settings
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-19 18:58:32 UTC (rev 3032)
+++ trunk/pom.xml 2010-06-24 16:34:31 UTC (rev 3033)
@@ -319,12 +319,12 @@
<!-- customized versions -->
<!--javadoc.version>2.4</javadoc.version-->
- <topia.version>2.4-SNAPSHOT</topia.version>
- <eugene.version>2.0.2-SNAPSHOT</eugene.version>
+ <topia.version>2.3.5-SNAPSHOT</topia.version>
+ <eugene.version>2.0.3-SNAPSHOT</eugene.version>
<i18n.version>1.2.2</i18n.version>
<tapestry.version>5.1.0.5</tapestry.version>
- <nuiton-web.version>0.1-SNAPSHOT</nuiton-web.version>
- <nuiton-utils.version>1.3.1-SNAPSHOT</nuiton-utils.version>
+ <nuiton-web.version>0.1</nuiton-web.version>
+ <nuiton-utils.version>1.3.1</nuiton-utils.version>
<processor.version>1.0.2</processor.version>
<!--Multilanguage maven-site -->
1
0
Author: tchemit
Date: 2010-06-19 20:58:32 +0200 (Sat, 19 Jun 2010)
New Revision: 3032
Url: http://chorem.org/repositories/revision/pollen/3032
Log:
Utilisation de mavenpom4redmine 2.2
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-07 10:51:43 UTC (rev 3031)
+++ trunk/pom.xml 2010-06-19 18:58:32 UTC (rev 3032)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>2.1.5</version>
+ <version>2.2</version>
</parent>
<groupId>org.chorem</groupId>
1
0
r3031 - branches/pollen-1.2.5-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components
by fdesbois@users.chorem.org 07 Jun '10
by fdesbois@users.chorem.org 07 Jun '10
07 Jun '10
Author: fdesbois
Date: 2010-06-07 12:51:43 +0200 (Mon, 07 Jun 2010)
New Revision: 3031
Url: http://chorem.org/repositories/revision/pollen/3031
Log:
Ano #205 : Reset session on logout. Don't know if it resolves the issue, but it's difficult to reproduce...
Modified:
branches/pollen-1.2.5-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java
Modified: branches/pollen-1.2.5-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java
===================================================================
--- branches/pollen-1.2.5-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java 2010-06-03 22:14:18 UTC (rev 3030)
+++ branches/pollen-1.2.5-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Border.java 2010-06-07 10:51:43 UTC (rev 3031)
@@ -34,6 +34,7 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.PersistentLocale;
import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
import org.chorem.pollen.business.dto.UserDTO;
import org.chorem.pollen.business.services.ServiceAuth;
import org.chorem.pollen.business.utils.MD5;
@@ -195,7 +196,9 @@
* @return la zone à mettre à jour
*/
Object onActionFromLogout() {
- user = null;
+ //user = null;
+ // Ano #205 : Reset session on logout
+ request.getSession(false).invalidate();
return "Index";
}
1
0
Author: fdesbois
Date: 2010-06-04 00:14:18 +0200 (Fri, 04 Jun 2010)
New Revision: 3030
Url: http://chorem.org/repositories/revision/pollen/3030
Log:
Move Filter managment to ToPIA
Added:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java
Removed:
trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java
trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
Modified:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties
trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties
trunk/pollen-business/src/main/xmi/pollen.zargo
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,212 +0,0 @@
-package org.chorem.pollen;
-
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-/**
- * EntityQueryProperty is used to simplify property concatenation in TopiaQuery.
- * The usage is simple, the EntityQueryProperty need a mainAlias which
- * represents the entity in a TopiaQuery. Then the {@link #nameProperty(String)}
- * is called to retrieve the correct property name used for the query. Exemple
- * :
- * <pre>
- * BoatDAO dao = AppDAOHelper.getBoatDAO(topiaContext);
- * <p/>
- * // Property used in the query
- * EntityQueryProperty boatProperty = new EntityQueryProperty("B");
- * <p/>
- * // It's better to create the query with the property name
- * TopiaQuery query = dao.createQuery(boatProperty.name());
- * <p/>
- * // The property NAME of the boat need to be find equals to "ULUBERLU"
- * query.add(boatProperty.nameProperty(Boat.NAME), "ULUBERLU");
- * <p/>
- * // It's avoid doing this :
- * query.add("B." + Boat.NAME, "ULUBERLU");
- * </pre>
- * This last exemple is a simple case but for a more complex query with more
- * than one entity, it's obvious that concatenation using + is not a good
- * practice.<br /> You can also use this class as a superclass for each entity,
- * ex :
- * <pre>
- * public class BoatProperty extends EntityQueryProperty {
- * <p/>
- * public BoatProperty(String mainAlias) {
- * super(mainAlias);
- * }
- * <p/>
- * public String namePropertyName() {
- * return nameProperty(Boat.NAME);
- * }
- * }
- * </pre>
- * <p/>
- * Created: 14 avr. 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- */
-public class EntityQueryProperty {
-
- /** alias of the entity * */
- protected String mainAlias;
-
- /** name of the property used for join in query * */
- protected String propertyJoin;
-
- /** class of the entity * */
- protected Class<?> entityClass;
-
- /**
- * Default constructor. mainAlias, propertyJoin and entityClass are null.
- * You can use setters to initalize these three properties. You can use
- * {@link #nameProperty(String)} method with a mainAlias null.
- */
- public EntityQueryProperty() {
- }
-
- /**
- * Constructor with mainAlias.
- *
- * @param mainAlias of the entity corresponding to this EntityQueryProperty
- */
- public EntityQueryProperty(String mainAlias) {
- setMainAlias(mainAlias);
- }
-
- /**
- * Constructor with mainAlias and entityClass.
- *
- * @param entityClass class of the entity corresponding to this
- * EntityQueryProperty
- * @param mainAlias alias of the entity corresponding to this
- * EntityQueryProperty
- */
- public EntityQueryProperty(Class<?> entityClass,
- String mainAlias) {
- this(mainAlias);
- setEntityClass(entityClass);
- }
-
- /**
- * Setter for mainAlias.
- *
- * @param mainAlias of the entity corresponding to this EntityQueryProperty
- */
- public void setMainAlias(String mainAlias) {
- this.mainAlias = mainAlias;
- }
-
- /**
- * Setter for propertyJoin.
- *
- * @param propertyName name of the property used for join
- * @see #namePropertyJoin()
- */
- public void setPropertyJoin(String propertyName) {
- this.propertyJoin = propertyName;
- }
-
- /**
- * Setter for entityClass.
- *
- * @param entityClass class of the entity corresponding to this
- * EntityQueryProperty
- */
- public void setEntityClass(Class<?> entityClass) {
- this.entityClass = entityClass;
- }
-
- /**
- * Name the entity as a property for a TopiaQuery. Careful, this name can be
- * null if no mainAlias is properly set.
- *
- * @return the entity name to use in a TopiaQuery
- */
- public String name() {
- return mainAlias;
- }
-
- /**
- * Name a property from the Entity for a TopiaQuery. No matter if the
- * mainAlias is null or not, the property will be correctly named.
- *
- * @param propertyName to named in the TopiaQuery
- * @return the property name to use in a TopiaQuery
- */
- public String nameProperty(String propertyName) {
- return TopiaQuery.getProperty(mainAlias, propertyName);
- }
-
- /**
- * Name the property Id (TOPIA_ID) of the entity.
- *
- * @return the property name to use in a TopiaQuery
- */
- public String namePropertyId() {
- return nameProperty(TopiaEntity.TOPIA_ID);
- }
-
- /**
- * Name the property CreateDate (TOPIA_CREATE_DATE) of the entity.
- *
- * @return the property name to use in a TopiaQuery
- */
- public String namePropertyCreateDate() {
- return nameProperty(TopiaEntity.TOPIA_CREATE_DATE);
- }
-
- /**
- * Name the property join. The propertyJoin attribute need to be set to
- * avoid NullPointerException.
- *
- * @return the property name to use in a TopiaQuery
- */
- public String namePropertyJoin() {
- if (propertyJoin == null) {
- throw new NullPointerException("propertyJoin is not set");
- }
- return nameProperty(propertyJoin);
- }
-
- public String namePropertyForJoin(String collectionProperty,
- EntityQueryProperty elementProperty) {
- return nameProperty(collectionProperty) + " as " + elementProperty.name();
- }
-
- /**
- * Get the entityClass associated with this EntityQueryProperty. Can be
- * useful in some case, to create other query for exemple or to use it in
- * {@link TopiaQuery#addFrom(Class)} method. The entityClass need to be set
- * before calling this method to avoid NullPointerException.
- *
- * @return the entity class corresponding to this EntityQueryProperty.
- */
- public Class<?> getEntityClass() {
- if (entityClass == null) {
- throw new NullPointerException("entitClass is not set");
- }
- return entityClass;
- }
-
- /**
- * Instanciate a new {@link TopiaQuery} based on this EntityQueryProperty.
- * The entityClass need to be set although the TopiaQuery can't be
- * instantiate.
- *
- * @return a new TopiaQuery with the main entity as the EntityQueryProperty
- * provides it.
- */
- public TopiaQuery newQuery() {
- return new TopiaQuery((Class<? extends TopiaEntity>)getEntityClass(), name());
- }
-
- /**
- * Simply the main name (mainAlias) of the EntityQueryProperty.
- *
- * @return the entity name associated to this EntityQueryProperty
- */
- @Override
- public String toString() {
- return name();
- }
-}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContext.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -4,6 +4,7 @@
import org.chorem.pollen.service.ServiceUser;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.util.ApplicationConfig;
@@ -123,4 +124,6 @@
*/
void closeTransaction(TopiaContext transaction);
+ public EntityFilter getNewFilter();
+
} //PollenContext
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -13,6 +13,8 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
+import org.nuiton.topia.framework.TopiaFilter;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import static org.nuiton.i18n.I18n._;
@@ -116,7 +118,7 @@
// Set context in PollenProperty enum to use easily method
// getValue() on PollenProperty
PollenProperty.setContext(this);
- PollenQueryHelper.setContext(this);
+ PollenUtils.setContext(this);
createSuperAdmin(serviceUser);
//
@@ -382,4 +384,9 @@
return null;
}
+ @Override
+ public EntityFilter getNewFilter() {
+ return new TopiaFilter();
+ }
+
}
Added: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -0,0 +1,23 @@
+package org.chorem.pollen;
+
+/**
+ * Created: 3 juin 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class PollenQueryAlias {
+
+ public static final String POLL = "P";
+
+ public static final String POLL_PARTICIPANT = "A";
+
+ public static final String POLL_LIST = "PL";
+
+ public static final String FAVORITE_PARTICIPANT = "FP";
+
+ public static final String FAVORITE_LIST = "FL";
+
+ public static final String COMMENT = "C";
+
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryAlias.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,62 +0,0 @@
-package org.chorem.pollen;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
-import org.chorem.pollen.entity.PollAccount;
-import org.chorem.pollen.entity.Vote;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaDAO;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.util.Date;
-
-/**
- * Created: 21 mai 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public class PollenQueryHelper {
-
- public static final String ALIAS_POLL = "P";
-
- public static final String ALIAS_POLL_PARTICIPANT = "A";
-
- public static final String ALIAS_POLL_LIST = "PL";
-
- public static final String ALIAS_FAVORITE_PARTICIPANT = "FP";
-
- public static final String ALIAS_FAVORITE_LIST = "FL";
-
- public static final String PROPERTY_CHOICE_VOTE =
- TopiaQuery.getProperty(PollAccount.PROPERTY_CHOICE_VOTE,
- Vote.PROPERTY_CHOICE);
-
- private static final Log log = LogFactory.getLog(PollenQueryHelper.class);
-
- private static PollenContext context;
-
- public static void setContext(PollenContext context) {
- PollenQueryHelper.context = context;
- }
-
- public static Date getCurrentDate() {
- return context.getCurrentDate();
- }
-
- public static TopiaQuery createQuery(Class<?> entityClass, String alias) {
- return new TopiaQuery((Class<? extends TopiaEntity>)entityClass, alias);
- }
-
- public static TopiaQuery createQueryFiltered(TopiaDAO dao,
- EntityFilter filter) {
-
- TopiaQuery query = dao.createQuery();
-
- ((TopiaFilter)filter).applyOnQuery(query);
-
- return query;
- }
-}
Copied: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java (from rev 3028, trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java)
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -0,0 +1,28 @@
+package org.chorem.pollen;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.pollen.entity.PollAccount;
+import org.chorem.pollen.entity.Vote;
+import org.nuiton.topia.framework.TopiaQuery;
+
+import java.util.Date;
+
+/**
+ * Created: 21 mai 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class PollenUtils {
+
+ private static PollenContext context;
+
+ public static void setContext(PollenContext context) {
+ PollenUtils.context = context;
+ }
+
+ public static Date getCurrentDate() {
+ return context.getCurrentDate();
+ }
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,126 +0,0 @@
-package org.chorem.pollen.bean;
-
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaId;
-
-import java.beans.PropertyChangeListener;
-
-/**
- * Created: 3 juin 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public interface EntityFilter {
-
- public static final String PROPERTY_START_INDEX = "startIndex";
-
- public static final String PROPERTY_END_INDEX = "endIndex";
-
- public static final String PROPERTY_ORDER_BY = "orderBy";
-
- public static final String PROPERTY_REFERENCE_ID = "referenceId";
-
- public static final String PROPERTY_REFERENCE_PROPERTY = "referenceProperty";
-
- /**
- * Get the value of startIndex
- *
- * @return the value of startIndex
- */
- public Integer getStartIndex();
-
- /**
- * Set the value of startIndex
- *
- * @param startIndex new value of startIndex
- */
- public void setStartIndex(Integer startIndex);
-
- /**
- * Get the value of orderBy
- *
- * @return the value of orderBy
- */
- public String getOrderBy();
-
- /**
- * Set the value of orderBy
- *
- * @param orderBy new value of orderBy
- */
- public void setOrderBy(String orderBy);
-
- /**
- * Get the value of endIndex
- *
- * @return the value of endIndex
- */
- public Integer getEndIndex();
-
- /**
- * Set the value of endIndex
- *
- * @param endIndex new value of endIndex
- */
- public void setEndIndex(Integer endIndex);
-
- /**
- * Get the value of referenceId
- *
- * @return the value of referenceId
- */
- public String getReferenceId();
-
- /**
- * Set the value of referenceId
- *
- * @param referenceId
- */
- public void setReferenceId(String referenceId);
-
- /**
- * Set the value of referenceId from {@code entity}
- *
- * @param entity
- */
- public void setReference(Object entity) throws IllegalArgumentException;
-
- /**
- * Used to check if the filter contains a reference.
- *
- * @return true if the filter contains a reference
- */
- public boolean hasReference();
-
- /**
- * Get the value of referenceProperty
- *
- * @return the value of referenceProperty
- */
- public String getReferenceProperty();
-
- /**
- * Set the value of referenceProperty
- *
- * @param referenceProperty
- */
- public void setReferenceProperty(String referenceProperty);
-
- /**
- * Add PropertyChangeListener.
- *
- * @param listener
- */
- public void addPropertyChangeListener(PropertyChangeListener listener);
-
- /**
- * Remove PropertyChangeListener.
- *
- * @param listener
- */
- public void removePropertyChangeListener(PropertyChangeListener listener);
-
-}
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,291 +0,0 @@
-package org.chorem.pollen.bean;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaId;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Filter
- * <p/>
- * Created: 23 avr. 2010
- *
- * @author fdesbois
- * @since 2.0
- */
-public class TopiaFilter implements EntityFilter {
-
- private static final Log log = LogFactory.getLog(TopiaFilter.class);
-
- protected Integer startIndex;
-
- protected Integer endIndex;
-
- protected String orderBy;
-
- protected String referenceId;
-
- protected String referenceProperty;
-
- private PropertyChangeSupport propertyChangeSupport =
- new PropertyChangeSupport(this);
-
- @Override
- public Integer getStartIndex() {
- return startIndex;
- }
-
- @Override
- public void setStartIndex(Integer startIndex) {
- Integer oldStartIndex = this.startIndex;
- this.startIndex = startIndex;
- propertyChangeSupport.firePropertyChange(PROPERTY_START_INDEX,
- oldStartIndex, startIndex);
- }
-
- @Override
- public String getOrderBy() {
- return orderBy;
- }
-
- @Override
- public void setOrderBy(String orderBy) {
- String oldOrderBy = this.orderBy;
- this.orderBy = orderBy;
- propertyChangeSupport.firePropertyChange(PROPERTY_ORDER_BY,
- oldOrderBy, orderBy);
- }
-
- @Override
- public Integer getEndIndex() {
- return endIndex;
- }
-
- @Override
- public void setEndIndex(Integer endIndex) {
- Integer oldEndIndex = this.endIndex;
- this.endIndex = endIndex;
- propertyChangeSupport.firePropertyChange(PROPERTY_END_INDEX,
- oldEndIndex, endIndex);
- }
-
- @Override
- public String getReferenceId() {
- return referenceId;
- }
-
- @Override
- public void setReferenceId(String referenceId) {
- String oldReferenceId = this.referenceId;
- this.referenceId = referenceId;
- propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_ID,
- oldReferenceId, referenceId);
- }
-
- @Override
- public void setReference(Object entity) throws IllegalArgumentException {
-
- if (! (entity instanceof TopiaEntity)) {
- throw new IllegalArgumentException("Can't set reference of type '" +
- entity.getClass().getName() + "' need a TopiaEntity");
- }
-
- setReferenceId(((TopiaEntity)entity).getTopiaId());
- }
-
- @Override
- public boolean hasReference() {
- return StringUtils.isNotEmpty(referenceId);
- }
-
- @Override
- public String getReferenceProperty() {
- return referenceProperty;
- }
-
- @Override
- public void setReferenceProperty(String referenceProperty) {
- String oldReferenceProperty = this.referenceProperty;
- this.referenceProperty = referenceProperty;
- propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_PROPERTY,
- oldReferenceProperty, referenceProperty);
- }
-
- @Override
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.addPropertyChangeListener(listener);
- }
-
- @Override
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.removePropertyChangeListener(listener);
- }
-
- /**
- * Test if the {@code entityClass} is corresponding to the current reference
- * in the filter. Will return false if no reference is set in the filter.
- *
- * @param entityClass Class reference to test
- * @return true if the classReference is corresponding, false otherwise
- * @see #checkReference(Class, boolean)
- */
- public boolean isClassReference(Class<?> entityClass) {
-
- boolean result = false;
-
- if (hasReference()) {
- try {
- Class<?> referenceClass = TopiaId.getClassName(referenceId);
- if (referenceClass.isAssignableFrom(entityClass)) {
- result = true;
- }
- } catch (TopiaNotFoundException eee) {
- if (log.isWarnEnabled()) {
- log.warn("ReferenceId '" + referenceId + "' is not a" +
- " compatible topiaId : " + eee.getMessage());
- }
- }
- }
- return result;
- }
-
- /**
- * Use to check if {@code reference} class is supported by the current
- * filter reference. The reference can be not {@code mandatory}. Exceptions
- * are thrown if the check failed. If you prefer to have a boolean instead
- * of exceptions, you can use {@link #isClassReference(Class)}.
- *
- * @param reference Class reference to check
- * @param mandatory If the existence of the reference is mandatory
- * @throws IllegalArgumentException for errors on check
- * @see #hasReference()
- * @see #isClassReference(Class)
- */
- public void checkReference(Class<?> reference, boolean mandatory)
- throws IllegalArgumentException {
-
- if (log.isTraceEnabled()) {
- log.trace("referenceClass to check : " + reference.getName());
- log.trace("mandatory : " + mandatory);
- log.trace("filter hasReference : " + hasReference());
- log.trace("filter isClassReference : " + isClassReference(reference));
- }
-
- if (mandatory && !hasReference()) {
- throw new IllegalArgumentException("The filter reference" +
- " of type '" + reference.getSimpleName() + "' is mandatory !");
- }
-
- if (hasReference() &&
- !isClassReference(reference)) {
- throw new IllegalArgumentException("Reference filtered need to be" +
- " a '" + reference.getSimpleName() + "' (referenceId = " +
- referenceId + ")");
- }
-
- }
-
- /**
- * Prepare a {@code query} with this filter that contains limit indexes,
- * orderBy condition and referenceId if needed. The referenceProperty is
- * necessary to use the referenceId of the {@code filter}. The filter will
- * be applied on the main entity in the query (using the mainAlias if
- * necessary).
- * <p/>
- * Note : the default orderBy is the topiaCreateDate ordered desc (the most
- * recent in first)
- *
- * @param query TopiaQuery to prepare
- * @see #applyOnQuery(TopiaQuery, String)
- * @throws IllegalArgumentException if referenceId is defined but no
- * referenceProperty was set
- */
- public void applyOnQuery(TopiaQuery query)
- throws IllegalArgumentException {
- applyOnQuery(query, null);
- }
-
- /**
- * Prepare a {@code query} with this filter that contains limit indexes,
- * orderBy condition and referenceId if needed. In some case it's necessary
- * to specify explicitely the {@code propertyToFilter} in complex queries.
- * The referenceProperty need to be specifie in {@code filter} to have a
- * correspondance between the referenceId and it's property in the query. By
- * default, the {@code propertyToFilter} is the mainAlias of the query.
- * <p/>
- * Note : the default orderBy is the topiaCreateDate ordered desc (the most
- * recent in first)
- *
- * @param query TopiaQuery to prepare
- * @param propertyToFilter Explicit property to filter
- * @throws IllegalArgumentException if referenceId is defined but no
- * referenceProperty was set
- */
- public void applyOnQuery(TopiaQuery query,
- String propertyToFilter)
- throws IllegalArgumentException {
-
- if (propertyToFilter == null) {
- propertyToFilter = query.getMainAlias();
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Filter added to the query : " +
- "startIndex = " + startIndex +
- " _ endIndex = " + endIndex +
- " _ orderBy = " + orderBy +
- " _ referenceId = " + referenceId);
- }
-
- // Add limits. Only startIndex do nothing.
- // startIndex + endIndex provides the limit
- if (startIndex != null && endIndex != null) {
- query.setLimit(startIndex, endIndex);
-
- // endIndex only provides the maxResults wanted
- } else if (endIndex != null) {
- query.setMaxResults(endIndex);
- }
-
- // Add order to the main entity in the query, splitted by comma
- if (orderBy != null) {
- List<String> order = new ArrayList<String>();
- for (String elmt : orderBy.split(",")) {
- String property =
- TopiaQuery.getProperty(propertyToFilter, elmt.trim());
- order.add(property);
- }
- query.addOrder(order.toArray(new String[order.size()]));
-
- // Default order by creation date
- } else {
- query.addOrderDesc(getPropertyCreateDate(propertyToFilter));
- }
-
- if (hasReference()) {
- if (referenceProperty == null) {
- throw new IllegalArgumentException("Reference property need" +
- " to be defined in filter to use referenceId = " +
- referenceId);
- }
- query.addEquals(getPropertyId(referenceProperty), referenceId);
- }
- }
-
- protected static String getPropertyId(String alias) {
- return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_ID);
- }
-
- protected static String getPropertyCreateDate(String alias) {
- return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_CREATE_DATE);
- }
-
-}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,8 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.PollenQueryAlias;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -16,26 +15,27 @@
extends FavoriteParticipantDAOAbstract<E> {
@Override
- public TopiaQuery createQueryFindAllByFavoriteList(EntityFilter input) {
+ public TopiaQuery createQueryFindAllByFavoriteList(EntityFilter filter) {
- TopiaFilter filter = (TopiaFilter)input;
-
filter.checkReference(FavoriteList.class, true);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
- String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ // ------------------------- PROPERTIES ----------------------------- //
+
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
+ String listAlias = PollenQueryAlias.POLL_LIST;
String listParticipantProperty =
TopiaQuery.getProperty(listAlias,
FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
- TopiaQuery query = PollenQueryHelper.
- createQuery(FavoriteList.class, listAlias).
+ filter.setReferenceProperty(listAlias);
+
+ // ----------------------- QUERY ------------------------------------ //
+
+ TopiaQuery query = context.createQuery(FavoriteList.class, listAlias).
setSelect(participantAlias).
- addJoin(listParticipantProperty, participantAlias, false);
+ addJoin(listParticipantProperty, participantAlias, false).
+ addFilter(filter, participantAlias);
- filter.setReferenceProperty(listAlias);
- filter.applyOnQuery(query, participantAlias);
-
return query;
}
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,8 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.PollenQueryAlias;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -14,47 +13,49 @@
public class PollAccountDAOImpl<E extends PollAccount> extends PollAccountDAOAbstract<E> {
@Override
- public TopiaQuery createQueryFindAllByPoll(EntityFilter input) {
+ public TopiaQuery createQueryFindAllByPoll(EntityFilter filter) {
- TopiaFilter filter = (TopiaFilter)input;
-
filter.checkReference(Poll.class, true);
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
+ // ------------------------- PROPERTIES ----------------------------- //
+
+ String pollAlias = PollenQueryAlias.POLL;
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
String participantVoteDateProperty =
TopiaQuery.getProperty(participantAlias,
PollAccount.PROPERTY_VOTE_DATE);
+ filter.setReferenceProperty(pollAlias);
+
+ // ----------------------- QUERY ------------------------------------ //
+
// Will return lists in case of GROUP poll
- TopiaQuery query = PollenQueryHelper.createQuery(Poll.class, pollAlias).
+ TopiaQuery query = context.createQuery(Poll.class, pollAlias).
setSelect(participantAlias).
addJoin(pollAccountProperty, participantAlias, false).
- addNotNull(participantVoteDateProperty);
+ addNotNull(participantVoteDateProperty).
+ addFilter(filter, participantAlias);
- filter.setReferenceProperty(pollAlias);
- filter.applyOnQuery(query, participantAlias);
-
return query;
}
@Override
public TopiaQuery createQueryFindAllParticipantsByPoll(Poll poll) {
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
+ String pollAlias = PollenQueryAlias.POLL;
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
- String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ String listAlias = PollenQueryAlias.POLL_LIST;
String listChildProperty =
TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
- TopiaQuery query = new TopiaQuery(Poll.class, pollAlias).
+ TopiaQuery query = context.createQuery(Poll.class, pollAlias).
setSelect(participantAlias).
addEquals(pollAlias, poll);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,8 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.PollenQueryAlias;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -14,36 +13,36 @@
public class PollDAOImpl<E extends Poll> extends PollDAOAbstract<E> {
@Override
- public TopiaQuery createQueryFindAllByUser(EntityFilter input)
+ public TopiaQuery createQueryFindAllByUser(EntityFilter filter)
throws IllegalArgumentException {
- TopiaFilter filter = (TopiaFilter)input;
-
// Filter reference is not always necessary but only used on UserAccount
filter.checkReference(UserAccount.class, false);
- String pollAlias = PollenQueryHelper.ALIAS_POLL;
+ // ------------------------- PROPERTIES ----------------------------- //
+
+ String pollAlias = PollenQueryAlias.POLL;
String pollCreatorProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR);
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
// Property names for participant
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
String participantUserProperty =
TopiaQuery.getProperty(participantAlias,
PollAccount.PROPERTY_USER_ACCOUNT);
// Property names for participant list
- String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ String listAlias = PollenQueryAlias.POLL_LIST;
String listChildProperty =
TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
- TopiaQuery query = createQuery(pollAlias).
- addDistinct().
- addLeftJoin(pollAccountProperty, listAlias, false).
- addFrom(PollAccount.class, participantAlias);
+ // participantUser is the reference to filter on if necessary
+ filter.setReferenceProperty(participantUserProperty);
+ // ----------------------- QUERY ------------------------------------ //
+
StringBuilder orBuilder = new StringBuilder(participantAlias).
// IN poll.pollAccount (NORMAL)
append(" IN (").append(listAlias).append(')').
@@ -54,12 +53,13 @@
// = poll.creator (CREATOR)
append(" = ").append(pollCreatorProperty);
- query.addWhere(orBuilder.toString());
+ TopiaQuery query = createQuery(pollAlias).
+ addDistinct().
+ addLeftJoin(pollAccountProperty, listAlias, false).
+ addFrom(PollAccount.class, participantAlias).
+ addWhere(orBuilder.toString()).
+ addFilter(filter);
- // participantUser is the reference to filter on if necessary
- filter.setReferenceProperty(participantUserProperty);
- filter.applyOnQuery(query);
-
return query;
}
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,7 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenQueryHelper;
+import org.chorem.pollen.PollenUtils;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
import org.chorem.pollen.common.VoteCountingType;
@@ -67,13 +67,13 @@
@Override
public boolean isStarted() {
- Date now = PollenQueryHelper.getCurrentDate();
+ Date now = PollenUtils.getCurrentDate();
return getBeginDate() == null || getBeginDate().before(now);
}
@Override
public boolean isFinished() {
- Date now = PollenQueryHelper.getCurrentDate();
+ Date now = PollenUtils.getCurrentDate();
return getEndDate() != null && getEndDate().before(now);
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -8,8 +8,6 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteList;
import org.chorem.pollen.entity.FavoriteListDAO;
import org.chorem.pollen.entity.FavoriteListImpl;
@@ -19,6 +17,7 @@
import org.chorem.pollen.entity.UserAccount;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.TopiaEntity;
@@ -247,7 +246,7 @@
FavoriteParticipantDAO dao =
PollenDAOHelper.getFavoriteParticipantDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter);
+ TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter);
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
@@ -268,7 +267,7 @@
FavoriteParticipantDAO dao =
PollenDAOHelper.getFavoriteParticipantDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter);
+ TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter);
int result = dao.countByQuery(query);
return result;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -8,9 +8,7 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.PollenQueryAlias;
import org.chorem.pollen.bean.UserPoll;
import org.chorem.pollen.bean.UserPollImpl;
import org.chorem.pollen.common.ChoiceType;
@@ -18,7 +16,10 @@
import org.chorem.pollen.common.VoteCountingType;
import org.chorem.pollen.entity.Choice;
import org.chorem.pollen.entity.ChoiceDAO;
+import org.chorem.pollen.entity.ChoiceImpl;
import org.chorem.pollen.entity.Comment;
+import org.chorem.pollen.entity.CommentDAO;
+import org.chorem.pollen.entity.CommentImpl;
import org.chorem.pollen.entity.Participant;
import org.chorem.pollen.entity.ParticipantList;
import org.chorem.pollen.entity.Poll;
@@ -30,6 +31,7 @@
import org.chorem.pollen.entity.UserAccount;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
import java.util.ArrayList;
@@ -101,6 +103,7 @@
@Override
protected Poll executeGetNewPoll(Poll poll) {
throw new UnsupportedOperationException("Not supported yet.");
+ // maybe the solution is simply removed the uid and topiaId
}
@Override
@@ -273,16 +276,60 @@
@Override
protected void executeDeletePoll(TopiaContext transaction, Poll poll)
throws TopiaException {
- throw new UnsupportedOperationException("Not supported yet.");
+
+ PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
+
+ dao.delete(poll);
+
+ transaction.commitTransaction();
}
@Override
- protected void executeDeleteChoice(TopiaContext transaction, Choice choice)
+ protected Choice executeGetNewChoice(Poll poll) {
+ Choice newChoice = new ChoiceImpl();
+ newChoice.setChoiceType(poll.getChoiceType());
+ return newChoice;
+ }
+
+ @Override
+ protected Choice executeCreateChoice(TopiaContext transaction,
+ Poll poll, Choice choice)
throws TopiaException {
- throw new UnsupportedOperationException("Not supported yet.");
+
+ ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction);
+
+ Choice choiceCreated = dao.create(
+ Choice.PROPERTY_NAME, choice.getName(),
+ Choice.PROPERTY_DESCRIPTION, choice.getDescription(),
+ Choice.PROPERTY_TYPE, choice.getChoiceType()
+ );
+
+ PollDAO pollDAO = PollenDAOHelper.getPollDAO(transaction);
+
+ Poll pollToUpdate = pollDAO.findByTopiaId(poll.getTopiaId());
+
+ pollToUpdate.addChoice(choiceCreated);
+
+ pollDAO.update(pollToUpdate);
+
+ transaction.commitTransaction();
+
+ return choiceCreated;
}
@Override
+ protected boolean executeDeleteChoice(TopiaContext transaction, Choice choice)
+ throws TopiaException {
+ ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction);
+
+ dao.delete(choice);
+
+ transaction.commitTransaction();
+
+ return true;
+ }
+
+ @Override
protected List<Poll> executeGetRunningPolls(TopiaContext transaction)
throws TopiaException {
@@ -313,7 +360,7 @@
// Filter can be apply on userAccount as reference
TopiaQuery query = dao.createQueryFindAllByUser(filter);
- query.addSelect(PollenQueryHelper.ALIAS_POLL_PARTICIPANT);
+ query.addSelect(PollenQueryAlias.POLL_PARTICIPANT);
log.debug("Query : " + query);
@@ -329,7 +376,7 @@
PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
- TopiaFilter filter = new TopiaFilter();
+ EntityFilter filter = context.getNewFilter();
filter.setReference(user);
TopiaQuery query = dao.createQueryFindAllByUser(filter);
@@ -386,10 +433,91 @@
protected List<Comment> executeGetComments(TopiaContext transaction,
EntityFilter filter)
throws TopiaException {
- throw new UnsupportedOperationException("Not supported yet.");
+
+ CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction);
+
+ String pollAlias = PollenQueryAlias.POLL;
+ String pollCommentProperty =
+ TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_COMMENT);
+ String commentAlias = PollenQueryAlias.COMMENT;
+
+ filter.checkReference(Poll.class, true);
+ filter.setReferenceProperty(pollAlias);
+
+ TopiaQuery query = transaction.createQuery(Poll.class, pollAlias).
+ setSelect(commentAlias).
+ addJoin(pollCommentProperty, commentAlias, false).
+ addFilter(filter);
+
+ List<Comment> comments = dao.findAllByQuery(query);
+
+ return comments;
}
@Override
+ protected int executeGetNbComments(TopiaContext transaction,
+ Poll poll)
+ throws TopiaException {
+
+ PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
+
+ Poll pollFound = dao.findByTopiaId(poll.getTopiaId());
+
+ int count = pollFound.sizeComment();
+
+ return count;
+ }
+
+ @Override
+ protected Comment executeCreateComment(TopiaContext transaction,
+ Poll poll, Comment comment)
+ throws TopiaException {
+
+ CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction);
+
+ Comment commentCreated = dao.create(
+ Comment.PROPERTY_AUTHOR, comment.getAuthor(),
+ Comment.PROPERTY_COMMENT_DATE, context.getCurrentDate(),
+ Comment.PROPERTY_TEXT, comment.getText()
+ );
+
+ PollDAO pollDAO = PollenDAOHelper.getPollDAO(transaction);
+
+ Poll pollToUpdate = pollDAO.findByTopiaId(poll.getTopiaId());
+
+ pollToUpdate.addComment(commentCreated);
+
+ pollDAO.update(pollToUpdate);
+
+ transaction.commitTransaction();
+
+ return commentCreated;
+ }
+
+ @Override
+ protected boolean executeDeleteComment(TopiaContext transaction,
+ Comment comment)
+ throws TopiaException {
+
+ CommentDAO dao = PollenDAOHelper.getCommentDAO(transaction);
+
+ dao.delete(comment);
+
+ transaction.commitTransaction();
+
+ return true;
+ }
+
+ @Override
+ protected Comment executeGetNewComment(PollAccount account) {
+ Comment newComment = new CommentImpl();
+ if (account != null) {
+ newComment.setAuthor(account.getName());
+ }
+ return newComment;
+ }
+
+ @Override
protected ParticipantList executeGetNewPollList() {
PollAccount list = new PollAccountImpl();
list.setList(true);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -12,14 +12,12 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.entity.UserAccountDAO;
import org.chorem.pollen.entity.UserAccountImpl;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.util.TopiaEntityBinder;
@@ -261,7 +259,7 @@
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
- TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter);
+ TopiaQuery query = dao.createQuery().addFilter(filter);
Map<String, UserAccount> results = dao.findAllMappedByQuery(
query, UserAccount.PROPERTY_LOGIN, String.class);
@@ -269,14 +267,12 @@
}
@Override
- protected int executeGetNbUsers(TopiaContext transaction,
- EntityFilter filter) throws TopiaException {
+ protected int executeGetNbUsers(TopiaContext transaction) throws TopiaException {
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
- TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter);
+ int result = dao.count();
- int result = dao.countByQuery(query);
return result;
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -8,9 +8,7 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.EntityFilter;
-import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.PollenQueryAlias;
import org.chorem.pollen.entity.Choice;
import org.chorem.pollen.entity.Poll;
import org.chorem.pollen.entity.PollAccount;
@@ -23,6 +21,7 @@
import org.chorem.pollen.entity.VoteImpl;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.persistence.util.TopiaEntityBinder;
@@ -122,10 +121,10 @@
TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
String pollCreatorProperty =
- TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL,
+ TopiaQuery.getProperty(PollenQueryAlias.POLL,
Poll.PROPERTY_CREATOR);
query.addEquals(participantAlias, participant).
@@ -169,14 +168,14 @@
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter);
-
String participantChoiceProperty =
- TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_PARTICIPANT,
+ TopiaQuery.getProperty(PollenQueryAlias.POLL_PARTICIPANT,
PollAccount.PROPERTY_CHOICE_VOTE,
Vote.PROPERTY_CHOICE);
- query.addDistinct().addFetch(participantChoiceProperty);
+ TopiaQuery query = dao.createQueryFindAllByPoll(filter).
+ addDistinct().
+ addFetch(participantChoiceProperty);
List<PollAccount> results = dao.findAllByQuery(query);
@@ -188,12 +187,14 @@
}
@Override
- protected int executeGetNbVotes(TopiaContext transaction, EntityFilter filter)
+ protected int executeGetNbVotes(TopiaContext transaction, Poll poll)
throws TopiaException {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter);
+ EntityFilter filter = context.getNewFilter();
+ filter.setReference(poll);
+ TopiaQuery query = dao.createQueryFindAllByPoll(filter);
int result = dao.countByQuery(query);
return result;
@@ -215,19 +216,6 @@
dao.delete(participantToDelete);
- // Next code has equivalent results -> remove the entity from the poll
- // then delete it because of delete-orphan
-
-// PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
-//
-// Poll pollToUpdate = dao.findByTopiaId(poll.getTopiaId());
-//
-// // participant will be deleted because of composition on pollAccount
-// // collection
-// pollToUpdate.removePollAccount(participant);
-//
-// dao.update(pollToUpdate);
-
} else if (poll.getPollType().isRestrictedOrGroup()) {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
@@ -328,7 +316,7 @@
TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantAlias = PollenQueryAlias.POLL_PARTICIPANT;
String participantNameProperty =
TopiaQuery.getProperty(participantAlias,
Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties
===================================================================
--- trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-03 22:14:18 UTC (rev 3030)
@@ -24,6 +24,7 @@
pollen.error.servicePoll.addComment=
pollen.error.servicePoll.canAdminPoll=
pollen.error.servicePoll.createChoice=
+pollen.error.servicePoll.createComment=
pollen.error.servicePoll.createPoll=
pollen.error.servicePoll.createUpdateVote=
pollen.error.servicePoll.delete=
@@ -33,8 +34,11 @@
pollen.error.servicePoll.deleteVote=
pollen.error.servicePoll.getAllPolls=
pollen.error.servicePoll.getComments=
+pollen.error.servicePoll.getNbComments=
pollen.error.servicePoll.getNbPollsByUser=
pollen.error.servicePoll.getNbTotalPolls=
+pollen.error.servicePoll.getNewChoice=
+pollen.error.servicePoll.getNewComment=
pollen.error.servicePoll.getNewPoll=
pollen.error.servicePoll.getNewPollList=
pollen.error.servicePoll.getNewPollParticipant=
Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties
===================================================================
--- trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-03 22:14:18 UTC (rev 3030)
@@ -24,6 +24,7 @@
pollen.error.servicePoll.addComment=Impossible d'ajouter un nouveau commentaire cr\u00E9\u00E9 par %1$s pour le sondage %2$s (%3$s)
pollen.error.servicePoll.canAdminPoll=
pollen.error.servicePoll.createChoice=
+pollen.error.servicePoll.createComment=
pollen.error.servicePoll.createPoll=Impossible d'enregistrer le sondage %1$s cr\u00E9\u00E9 par %2$s
pollen.error.servicePoll.createUpdateVote=
pollen.error.servicePoll.deleteChoice=
@@ -32,8 +33,11 @@
pollen.error.servicePoll.deleteVote=
pollen.error.servicePoll.getAllPolls=
pollen.error.servicePoll.getComments=
+pollen.error.servicePoll.getNbComments=
pollen.error.servicePoll.getNbPollsByUser=
pollen.error.servicePoll.getNbTotalPolls=
+pollen.error.servicePoll.getNewChoice=
+pollen.error.servicePoll.getNewComment=
pollen.error.servicePoll.getNewPoll=
pollen.error.servicePoll.getNewPollList=
pollen.error.servicePoll.getNewPollParticipant=
Modified: trunk/pollen-business/src/main/xmi/pollen.zargo
===================================================================
(Binary files differ)
Deleted: trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -1,119 +0,0 @@
-
-package org.chorem.pollen;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.bean.TopiaFilter;
-import org.chorem.pollen.entity.UserAccount;
-import org.junit.Assert;
-import org.junit.Test;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-/**
- *
- * @author fdesbois
- */
-public class PollenUtilsTest {
-
- private static final Log log =
- LogFactory.getLog(PollenUtilsTest.class);
-
- /**
- * Test of prepareQuery method, of class Filter.
- */
- @Test
- public void testPrepareQueryForFilter() {
- log.info("testPrepareQueryForFilter");
-
- TopiaFilter filter = new TopiaFilter();
- filter.setStartIndex(1);
- filter.setEndIndex(40);
- filter.setOrderBy(UserAccount.PROPERTY_LOGIN);
-
-// TopiaQueryBuilder builder = new TopiaQueryBuilder();
-// builder.setQuery(new TopiaQuery(UserAccount.class));
- TopiaQuery query = new TopiaQuery(UserAccount.class);
- filter.applyOnQuery(query);
-
- log.debug("Query : " + query);
-
- Assert.assertEquals(query.fullQuery(),
- "FROM " + UserAccount.class.getName() +
- " ORDER BY " + UserAccount.PROPERTY_LOGIN);
-
- filter.setOrderBy(null);
-
- query = new TopiaQuery(UserAccount.class);
- filter.applyOnQuery(query);
-
- log.debug("Query : " + query);
-
- Assert.assertEquals(query.fullQuery(),
- "FROM " + UserAccount.class.getName() +
- " ORDER BY " + TopiaEntity.TOPIA_CREATE_DATE + " DESC");
-
- }
-
-// @Test
-// public void testCreateQueryFindElementsByCollection() throws IOException {
-//
-// //TopiaQueryBuilder builder = new TopiaQueryBuilder();
-//
-// Filter filter = new Filter();
-// filter.setStartIndex(1);
-// filter.setEndIndex(40);
-// filter.setOrderBy(FavoriteParticipant.NAME);
-//
-// EntityQueryProperty participantPropertyProvider =
-// PollenQueryHelper.getEntityQueryProperty(FavoriteParticipant.class, "P");
-//
-// EntityQueryProperty listPropertyProvider =
-// PollenQueryHelper.getEntityQueryProperty(FavoriteList.class, "L");
-// listPropertyProvider.setPropertyJoin(FavoriteList.FAVORITE_PARTICIPANT);
-//
-// log.info("test1 : orderBy FavoriteParticipant name");
-// TopiaQuery result = PollenQueryHelper.createQueryFindElementsByCollection(
-// participantPropertyProvider, listPropertyProvider, filter);
-//
-// log.debug("Query : " + result);
-//
-// Assert.assertEquals(result.fullQuery(),
-// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
-// + FavoriteList.class.getName() + " L" +
-// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
-// ") ORDER BY P." + FavoriteParticipant.NAME);
-//
-// log.info("test2 : orderBy not set (default to topiaCreateDate desc)");
-// filter.setOrderBy(null);
-//
-// result = PollenQueryHelper.createQueryFindElementsByCollection(
-// participantPropertyProvider, listPropertyProvider, filter);
-//
-// log.debug("Query : " + result);
-//
-// Assert.assertEquals(result.fullQuery(),
-// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
-// + FavoriteList.class.getName() + " L" +
-// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
-// ") ORDER BY P." + TopiaEntity.TOPIA_CREATE_DATE + " DESC");
-//
-// log.info("test3 : orderBy name and email desc");
-// String orderBy = FavoriteParticipant.NAME + ", " + FavoriteParticipant.EMAIL + " desc";
-// filter.setOrderBy(orderBy);
-//
-// result = PollenQueryHelper.createQueryFindElementsByCollection(
-// participantPropertyProvider, listPropertyProvider, filter);
-//
-// log.debug("Query : " + result);
-//
-// Assert.assertEquals(result.fullQuery(),
-// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
-// + FavoriteList.class.getName() + " L" +
-// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
-// ") ORDER BY P." + FavoriteParticipant.NAME + ", P." +
-// FavoriteParticipant.EMAIL + " desc");
-//
-// }
-
-}
\ No newline at end of file
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -4,7 +4,6 @@
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenDAOHelper;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.bean.UserPoll;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
@@ -25,6 +24,7 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.EntityFilter;
import java.util.ArrayList;
import java.util.Collection;
@@ -348,7 +348,7 @@
/** EXEC METHOD **/
- TopiaFilter filter = new TopiaFilter();
+ EntityFilter filter = context.getNewFilter();
filter.setReference(user);
List<UserPoll> polls = servicePoll.getPolls(filter);
@@ -394,7 +394,7 @@
Poll pollFound = servicePoll.getPoll(poll.getUid(), Poll.PROPERTY_CHOICE);
- TopiaFilter filter = new TopiaFilter();
+ EntityFilter filter = context.getNewFilter();
filter.setReference(pollFound);
List<PollAccount> accounts = getServiceVote().getVotes(filter);
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -4,7 +4,7 @@
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenDAOHelper;
-import org.chorem.pollen.PollenQueryHelper;
+import org.chorem.pollen.PollenUtils;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.VoteCountingType;
import org.chorem.pollen.entity.Choice;
@@ -22,13 +22,9 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.framework.TopiaQuery;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
/**
* Created: 27 mai 2010
@@ -148,8 +144,7 @@
// transaction.closeContext();
// }
- PollAccount accountFound = loadEntity(accountSaved,
- PollenQueryHelper.PROPERTY_CHOICE_VOTE);
+ PollAccount accountFound = loadEntity(accountSaved, PROPERTY_CHOICE_VOTE);
Assert.assertNotNull(accountFound);
Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
@@ -183,7 +178,7 @@
log.info("test 3 : update participant votes");
PollAccount participantExist =
- loadEntity(participant, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
+ loadEntity(participant, PROPERTY_CHOICE_VOTE);
for (Vote vote : participantExist.getChoiceVote()) {
// Update choice 1 with value 0 -> will be deleted
@@ -200,8 +195,7 @@
accountSaved = serviceVote.saveVote(poll, participantExist);
// Check
- accountFound = loadEntity(accountSaved,
- PollenQueryHelper.PROPERTY_CHOICE_VOTE);
+ accountFound = loadEntity(accountSaved, PROPERTY_CHOICE_VOTE);
Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
Assert.assertEquals(2, accountFound.getChoiceVote().size());
@@ -239,7 +233,7 @@
PollAccount account = serviceVote.saveVote(pollCreated, participant);
- account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
+ account = loadEntity(account, PROPERTY_CHOICE_VOTE);
Poll poll = loadEntity(pollCreated);
@@ -298,7 +292,7 @@
PollAccount account =
serviceVote.saveVote(pollCreated, existingParticipant);
- account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
+ account = loadEntity(account, PROPERTY_CHOICE_VOTE);
Poll poll = loadEntity(pollCreated);
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -61,6 +61,10 @@
@Ignore
public abstract class AbstractServiceTest {
+ protected static final String PROPERTY_CHOICE_VOTE =
+ TopiaQuery.getProperty(PollAccount.PROPERTY_CHOICE_VOTE,
+ Vote.PROPERTY_CHOICE);
+
private static final Log log = LogFactory.getLog(AbstractServiceTest.class);
protected PollenContext context;
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -9,13 +9,13 @@
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteList;
import org.chorem.pollen.entity.FavoriteParticipant;
import org.chorem.pollen.service.ServiceFavorite;
import org.chorem.pollen.ui.data.EvenOdd;
import org.chorem.pollen.ui.models.FavoriteParticipantDataSource;
import org.chorem.pollen.ui.services.PollenManager;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.web.tapestry5.components.FeedBack;
import org.slf4j.Logger;
@@ -88,7 +88,7 @@
if (logger.isDebugEnabled()) {
logger.debug("Create DATASOURCE");
}
- TopiaFilter filter = new TopiaFilter();
+ EntityFilter filter = manager.getNewFilter();
filter.setReference(source);
participants =
new FavoriteParticipantDataSource(serviceFavorite, filter);
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -2,9 +2,9 @@
import org.apache.tapestry5.grid.SortConstraint;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteParticipant;
import org.chorem.pollen.service.ServiceFavorite;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,10 +30,10 @@
private ServiceFavorite service;
- private TopiaFilter filter;
+ private EntityFilter filter;
public FavoriteParticipantDataSource(ServiceFavorite service,
- TopiaFilter filter) {
+ EntityFilter filter) {
this.service = service;
this.filter = filter;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -2,9 +2,9 @@
import org.apache.tapestry5.grid.SortConstraint;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.service.ServiceUser;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource;
import java.util.Map;
@@ -21,9 +21,9 @@
private ServiceUser service;
- private TopiaFilter filter;
+ private EntityFilter filter;
- public UserAccountDataSource(ServiceUser service, TopiaFilter filter) {
+ public UserAccountDataSource(ServiceUser service, EntityFilter filter) {
this.service = service;
this.filter = filter;
}
@@ -40,7 +40,7 @@
@Override
protected int count() throws PollenException {
- return service.getNbUsers(filter);
+ return service.getNbUsers();
}
@Override
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -31,7 +31,6 @@
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.bean.PollenEmail;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.service.ServiceEmail;
@@ -120,7 +119,7 @@
*/
public UserAccountDataSource getAccounts() {
if (accounts == null) {
- accounts = new UserAccountDataSource(serviceUser, new TopiaFilter());
+ accounts = new UserAccountDataSource(serviceUser, manager.getNewFilter());
}
return accounts;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -39,7 +39,6 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenProperty;
-import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.bean.PollenEmail;
import org.chorem.pollen.bean.PollenEmailImpl;
import org.chorem.pollen.entity.Choice;
@@ -61,6 +60,7 @@
import org.chorem.pollen.ui.services.PollenManager;
import org.chorem.pollen.ui.services.ServiceImage;
import org.chorem.pollen.ui.services.ServicePollUri;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.web.tapestry5.components.FeedBack;
import org.slf4j.Logger;
@@ -519,16 +519,14 @@
public int getNbVotes() throws PollenBusinessException {
if (nbVotes == null) {
- TopiaFilter filter = new TopiaFilter();
- filter.setReference(getPoll());
- nbVotes = serviceVote.getNbVotes(filter);
+ nbVotes = serviceVote.getNbVotes(getPoll());
}
return nbVotes;
}
@Log
- public TopiaFilter getVoteFilter() throws PollenBusinessException {
- TopiaFilter filter = new TopiaFilter();
+ public EntityFilter getVoteFilter() throws PollenBusinessException {
+ EntityFilter filter = manager.getNewFilter();
filter.setStartIndex(pager.getStartIndex());
filter.setEndIndex(pager.getEndIndex());
filter.setReference(getPoll());
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java 2010-06-03 17:28:59 UTC (rev 3029)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/services/PollenManager.java 2010-06-03 22:14:18 UTC (rev 3030)
@@ -36,6 +36,7 @@
import org.chorem.pollen.PollenProperty;
import org.chorem.pollen.service.ServiceUser;
import org.chorem.pollen.ui.data.ErrorReport;
+import org.nuiton.topia.framework.EntityFilter;
import org.nuiton.util.ApplicationConfig;
import org.slf4j.Logger;
@@ -139,6 +140,10 @@
return context.createPollenUrlId();
}
+ public EntityFilter getNewFilter() {
+ return context.getNewFilter();
+ }
+
/**
* Retrieve an error message from business {@code error} exception. Will
* used {@code messages} and {@code logger} services.
1
0
r3029 - in trunk/pollen-business/src/main/java/org/chorem/pollen: bean entity
by fdesbois@users.chorem.org 03 Jun '10
by fdesbois@users.chorem.org 03 Jun '10
03 Jun '10
Author: fdesbois
Date: 2010-06-03 19:28:59 +0200 (Thu, 03 Jun 2010)
New Revision: 3029
Url: http://chorem.org/repositories/revision/pollen/3029
Log:
Missing new classes from previous commit
Added:
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/UserPollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
Added: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java 2010-06-03 17:28:59 UTC (rev 3029)
@@ -0,0 +1,126 @@
+package org.chorem.pollen.bean;
+
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.topia.TopiaNotFoundException;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.TopiaId;
+
+import java.beans.PropertyChangeListener;
+
+/**
+ * Created: 3 juin 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public interface EntityFilter {
+
+ public static final String PROPERTY_START_INDEX = "startIndex";
+
+ public static final String PROPERTY_END_INDEX = "endIndex";
+
+ public static final String PROPERTY_ORDER_BY = "orderBy";
+
+ public static final String PROPERTY_REFERENCE_ID = "referenceId";
+
+ public static final String PROPERTY_REFERENCE_PROPERTY = "referenceProperty";
+
+ /**
+ * Get the value of startIndex
+ *
+ * @return the value of startIndex
+ */
+ public Integer getStartIndex();
+
+ /**
+ * Set the value of startIndex
+ *
+ * @param startIndex new value of startIndex
+ */
+ public void setStartIndex(Integer startIndex);
+
+ /**
+ * Get the value of orderBy
+ *
+ * @return the value of orderBy
+ */
+ public String getOrderBy();
+
+ /**
+ * Set the value of orderBy
+ *
+ * @param orderBy new value of orderBy
+ */
+ public void setOrderBy(String orderBy);
+
+ /**
+ * Get the value of endIndex
+ *
+ * @return the value of endIndex
+ */
+ public Integer getEndIndex();
+
+ /**
+ * Set the value of endIndex
+ *
+ * @param endIndex new value of endIndex
+ */
+ public void setEndIndex(Integer endIndex);
+
+ /**
+ * Get the value of referenceId
+ *
+ * @return the value of referenceId
+ */
+ public String getReferenceId();
+
+ /**
+ * Set the value of referenceId
+ *
+ * @param referenceId
+ */
+ public void setReferenceId(String referenceId);
+
+ /**
+ * Set the value of referenceId from {@code entity}
+ *
+ * @param entity
+ */
+ public void setReference(Object entity) throws IllegalArgumentException;
+
+ /**
+ * Used to check if the filter contains a reference.
+ *
+ * @return true if the filter contains a reference
+ */
+ public boolean hasReference();
+
+ /**
+ * Get the value of referenceProperty
+ *
+ * @return the value of referenceProperty
+ */
+ public String getReferenceProperty();
+
+ /**
+ * Set the value of referenceProperty
+ *
+ * @param referenceProperty
+ */
+ public void setReferenceProperty(String referenceProperty);
+
+ /**
+ * Add PropertyChangeListener.
+ *
+ * @param listener
+ */
+ public void addPropertyChangeListener(PropertyChangeListener listener);
+
+ /**
+ * Remove PropertyChangeListener.
+ *
+ * @param listener
+ */
+ public void removePropertyChangeListener(PropertyChangeListener listener);
+
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/EntityFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/UserPollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/UserPollImpl.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/UserPollImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
@@ -0,0 +1,51 @@
+package org.chorem.pollen.bean;
+
+import org.chorem.pollen.entity.PollAccount;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created: 3 juin 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class UserPollImpl extends UserPoll {
+
+ protected Boolean creator;
+
+ @Override
+ public boolean isCreator() {
+ // Lazy initialization of creator boolean
+ if (creator == null) {
+ for (PollAccount account : accounts) {
+ if (account.equals(poll.getCreator())) {
+ creator = true;
+ break;
+ }
+ }
+ }
+ return creator;
+ }
+
+ @Override
+ public String getPollUid() {
+ return poll.getUid();
+ }
+
+ @Override
+ public List<PollAccount> getAccounts() {
+ if (accounts == null) {
+ accounts = new ArrayList<PollAccount>();
+ }
+ return accounts;
+ }
+
+ @Override
+ public boolean addAccount(PollAccount account) {
+ boolean result = getAccounts().add(account);
+ return result;
+ }
+
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/UserPollImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2010-06-03 17:28:59 UTC (rev 3029)
@@ -0,0 +1,65 @@
+package org.chorem.pollen.entity;
+
+import org.chorem.pollen.PollenQueryHelper;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
+import org.nuiton.topia.framework.TopiaQuery;
+
+/**
+ * Created: 3 juin 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class PollDAOImpl<E extends Poll> extends PollDAOAbstract<E> {
+
+ @Override
+ public TopiaQuery createQueryFindAllByUser(EntityFilter input)
+ throws IllegalArgumentException {
+
+ TopiaFilter filter = (TopiaFilter)input;
+
+ // Filter reference is not always necessary but only used on UserAccount
+ filter.checkReference(UserAccount.class, false);
+
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
+ String pollCreatorProperty =
+ TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR);
+ String pollAccountProperty =
+ TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
+
+ // Property names for participant
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String participantUserProperty =
+ TopiaQuery.getProperty(participantAlias,
+ PollAccount.PROPERTY_USER_ACCOUNT);
+
+ // Property names for participant list
+ String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ String listChildProperty =
+ TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
+
+ TopiaQuery query = createQuery(pollAlias).
+ addDistinct().
+ addLeftJoin(pollAccountProperty, listAlias, false).
+ addFrom(PollAccount.class, participantAlias);
+
+ StringBuilder orBuilder = new StringBuilder(participantAlias).
+ // IN poll.pollAccount (NORMAL)
+ append(" IN (").append(listAlias).append(')').
+ append(" OR ").append(participantAlias).
+ // IN poll.pollAccount.child (GROUP)
+ append(" IN elements(").append(listChildProperty).append(')').
+ append(" OR ").append(participantAlias).
+ // = poll.creator (CREATOR)
+ append(" = ").append(pollCreatorProperty);
+
+ query.addWhere(orBuilder.toString());
+
+ // participantUser is the reference to filter on if necessary
+ filter.setReferenceProperty(participantUserProperty);
+ filter.applyOnQuery(query);
+
+ return query;
+ }
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
Author: fdesbois
Date: 2010-06-03 19:26:56 +0200 (Thu, 03 Jun 2010)
New Revision: 3028
Url: http://chorem.org/repositories/revision/pollen/3028
Log:
- use PROPERTY_ prefix for entity constants
- reorganize Filter (contract EntityFilter + implementation TopiaFilter)
- implement some polls methods (getNbPolls, getRunningPolls, ...)
Added:
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java
Removed:
trunk/pollen-business/src/main/java/org/chorem/pollen/bean/Filter.java
Modified:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/mail/BackgroundWorkerImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties
trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties
trunk/pollen-business/src/main/xmi/pollen.properties
trunk/pollen-business/src/main/xmi/pollen.zargo
trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceFavoriteImplTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminPolls.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/user/UserLists.java
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -1,17 +1,16 @@
package org.chorem.pollen;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.PollAccount;
import org.chorem.pollen.entity.Vote;
import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
/**
* Created: 21 mai 2010
@@ -32,7 +31,8 @@
public static final String ALIAS_FAVORITE_LIST = "FL";
public static final String PROPERTY_CHOICE_VOTE =
- TopiaQuery.getProperty(PollAccount.CHOICE_VOTE, Vote.CHOICE);
+ TopiaQuery.getProperty(PollAccount.PROPERTY_CHOICE_VOTE,
+ Vote.PROPERTY_CHOICE);
private static final Log log = LogFactory.getLog(PollenQueryHelper.class);
@@ -50,80 +50,13 @@
return new TopiaQuery((Class<? extends TopiaEntity>)entityClass, alias);
}
- public static void prepareQuery(TopiaQuery query,
- Filter filter) {
- prepareQuery(query, filter, null, null);
- }
+ public static TopiaQuery createQueryFiltered(TopiaDAO dao,
+ EntityFilter filter) {
- /**
- * Prepare a query with filter : adding startIndex and endIndex as limit
- * and orderBy if defined. Need an existing query in builder.
- *
- * @param filter Filter to add in the query
- * @see #prepareQuery(TopiaQuery, Filter, String, String)
- */
- public static void prepareQuery(TopiaQuery query,
- Filter filter,
- String mainAlias) {
- prepareQuery(query, filter, mainAlias, null);
- }
+ TopiaQuery query = dao.createQuery();
- public static void prepareQuery(TopiaQuery query,
- Filter filter,
- String mainAlias,
- String referenceAlias) {
- if (mainAlias == null) {
- mainAlias = query.getMainAlias();
- }
+ ((TopiaFilter)filter).applyOnQuery(query);
- Integer startIndex = filter.getStartIndex();
- Integer endIndex = filter.getEndIndex();
- String orderBy = filter.getOrderBy();
- String referenceId = filter.getReferenceId();
-
- if (log.isDebugEnabled()) {
- log.debug("Filter added to the query : " +
- "startIndex = " + startIndex +
- " _ endIndex = " + endIndex +
- " _ orderBy = " + orderBy +
- " _ referenceId = " + referenceId);
- }
-
- // Add limits. Only startIndex do nothing.
- // startIndex + endIndex provides the limit
- if (filter.getStartIndex() != null && endIndex != null) {
- query.setLimit(startIndex, endIndex);
-
- // endIndex only provides the maxResults wanted
- } else if (endIndex != null) {
- query.setMaxResults(endIndex);
- }
-
- // Add order to the main entity in the query, splitted by comma
- if (orderBy != null) {
- List<String> order = new ArrayList<String>();
- for (String elmt : orderBy.split(",")) {
- String property =
- TopiaQuery.getProperty(mainAlias, elmt.trim());
- order.add(property);
- }
- query.addOrder(order.toArray(new String[order.size()]));
-
- // Default order by creation date
- } else {
- query.addOrderDesc(getPropertyCreateDate(mainAlias));
- }
-
- if (StringUtils.isNotEmpty(referenceId) && referenceAlias != null) {
- query.addEquals(getPropertyId(referenceAlias), referenceId);
- }
+ return query;
}
-
- public static String getPropertyId(String alias) {
- return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_ID);
- }
-
- public static String getPropertyCreateDate(String alias) {
- return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_CREATE_DATE);
- }
}
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/Filter.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/Filter.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/Filter.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -1,139 +0,0 @@
-package org.chorem.pollen.bean;
-
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-
-/**
- * Filter
- * <p/>
- * Created: 23 avr. 2010
- *
- * @author fdesbois
- * @since 2.0
- */
-public class Filter {
-
- protected Integer startIndex;
-
- protected Integer endIndex;
-
- protected String orderBy;
-
- protected String referenceId;
-
- private PropertyChangeSupport propertyChangeSupport =
- new PropertyChangeSupport(this);
-
- public static final String PROPERTY_START_INDEX = "startIndex";
-
- public static final String PROPERTY_END_INDEX = "endIndex";
-
- public static final String PROPERTY_ORDER_BY = "orderBy";
-
- public static final String PROP_REFERENCE_ID = "referenceId";
-
- /**
- * Get the value of startIndex
- *
- * @return the value of startIndex
- */
- public Integer getStartIndex() {
- return startIndex;
- }
-
- /**
- * Set the value of startIndex
- *
- * @param startIndex new value of startIndex
- */
- public void setStartIndex(Integer startIndex) {
- Integer oldStartIndex = this.startIndex;
- this.startIndex = startIndex;
- propertyChangeSupport.firePropertyChange(PROPERTY_START_INDEX,
- oldStartIndex, startIndex);
- }
-
- /**
- * Get the value of orderBy
- *
- * @return the value of orderBy
- */
- public String getOrderBy() {
- return orderBy;
- }
-
- /**
- * Set the value of orderBy
- *
- * @param orderBy new value of orderBy
- */
- public void setOrderBy(String orderBy) {
- String oldOrderBy = this.orderBy;
- this.orderBy = orderBy;
- propertyChangeSupport.firePropertyChange(PROPERTY_ORDER_BY,
- oldOrderBy, orderBy);
- }
-
- /**
- * Get the value of endIndex
- *
- * @return the value of endIndex
- */
- public Integer getEndIndex() {
- return endIndex;
- }
-
- /**
- * Set the value of endIndex
- *
- * @param endIndex new value of endIndex
- */
- public void setEndIndex(Integer endIndex) {
- Integer oldEndIndex = this.endIndex;
- this.endIndex = endIndex;
- propertyChangeSupport.firePropertyChange(PROPERTY_END_INDEX,
- oldEndIndex, endIndex);
- }
-
- /**
- * Get the value of referenceId
- *
- * @return the value of referenceId
- */
- public String getReferenceId() {
- return referenceId;
- }
-
- /**
- * Set the value of referenceId
- *
- * @param entity
- */
- public void setReference(TopiaEntity entity) {
- String oldReferenceId = this.referenceId;
- this.referenceId = entity.getTopiaId();
- propertyChangeSupport.firePropertyChange(PROP_REFERENCE_ID,
- oldReferenceId, referenceId);
- }
-
- /**
- * Add PropertyChangeListener.
- *
- * @param listener
- */
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.addPropertyChangeListener(listener);
- }
-
- /**
- * Remove PropertyChangeListener.
- *
- * @param listener
- */
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.removePropertyChangeListener(listener);
- }
-
-}
Copied: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java (from rev 3025, trunk/pollen-business/src/main/java/org/chorem/pollen/bean/Filter.java)
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -0,0 +1,291 @@
+package org.chorem.pollen.bean;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaNotFoundException;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.TopiaId;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Filter
+ * <p/>
+ * Created: 23 avr. 2010
+ *
+ * @author fdesbois
+ * @since 2.0
+ */
+public class TopiaFilter implements EntityFilter {
+
+ private static final Log log = LogFactory.getLog(TopiaFilter.class);
+
+ protected Integer startIndex;
+
+ protected Integer endIndex;
+
+ protected String orderBy;
+
+ protected String referenceId;
+
+ protected String referenceProperty;
+
+ private PropertyChangeSupport propertyChangeSupport =
+ new PropertyChangeSupport(this);
+
+ @Override
+ public Integer getStartIndex() {
+ return startIndex;
+ }
+
+ @Override
+ public void setStartIndex(Integer startIndex) {
+ Integer oldStartIndex = this.startIndex;
+ this.startIndex = startIndex;
+ propertyChangeSupport.firePropertyChange(PROPERTY_START_INDEX,
+ oldStartIndex, startIndex);
+ }
+
+ @Override
+ public String getOrderBy() {
+ return orderBy;
+ }
+
+ @Override
+ public void setOrderBy(String orderBy) {
+ String oldOrderBy = this.orderBy;
+ this.orderBy = orderBy;
+ propertyChangeSupport.firePropertyChange(PROPERTY_ORDER_BY,
+ oldOrderBy, orderBy);
+ }
+
+ @Override
+ public Integer getEndIndex() {
+ return endIndex;
+ }
+
+ @Override
+ public void setEndIndex(Integer endIndex) {
+ Integer oldEndIndex = this.endIndex;
+ this.endIndex = endIndex;
+ propertyChangeSupport.firePropertyChange(PROPERTY_END_INDEX,
+ oldEndIndex, endIndex);
+ }
+
+ @Override
+ public String getReferenceId() {
+ return referenceId;
+ }
+
+ @Override
+ public void setReferenceId(String referenceId) {
+ String oldReferenceId = this.referenceId;
+ this.referenceId = referenceId;
+ propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_ID,
+ oldReferenceId, referenceId);
+ }
+
+ @Override
+ public void setReference(Object entity) throws IllegalArgumentException {
+
+ if (! (entity instanceof TopiaEntity)) {
+ throw new IllegalArgumentException("Can't set reference of type '" +
+ entity.getClass().getName() + "' need a TopiaEntity");
+ }
+
+ setReferenceId(((TopiaEntity)entity).getTopiaId());
+ }
+
+ @Override
+ public boolean hasReference() {
+ return StringUtils.isNotEmpty(referenceId);
+ }
+
+ @Override
+ public String getReferenceProperty() {
+ return referenceProperty;
+ }
+
+ @Override
+ public void setReferenceProperty(String referenceProperty) {
+ String oldReferenceProperty = this.referenceProperty;
+ this.referenceProperty = referenceProperty;
+ propertyChangeSupport.firePropertyChange(PROPERTY_REFERENCE_PROPERTY,
+ oldReferenceProperty, referenceProperty);
+ }
+
+ @Override
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ propertyChangeSupport.addPropertyChangeListener(listener);
+ }
+
+ @Override
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ propertyChangeSupport.removePropertyChangeListener(listener);
+ }
+
+ /**
+ * Test if the {@code entityClass} is corresponding to the current reference
+ * in the filter. Will return false if no reference is set in the filter.
+ *
+ * @param entityClass Class reference to test
+ * @return true if the classReference is corresponding, false otherwise
+ * @see #checkReference(Class, boolean)
+ */
+ public boolean isClassReference(Class<?> entityClass) {
+
+ boolean result = false;
+
+ if (hasReference()) {
+ try {
+ Class<?> referenceClass = TopiaId.getClassName(referenceId);
+ if (referenceClass.isAssignableFrom(entityClass)) {
+ result = true;
+ }
+ } catch (TopiaNotFoundException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("ReferenceId '" + referenceId + "' is not a" +
+ " compatible topiaId : " + eee.getMessage());
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Use to check if {@code reference} class is supported by the current
+ * filter reference. The reference can be not {@code mandatory}. Exceptions
+ * are thrown if the check failed. If you prefer to have a boolean instead
+ * of exceptions, you can use {@link #isClassReference(Class)}.
+ *
+ * @param reference Class reference to check
+ * @param mandatory If the existence of the reference is mandatory
+ * @throws IllegalArgumentException for errors on check
+ * @see #hasReference()
+ * @see #isClassReference(Class)
+ */
+ public void checkReference(Class<?> reference, boolean mandatory)
+ throws IllegalArgumentException {
+
+ if (log.isTraceEnabled()) {
+ log.trace("referenceClass to check : " + reference.getName());
+ log.trace("mandatory : " + mandatory);
+ log.trace("filter hasReference : " + hasReference());
+ log.trace("filter isClassReference : " + isClassReference(reference));
+ }
+
+ if (mandatory && !hasReference()) {
+ throw new IllegalArgumentException("The filter reference" +
+ " of type '" + reference.getSimpleName() + "' is mandatory !");
+ }
+
+ if (hasReference() &&
+ !isClassReference(reference)) {
+ throw new IllegalArgumentException("Reference filtered need to be" +
+ " a '" + reference.getSimpleName() + "' (referenceId = " +
+ referenceId + ")");
+ }
+
+ }
+
+ /**
+ * Prepare a {@code query} with this filter that contains limit indexes,
+ * orderBy condition and referenceId if needed. The referenceProperty is
+ * necessary to use the referenceId of the {@code filter}. The filter will
+ * be applied on the main entity in the query (using the mainAlias if
+ * necessary).
+ * <p/>
+ * Note : the default orderBy is the topiaCreateDate ordered desc (the most
+ * recent in first)
+ *
+ * @param query TopiaQuery to prepare
+ * @see #applyOnQuery(TopiaQuery, String)
+ * @throws IllegalArgumentException if referenceId is defined but no
+ * referenceProperty was set
+ */
+ public void applyOnQuery(TopiaQuery query)
+ throws IllegalArgumentException {
+ applyOnQuery(query, null);
+ }
+
+ /**
+ * Prepare a {@code query} with this filter that contains limit indexes,
+ * orderBy condition and referenceId if needed. In some case it's necessary
+ * to specify explicitely the {@code propertyToFilter} in complex queries.
+ * The referenceProperty need to be specifie in {@code filter} to have a
+ * correspondance between the referenceId and it's property in the query. By
+ * default, the {@code propertyToFilter} is the mainAlias of the query.
+ * <p/>
+ * Note : the default orderBy is the topiaCreateDate ordered desc (the most
+ * recent in first)
+ *
+ * @param query TopiaQuery to prepare
+ * @param propertyToFilter Explicit property to filter
+ * @throws IllegalArgumentException if referenceId is defined but no
+ * referenceProperty was set
+ */
+ public void applyOnQuery(TopiaQuery query,
+ String propertyToFilter)
+ throws IllegalArgumentException {
+
+ if (propertyToFilter == null) {
+ propertyToFilter = query.getMainAlias();
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Filter added to the query : " +
+ "startIndex = " + startIndex +
+ " _ endIndex = " + endIndex +
+ " _ orderBy = " + orderBy +
+ " _ referenceId = " + referenceId);
+ }
+
+ // Add limits. Only startIndex do nothing.
+ // startIndex + endIndex provides the limit
+ if (startIndex != null && endIndex != null) {
+ query.setLimit(startIndex, endIndex);
+
+ // endIndex only provides the maxResults wanted
+ } else if (endIndex != null) {
+ query.setMaxResults(endIndex);
+ }
+
+ // Add order to the main entity in the query, splitted by comma
+ if (orderBy != null) {
+ List<String> order = new ArrayList<String>();
+ for (String elmt : orderBy.split(",")) {
+ String property =
+ TopiaQuery.getProperty(propertyToFilter, elmt.trim());
+ order.add(property);
+ }
+ query.addOrder(order.toArray(new String[order.size()]));
+
+ // Default order by creation date
+ } else {
+ query.addOrderDesc(getPropertyCreateDate(propertyToFilter));
+ }
+
+ if (hasReference()) {
+ if (referenceProperty == null) {
+ throw new IllegalArgumentException("Reference property need" +
+ " to be defined in filter to use referenceId = " +
+ referenceId);
+ }
+ query.addEquals(getPropertyId(referenceProperty), referenceId);
+ }
+ }
+
+ protected static String getPropertyId(String alias) {
+ return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_ID);
+ }
+
+ protected static String getPropertyCreateDate(String alias) {
+ return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_CREATE_DATE);
+ }
+
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/bean/TopiaFilter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -1,7 +1,8 @@
package org.chorem.pollen.entity;
import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -15,18 +16,25 @@
extends FavoriteParticipantDAOAbstract<E> {
@Override
- public TopiaQuery createQueryFindAllByFavoriteList(Filter filter) {
+ public TopiaQuery createQueryFindAllByFavoriteList(EntityFilter input) {
+ TopiaFilter filter = (TopiaFilter)input;
+
+ filter.checkReference(FavoriteList.class, true);
+
String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
String listParticipantProperty =
- TopiaQuery.getProperty(listAlias, FavoriteList.FAVORITE_PARTICIPANT);
+ TopiaQuery.getProperty(listAlias,
+ FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
- TopiaQuery query = new TopiaQuery(FavoriteList.class, listAlias).
+ TopiaQuery query = PollenQueryHelper.
+ createQuery(FavoriteList.class, listAlias).
setSelect(participantAlias).
addJoin(listParticipantProperty, participantAlias, false);
- PollenQueryHelper.prepareQuery(query, filter, listAlias, participantAlias);
+ filter.setReferenceProperty(listAlias);
+ filter.applyOnQuery(query, participantAlias);
return query;
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -1,7 +1,8 @@
package org.chorem.pollen.entity;
import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -13,23 +14,29 @@
public class PollAccountDAOImpl<E extends PollAccount> extends PollAccountDAOAbstract<E> {
@Override
- public TopiaQuery createQueryFindAllByPoll(Filter filter) {
+ public TopiaQuery createQueryFindAllByPoll(EntityFilter input) {
+ TopiaFilter filter = (TopiaFilter)input;
+
+ filter.checkReference(Poll.class, true);
+
String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.POLL_ACCOUNT);
+ TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
String participantVoteDateProperty =
- TopiaQuery.getProperty(participantAlias, PollAccount.VOTE_DATE);
+ TopiaQuery.getProperty(participantAlias,
+ PollAccount.PROPERTY_VOTE_DATE);
// Will return lists in case of GROUP poll
- TopiaQuery query = new TopiaQuery(Poll.class, pollAlias).
+ TopiaQuery query = PollenQueryHelper.createQuery(Poll.class, pollAlias).
setSelect(participantAlias).
addJoin(pollAccountProperty, participantAlias, false).
addNotNull(participantVoteDateProperty);
- PollenQueryHelper.prepareQuery(query, filter, participantAlias);
+ filter.setReferenceProperty(pollAlias);
+ filter.applyOnQuery(query, participantAlias);
return query;
}
@@ -39,11 +46,11 @@
String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.POLL_ACCOUNT);
+ TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT);
String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
String listChildProperty =
- TopiaQuery.getProperty(listAlias, PollAccount.CHILD);
+ TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD);
String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -66,4 +66,9 @@
public String getId() {
return getTopiaId();
}
+
+ @Override
+ public boolean getHasVoted() {
+ return voteDate != null;
+ }
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/mail/BackgroundWorkerImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/mail/BackgroundWorkerImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/mail/BackgroundWorkerImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -16,6 +16,7 @@
package org.chorem.pollen.mail;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
@@ -91,7 +92,6 @@
// Récupération des sondages en cours
List<Poll> polls = servicePoll.getRunningPolls();
- //servicePoll.findRunningPolls(true);
for (Poll poll : polls) {
Date now = new Date();
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceFavoriteImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -8,7 +8,8 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteList;
import org.chorem.pollen.entity.FavoriteListDAO;
import org.chorem.pollen.entity.FavoriteListImpl;
@@ -130,9 +131,9 @@
FavoriteList list = participant.getFavoriteList();
TopiaQuery query = dao.createQuery().
- addEquals(FavoriteParticipant.FAVORITE_LIST, list).
- addEquals(FavoriteParticipant.NAME, participant.getName()).
- addEquals(FavoriteParticipant.EMAIL, participant.getEmail());
+ addEquals(FavoriteParticipant.PROPERTY_FAVORITE_LIST, list).
+ addEquals(FavoriteParticipant.PROPERTY_NAME, participant.getName()).
+ addEquals(FavoriteParticipant.PROPERTY_EMAIL, participant.getEmail());
// Check only on entities different from the one in argument
if (StringUtils.isNotEmpty(participant.getId())) {
@@ -241,18 +242,18 @@
@Override
protected Map<String, FavoriteParticipant> executeGetFavoriteParticipants(
- TopiaContext transaction, Filter filter) throws TopiaException {
+ TopiaContext transaction, EntityFilter filter) throws TopiaException {
FavoriteParticipantDAO dao =
PollenDAOHelper.getFavoriteParticipantDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter);
+ TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter);
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
}
- query.addLoad(FavoriteParticipant.FAVORITE_LIST);
+ query.addLoad(FavoriteParticipant.PROPERTY_FAVORITE_LIST);
Map<String, FavoriteParticipant> results =
dao.findAllMappedByQuery(query);
@@ -262,12 +263,12 @@
@Override
protected int executeGetNbFavoriteParticipants(TopiaContext transaction,
- Filter filter) throws TopiaException {
+ EntityFilter filter) throws TopiaException {
FavoriteParticipantDAO dao =
PollenDAOHelper.getFavoriteParticipantDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByFavoriteList(filter);
+ TopiaQuery query = dao.createQueryFindAllByFavoriteList((TopiaFilter)filter);
int result = dao.countByQuery(query);
return result;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -8,6 +8,11 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
+import org.chorem.pollen.PollenQueryHelper;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.bean.UserPoll;
+import org.chorem.pollen.bean.UserPollImpl;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
import org.chorem.pollen.common.VoteCountingType;
@@ -26,11 +31,11 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.LinkedHashMap;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -153,20 +158,20 @@
// Closed (not used in this case) and Creator (managed separately)
PollenBinderHelper.getSimpleTopiaBinder(Poll.class).
copyExcluding(source, newPoll,
- Poll.UID,
- Poll.CLOSED,
- Poll.CREATOR);
+ Poll.PROPERTY_UID,
+ Poll.PROPERTY_CLOSED,
+ Poll.PROPERTY_CREATOR);
// Create creator and set him to the poll
PollAccount creator = accountDAO.create(context.createPollenUrlId());
PollenBinderHelper.getSimpleTopiaBinder(PollAccount.class).
copy(source.getCreator(), creator,
- PollAccount.NAME,
- PollAccount.EMAIL,
+ PollAccount.PROPERTY_NAME,
+ PollAccount.PROPERTY_EMAIL,
// PollAccount.WEIGHT,
- PollAccount.ADMIN,
- PollAccount.USER_ACCOUNT);
+ PollAccount.PROPERTY_ADMIN,
+ PollAccount.PROPERTY_USER_ACCOUNT);
accountDAO.update(creator);
newPoll.setCreator(creator);
@@ -278,103 +283,80 @@
}
@Override
- protected List<Poll> executeGetAllPolls(TopiaContext transaction)
- throws TopiaException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
protected List<Poll> executeGetRunningPolls(TopiaContext transaction)
throws TopiaException {
- throw new UnsupportedOperationException("Not supported yet.");
+
+ PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
+
+ // isRunning : isStarted() && !isFinished() && !isClosed()
+ TopiaQuery query = dao.createQuery();
+
+ Date now = context.getCurrentDate();
+
+ query.addWhere(Poll.PROPERTY_BEGIN_DATE, TopiaQuery.Op.LE, now).
+ addWhere(Poll.PROPERTY_END_DATE, TopiaQuery.Op.GE, now).
+ addEquals(Poll.PROPERTY_CLOSED, Boolean.FALSE).
+ addOrderDesc(Poll.TOPIA_CREATE_DATE);
+
+ List<Poll> results = dao.findAllByQuery(query);
+
+ return results;
}
@Override
- protected Map<PollAccount, Poll> executeGetPollsByUser(TopiaContext transaction,
- UserAccount user)
+ protected List<UserPoll> executeGetPolls(TopiaContext transaction,
+ EntityFilter filter)
throws TopiaException {
PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
- Map<PollAccount, Poll> polls = new LinkedHashMap<PollAccount, Poll>();
- // Property names for poll
- String pollAlias = "P";
- String pollCreatorProperty =
- TopiaQuery.getProperty(pollAlias, Poll.CREATOR);
- String pollAccountProperty =
- TopiaQuery.getProperty(pollAlias, Poll.POLL_ACCOUNT);
- String pollCreateDateProperty =
- TopiaQuery.getProperty(pollAlias, TopiaEntity.TOPIA_CREATE_DATE);
+ // Filter can be apply on userAccount as reference
+ TopiaQuery query = dao.createQueryFindAllByUser(filter);
- // Property names for participant
- String participantAlias = "A";
- String participantUserProperty =
- TopiaQuery.getProperty(participantAlias, PollAccount.USER_ACCOUNT);
+ query.addSelect(PollenQueryHelper.ALIAS_POLL_PARTICIPANT);
- // Property names for participant list
- String listAlias = "G";
- String listChildProperty =
- TopiaQuery.getProperty(listAlias, PollAccount.CHILD);
+ log.debug("Query : " + query);
- // ALGO 1 with three queries : can't keep order, need Comparator
-// // Case 1 : creator
-// TopiaQuery queryCreator = dao.createQuery(pollAlias).
-// addSelect(participantAlias).
-// addJoin(pollCreatorProperty, participantAlias).
-// addEquals(participantUserProperty, user);
-//
-// preparePollResults(transaction, queryCreator, polls);
-//
-// // Case 2 : participants (direct accounts)
-// TopiaQuery queryParticipants = dao.createQuery(pollAlias).
-// addSelect(participantAlias).
-// addJoin(pollAccountProperty, participantAlias).
-// addEquals(participantUserProperty, user);
-//
-// preparePollResults(transaction, queryParticipants, polls);
-//
-// // Case 3 : by groups (child accounts)
-// TopiaQuery queryGroups = dao.createQuery(pollAlias).
-// addSelect(participantAlias).
-// addJoin(pollAccountProperty, groupAlias).
-// addJoin(groupChildProperty, participantAlias).
-// addEquals(participantUserProperty, user);
-//
-// preparePollResults(transaction, queryGroups, polls);
+ List<UserPoll> results = retrieveUserPolls(transaction, query);
- // ALGO 2 with one query and ordered
- TopiaQuery query = dao.createQuery(pollAlias).
- addDistinct().
- addSelect(participantAlias).
- addLeftJoin(pollAccountProperty, listAlias, false).
- addFrom(PollAccount.class, participantAlias).
- addEquals(participantUserProperty, user).
- addOrderDesc(pollCreateDateProperty);
+ return results;
+ }
- StringBuilder orBuilder = new StringBuilder(participantAlias).
- // IN poll.pollAccount (NORMAL)
- append(" IN (").append(listAlias).append(')').
- append(" OR ").append(participantAlias).
- // IN poll.pollAccount.child (GROUP)
- append(" IN elements(").append(listChildProperty).append(')').
- append(" OR ").append(participantAlias).
- // = poll.creator (CREATOR)
- append(" = ").append(pollCreatorProperty);
+ @Override
+ protected int executeGetNbPollsByUser(TopiaContext transaction,
+ UserAccount user)
+ throws TopiaException {
- query.addWhere(orBuilder.toString());
+ PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
- log.debug("Query : " + query);
+ TopiaFilter filter = new TopiaFilter();
+ filter.setReference(user);
+ TopiaQuery query = dao.createQueryFindAllByUser(filter);
- preparePollResults(transaction, query, polls);
+ int result = dao.countByQuery(query);
- return polls;
+ return result;
}
- protected void preparePollResults(TopiaContext transaction,
- TopiaQuery query,
- Map<PollAccount, Poll> results)
+ @Override
+ protected int executeGetNbTotalPolls(TopiaContext transaction)
throws TopiaException {
+ int result = PollenDAOHelper.getPollDAO(transaction).count();
+
+ return result;
+ }
+
+ protected List<UserPoll> retrieveUserPolls(TopiaContext transaction,
+ TopiaQuery query)
+ throws TopiaException {
+
+ List<UserPoll> results = new ArrayList<UserPoll>();
+
+ Map<String, UserPoll> pollsCache =
+ new HashMap<String, UserPoll>();
+
+
List<Object[]> queryResults = transaction.findByQuery(query);
for (Object[] row : queryResults) {
Poll poll = (Poll) row[0];
@@ -384,13 +366,25 @@
" list(" + account.isList() + ")" +
" admin(" + account.isAdmin() + ")" +
" for poll " + poll.getTitle());
- results.put(account, poll);
+
+ UserPoll userPoll = pollsCache.get(poll.getTopiaId());
+
+ if (userPoll == null) {
+ userPoll = new UserPollImpl();
+ userPoll.setPoll(poll);
+ results.add(userPoll);
+ pollsCache.put(poll.getTopiaId(), userPoll);
+ }
+
+ userPoll.addAccount(account);
}
+
+ return results;
}
@Override
protected List<Comment> executeGetComments(TopiaContext transaction,
- Poll poll, int startIndex, int endIndex)
+ EntityFilter filter)
throws TopiaException {
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -429,10 +423,11 @@
// executeCount();
String creatorUidProperty =
- TopiaQuery.getProperty(Poll.CREATOR, PollAccount.UID);
+ TopiaQuery.getProperty(Poll.PROPERTY_CREATOR,
+ PollAccount.PROPERTY_UID);
TopiaQuery query = dao.createQuery().
- addEquals(Poll.UID, pollUid).
+ addEquals(Poll.PROPERTY_UID, pollUid).
addEquals(creatorUidProperty, accountUid);
@@ -459,7 +454,7 @@
addFetch(properties);
String pollUidProperty =
- TopiaQuery.getProperty(query.getMainAlias(), Poll.UID);
+ TopiaQuery.getProperty(query.getMainAlias(), Poll.PROPERTY_UID);
query.addEquals(pollUidProperty, pollUid);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -13,7 +13,8 @@
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.entity.UserAccountDAO;
import org.chorem.pollen.entity.UserAccountImpl;
@@ -72,9 +73,9 @@
TopiaEntityBinder<UserAccount> binder =
PollenBinderHelper.getSimpleTopiaBinder(UserAccount.class);
- binder.copy(source, destination, UserAccount.ADMIN,
- UserAccount.FIRST_NAME,
- UserAccount.LAST_NAME);
+ binder.copy(source, destination, UserAccount.PROPERTY_ADMIN,
+ UserAccount.PROPERTY_FIRST_NAME,
+ UserAccount.PROPERTY_LAST_NAME);
// Don't keep case for email
destination.setEmail(StringUtils.lowerCase(source.getEmail()));
// Manage new password if needed
@@ -101,8 +102,8 @@
// add(UserAccount.PASSWORD, password).
// executeCount();
// no user found
- if (!dao.existByProperties(UserAccount.LOGIN, login,
- UserAccount.PASSWORD, password)) {
+ if (!dao.existByProperties(UserAccount.PROPERTY_LOGIN, login,
+ UserAccount.PROPERTY_PASSWORD, password)) {
throw new PollenBusinessException(
PollenExceptionType.USER_WRONG_PASSWORD, login);
}
@@ -147,7 +148,7 @@
if (query == null) {
query = dao.createQuery();
}
- query.addEquals(UserAccount.EMAIL, StringUtils.lowerCase(email));
+ query.addEquals(UserAccount.PROPERTY_EMAIL, StringUtils.lowerCase(email));
// existing user found
if (dao.existByQuery(query)) {
@@ -233,7 +234,8 @@
// the new email
// FIXME-fdesbois-20100510 : replace by using id directly
TopiaQuery query = dao.createQuery().
- addWhere(UserAccount.LOGIN, Op.NEQ, user.getLogin());
+ addWhere(UserAccount.PROPERTY_LOGIN,
+ Op.NEQ, user.getLogin());
checkEmailNotExist(dao, user.getEmail(), query);
// Execute update
@@ -255,26 +257,24 @@
@Override
protected Map<String, UserAccount> executeGetUsers(TopiaContext transaction,
- Filter filter) throws TopiaException {
+ EntityFilter filter) throws TopiaException {
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
- TopiaQuery query = dao.createQuery();
- PollenQueryHelper.prepareQuery(query, filter);
+ TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter);
Map<String, UserAccount> results = dao.findAllMappedByQuery(
- query, UserAccount.LOGIN, String.class);
+ query, UserAccount.PROPERTY_LOGIN, String.class);
return results;
}
@Override
protected int executeGetNbUsers(TopiaContext transaction,
- Filter filter) throws TopiaException {
+ EntityFilter filter) throws TopiaException {
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
- TopiaQuery query = dao.createQuery();
- PollenQueryHelper.prepareQuery(query, filter);
+ TopiaQuery query = PollenQueryHelper.createQueryFiltered(dao, filter);
int result = dao.countByQuery(query);
return result;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -9,7 +9,8 @@
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
import org.chorem.pollen.PollenQueryHelper;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.EntityFilter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.Choice;
import org.chorem.pollen.entity.Poll;
import org.chorem.pollen.entity.PollAccount;
@@ -70,7 +71,7 @@
*/
protected void copyPollAccount(PollAccount source, PollAccount destination) {
// Uid is the naturalId, don't copy it
- String[] excludes = new String[]{PollAccount.UID};
+ String[] excludes = new String[]{PollAccount.PROPERTY_UID};
// Exclude properties for anonymous account
if (source.isAnonymous()) {
@@ -80,10 +81,10 @@
}
excludes = new String[]{
- PollAccount.UID,
- PollAccount.NAME,
- PollAccount.EMAIL,
- PollAccount.USER_ACCOUNT};
+ PollAccount.PROPERTY_UID,
+ PollAccount.PROPERTY_NAME,
+ PollAccount.PROPERTY_EMAIL,
+ PollAccount.PROPERTY_USER_ACCOUNT};
}
TopiaEntityBinder binder =
@@ -124,10 +125,11 @@
String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
String pollCreatorProperty =
- TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL, Poll.CREATOR);
+ TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL,
+ Poll.PROPERTY_CREATOR);
query.addEquals(participantAlias, participant).
- addWhere(pollCreatorProperty, TopiaQuery.Op.NEQ, participant);
+ addWhere(pollCreatorProperty, TopiaQuery.Op.NEQ, participant);
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
@@ -162,17 +164,17 @@
@Override
protected List<PollAccount> executeGetVotes(TopiaContext transaction,
- Filter filter)
+ EntityFilter filter)
throws Exception {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByPoll(filter);
+ TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter);
String participantChoiceProperty =
TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_PARTICIPANT,
- PollAccount.CHOICE_VOTE,
- Vote.CHOICE);
+ PollAccount.PROPERTY_CHOICE_VOTE,
+ Vote.PROPERTY_CHOICE);
query.addDistinct().addFetch(participantChoiceProperty);
@@ -186,12 +188,12 @@
}
@Override
- protected int executeGetNbVotes(TopiaContext transaction, Filter filter)
+ protected int executeGetNbVotes(TopiaContext transaction, EntityFilter filter)
throws TopiaException {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- TopiaQuery query = dao.createQueryFindAllByPoll(filter);
+ TopiaQuery query = dao.createQueryFindAllByPoll((TopiaFilter)filter);
int result = dao.countByQuery(query);
return result;
@@ -329,7 +331,8 @@
String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
String participantNameProperty =
- TopiaQuery.getProperty(participantAlias, PollAccount.NAME);
+ TopiaQuery.getProperty(participantAlias,
+ PollAccount.PROPERTY_NAME);
query.addEquals(participantNameProperty, participant.getName());
Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties
===================================================================
--- trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2010-06-03 17:26:56 UTC (rev 3028)
@@ -33,6 +33,8 @@
pollen.error.servicePoll.deleteVote=
pollen.error.servicePoll.getAllPolls=
pollen.error.servicePoll.getComments=
+pollen.error.servicePoll.getNbPollsByUser=
+pollen.error.servicePoll.getNbTotalPolls=
pollen.error.servicePoll.getNewPoll=
pollen.error.servicePoll.getNewPollList=
pollen.error.servicePoll.getNewPollParticipant=
@@ -40,6 +42,7 @@
pollen.error.servicePoll.getPollForResults=
pollen.error.servicePoll.getPollForUpdate=
pollen.error.servicePoll.getPollForVote=
+pollen.error.servicePoll.getPolls=
pollen.error.servicePoll.getPollsByUser=
pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s
pollen.error.servicePoll.getRunningPolls=
Modified: trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties
===================================================================
--- trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2010-06-03 17:26:56 UTC (rev 3028)
@@ -32,6 +32,8 @@
pollen.error.servicePoll.deleteVote=
pollen.error.servicePoll.getAllPolls=
pollen.error.servicePoll.getComments=
+pollen.error.servicePoll.getNbPollsByUser=
+pollen.error.servicePoll.getNbTotalPolls=
pollen.error.servicePoll.getNewPoll=
pollen.error.servicePoll.getNewPollList=
pollen.error.servicePoll.getNewPollParticipant=
@@ -39,6 +41,7 @@
pollen.error.servicePoll.getPollForResults=
pollen.error.servicePoll.getPollForUpdate=
pollen.error.servicePoll.getPollForVote=
+pollen.error.servicePoll.getPolls=
pollen.error.servicePoll.getPollsByUser=
pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s
pollen.error.servicePoll.getRunningPolls=
Modified: trunk/pollen-business/src/main/xmi/pollen.properties
===================================================================
--- trunk/pollen-business/src/main/xmi/pollen.properties 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/main/xmi/pollen.properties 2010-06-03 17:26:56 UTC (rev 3028)
@@ -4,6 +4,9 @@
model.tagvalue.notGenerateToString=true
#model.tagvalue.useLegacyDAO=true
#model.tagvalue.dbSchema=Pollen
+#
+model.tagvalue.constantPrefix=PROPERTY_
+
model.tagvalue.java.lang.String=text
model.tagvalue.exceptionClass=org.chorem.pollen.PollenException
Modified: trunk/pollen-business/src/main/xmi/pollen.zargo
===================================================================
(Binary files differ)
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -1,12 +1,9 @@
package org.chorem.pollen;
-import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.bean.Filter;
-import org.chorem.pollen.entity.FavoriteList;
-import org.chorem.pollen.entity.FavoriteParticipant;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.UserAccount;
import org.junit.Assert;
import org.junit.Test;
@@ -29,26 +26,26 @@
public void testPrepareQueryForFilter() {
log.info("testPrepareQueryForFilter");
- Filter filter = new Filter();
+ TopiaFilter filter = new TopiaFilter();
filter.setStartIndex(1);
filter.setEndIndex(40);
- filter.setOrderBy(UserAccount.LOGIN);
+ filter.setOrderBy(UserAccount.PROPERTY_LOGIN);
// TopiaQueryBuilder builder = new TopiaQueryBuilder();
// builder.setQuery(new TopiaQuery(UserAccount.class));
TopiaQuery query = new TopiaQuery(UserAccount.class);
- PollenQueryHelper.prepareQuery(query, filter);
+ filter.applyOnQuery(query);
log.debug("Query : " + query);
Assert.assertEquals(query.fullQuery(),
"FROM " + UserAccount.class.getName() +
- " ORDER BY " + UserAccount.LOGIN);
+ " ORDER BY " + UserAccount.PROPERTY_LOGIN);
filter.setOrderBy(null);
query = new TopiaQuery(UserAccount.class);
- PollenQueryHelper.prepareQuery(query, filter);
+ filter.applyOnQuery(query);
log.debug("Query : " + query);
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceFavoriteImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceFavoriteImplTest.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceFavoriteImplTest.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -81,9 +81,9 @@
String email = null;
FavoriteParticipant result = dao.findByProperties(
- FavoriteParticipant.NAME, "participant2",
- FavoriteParticipant.EMAIL, email,
- FavoriteParticipant.FAVORITE_LIST, list);
+ FavoriteParticipant.PROPERTY_NAME, "participant2",
+ FavoriteParticipant.PROPERTY_EMAIL, email,
+ FavoriteParticipant.PROPERTY_FAVORITE_LIST, list);
Assert.assertNotNull(result);
} finally {
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -4,7 +4,8 @@
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenDAOHelper;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
+import org.chorem.pollen.bean.UserPoll;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
import org.chorem.pollen.common.VoteCountingType;
@@ -28,7 +29,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
/**
* Created: 14 mai 2010
@@ -97,7 +97,7 @@
Participant participant2_3 = createFavoriteParticipant(
"participant2_3", null, list2);
- list2 = findFavoriteList(list2.getId(), FavoriteList.FAVORITE_PARTICIPANT);
+ list2 = findFavoriteList(list2.getId(), FavoriteList.PROPERTY_FAVORITE_PARTICIPANT);
}
@Test
@@ -348,12 +348,24 @@
/** EXEC METHOD **/
- Map<PollAccount, Poll> polls = servicePoll.getPollsByUser(user);
+ TopiaFilter filter = new TopiaFilter();
+ filter.setReference(user);
+ List<UserPoll> polls = servicePoll.getPolls(filter);
- // POLL 2 : user both creator and participant (+2)
- // POLL : user creator + added in each group (+3)
+ // POLL 2 : user both creator and participant (+2 accounts)
+ // POLL : user creator + added in each group (+3 accounts)
- Assert.assertEquals(5, polls.size());
+ Assert.assertEquals(2, polls.size());
+
+ UserPoll userPoll2 = polls.get(0);
+ Assert.assertEquals("POLL2", userPoll2.getPoll().getTitle());
+ Assert.assertTrue(userPoll2.isCreator());
+ Assert.assertEquals(2, userPoll2.getAccounts().size());
+
+ UserPoll userPoll1 = polls.get(1);
+ Assert.assertEquals("POLL", userPoll1.getPoll().getTitle());
+ Assert.assertTrue(userPoll1.isCreator());
+ Assert.assertEquals(3, userPoll1.getAccounts().size());
}
@Test
@@ -380,9 +392,9 @@
/** EXEC METHOD **/
- Poll pollFound = servicePoll.getPoll(poll.getUid(), Poll.CHOICE);
+ Poll pollFound = servicePoll.getPoll(poll.getUid(), Poll.PROPERTY_CHOICE);
- Filter filter = new Filter();
+ TopiaFilter filter = new TopiaFilter();
filter.setReference(pollFound);
List<PollAccount> accounts = getServiceVote().getVotes(filter);
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/components/UserListsUpdate.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -9,7 +9,7 @@
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteList;
import org.chorem.pollen.entity.FavoriteParticipant;
import org.chorem.pollen.service.ServiceFavorite;
@@ -88,7 +88,7 @@
if (logger.isDebugEnabled()) {
logger.debug("Create DATASOURCE");
}
- Filter filter = new Filter();
+ TopiaFilter filter = new TopiaFilter();
filter.setReference(source);
participants =
new FavoriteParticipantDataSource(serviceFavorite, filter);
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/FavoriteParticipantDataSource.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -2,7 +2,7 @@
import org.apache.tapestry5.grid.SortConstraint;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.FavoriteParticipant;
import org.chorem.pollen.service.ServiceFavorite;
import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource;
@@ -30,10 +30,10 @@
private ServiceFavorite service;
- private Filter filter;
+ private TopiaFilter filter;
public FavoriteParticipantDataSource(ServiceFavorite service,
- Filter filter) {
+ TopiaFilter filter) {
this.service = service;
this.filter = filter;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -106,7 +106,8 @@
if (logger.isDebugEnabled()) {
logger.debug("Get existing poll with pollUID = " + uid);
}
- poll = servicePoll.getPoll(uid, Poll.CHOICE, Poll.POLL_ACCOUNT);
+ poll = servicePoll.getPoll(uid, Poll.PROPERTY_CHOICE,
+ Poll.PROPERTY_POLL_ACCOUNT);
// TODO : init advancedOptions
// TODO-fdesbois-2010-05-19 : exception need to be throw if uid not correspond to an existing poll
} else {
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/UserAccountDataSource.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -2,7 +2,7 @@
import org.apache.tapestry5.grid.SortConstraint;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.service.ServiceUser;
import org.nuiton.web.tapestry5.data.AbstractMappedGridDataSource;
@@ -21,9 +21,9 @@
private ServiceUser service;
- private Filter filter;
+ private TopiaFilter filter;
- public UserAccountDataSource(ServiceUser service, Filter filter) {
+ public UserAccountDataSource(ServiceUser service, TopiaFilter filter) {
this.service = service;
this.filter = filter;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminPolls.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminPolls.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminPolls.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -75,7 +75,7 @@
@Override
public void onActivate() {
super.onActivate();
- polls = servicePoll.getAllPolls();
+ //polls = servicePoll.getPolls(new Filter());
// Affichage des erreurs
if (!isAdminConnected()) {
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/admin/AdminUsers.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -31,7 +31,7 @@
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.bean.PollenEmail;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.service.ServiceEmail;
@@ -120,7 +120,7 @@
*/
public UserAccountDataSource getAccounts() {
if (accounts == null) {
- accounts = new UserAccountDataSource(serviceUser, new Filter());
+ accounts = new UserAccountDataSource(serviceUser, new TopiaFilter());
}
return accounts;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -27,7 +27,6 @@
import org.apache.tapestry5.Block;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -40,7 +39,7 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenProperty;
-import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.bean.TopiaFilter;
import org.chorem.pollen.bean.PollenEmail;
import org.chorem.pollen.bean.PollenEmailImpl;
import org.chorem.pollen.entity.Choice;
@@ -195,7 +194,7 @@
public Poll getPoll() throws PollenBusinessException {
if (poll == null) {
- poll = servicePoll.getPoll(uri.getPollUid(), Poll.CHOICE);
+ poll = servicePoll.getPoll(uri.getPollUid(), Poll.PROPERTY_CHOICE);
}
return poll;
}
@@ -520,7 +519,7 @@
public int getNbVotes() throws PollenBusinessException {
if (nbVotes == null) {
- Filter filter = new Filter();
+ TopiaFilter filter = new TopiaFilter();
filter.setReference(getPoll());
nbVotes = serviceVote.getNbVotes(filter);
}
@@ -528,12 +527,12 @@
}
@Log
- public Filter getVoteFilter() throws PollenBusinessException {
- Filter filter = new Filter();
+ public TopiaFilter getVoteFilter() throws PollenBusinessException {
+ TopiaFilter filter = new TopiaFilter();
filter.setStartIndex(pager.getStartIndex());
filter.setEndIndex(pager.getEndIndex());
filter.setReference(getPoll());
- filter.setOrderBy(PollAccount.VOTE_DATE + " desc");
+ filter.setOrderBy(PollAccount.PROPERTY_VOTE_DATE + " desc");
return filter;
}
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/user/UserLists.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/user/UserLists.java 2010-06-02 21:38:06 UTC (rev 3027)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/user/UserLists.java 2010-06-03 17:26:56 UTC (rev 3028)
@@ -116,8 +116,8 @@
favoriteListModel =
new GenericSelectModel<FavoriteList>(getFavoriteLists(),
FavoriteList.class,
- FavoriteList.NAME,
- FavoriteList.NAME,
+ FavoriteList.PROPERTY_NAME,
+ FavoriteList.PROPERTY_NAME,
propertyAccess);
}
return favoriteListModel;
1
0
02 Jun '10
Author: fdesbois
Date: 2010-06-02 23:38:06 +0200 (Wed, 02 Jun 2010)
New Revision: 3027
Url: http://chorem.org/repositories/revision/pollen/3027
Log:
Use addFetch method from TopiaQuery
Added:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
Removed:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java
Modified:
trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
trunk/pollen-business/src/main/xmi/pollen.zargo
trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java
trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java
trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -13,18 +13,13 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
import org.nuiton.i18n.init.DefaultI18nInitializer;
import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.util.TopiaEntityBinder;
import org.nuiton.util.StringUtil;
-import org.nuiton.util.beans.BinderBuilder;
/**
* PollenContext
@@ -121,7 +116,7 @@
// Set context in PollenProperty enum to use easily method
// getValue() on PollenProperty
PollenProperty.setContext(this);
- PollenUtils.setContext(this);
+ PollenQueryHelper.setContext(this);
createSuperAdmin(serviceUser);
//
Copied: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java (from rev 3025, trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java)
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java (rev 0)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -0,0 +1,129 @@
+package org.chorem.pollen;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.pollen.bean.Filter;
+import org.chorem.pollen.entity.PollAccount;
+import org.chorem.pollen.entity.Vote;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created: 21 mai 2010
+ *
+ * @author fdesbois <fdesbois(a)codelutin.com>
+ * @version $Id$
+ */
+public class PollenQueryHelper {
+
+ public static final String ALIAS_POLL = "P";
+
+ public static final String ALIAS_POLL_PARTICIPANT = "A";
+
+ public static final String ALIAS_POLL_LIST = "PL";
+
+ public static final String ALIAS_FAVORITE_PARTICIPANT = "FP";
+
+ public static final String ALIAS_FAVORITE_LIST = "FL";
+
+ public static final String PROPERTY_CHOICE_VOTE =
+ TopiaQuery.getProperty(PollAccount.CHOICE_VOTE, Vote.CHOICE);
+
+ private static final Log log = LogFactory.getLog(PollenQueryHelper.class);
+
+ private static PollenContext context;
+
+ public static void setContext(PollenContext context) {
+ PollenQueryHelper.context = context;
+ }
+
+ public static Date getCurrentDate() {
+ return context.getCurrentDate();
+ }
+
+ public static TopiaQuery createQuery(Class<?> entityClass, String alias) {
+ return new TopiaQuery((Class<? extends TopiaEntity>)entityClass, alias);
+ }
+
+ public static void prepareQuery(TopiaQuery query,
+ Filter filter) {
+ prepareQuery(query, filter, null, null);
+ }
+
+ /**
+ * Prepare a query with filter : adding startIndex and endIndex as limit
+ * and orderBy if defined. Need an existing query in builder.
+ *
+ * @param filter Filter to add in the query
+ * @see #prepareQuery(TopiaQuery, Filter, String, String)
+ */
+ public static void prepareQuery(TopiaQuery query,
+ Filter filter,
+ String mainAlias) {
+ prepareQuery(query, filter, mainAlias, null);
+ }
+
+ public static void prepareQuery(TopiaQuery query,
+ Filter filter,
+ String mainAlias,
+ String referenceAlias) {
+ if (mainAlias == null) {
+ mainAlias = query.getMainAlias();
+ }
+
+ Integer startIndex = filter.getStartIndex();
+ Integer endIndex = filter.getEndIndex();
+ String orderBy = filter.getOrderBy();
+ String referenceId = filter.getReferenceId();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Filter added to the query : " +
+ "startIndex = " + startIndex +
+ " _ endIndex = " + endIndex +
+ " _ orderBy = " + orderBy +
+ " _ referenceId = " + referenceId);
+ }
+
+ // Add limits. Only startIndex do nothing.
+ // startIndex + endIndex provides the limit
+ if (filter.getStartIndex() != null && endIndex != null) {
+ query.setLimit(startIndex, endIndex);
+
+ // endIndex only provides the maxResults wanted
+ } else if (endIndex != null) {
+ query.setMaxResults(endIndex);
+ }
+
+ // Add order to the main entity in the query, splitted by comma
+ if (orderBy != null) {
+ List<String> order = new ArrayList<String>();
+ for (String elmt : orderBy.split(",")) {
+ String property =
+ TopiaQuery.getProperty(mainAlias, elmt.trim());
+ order.add(property);
+ }
+ query.addOrder(order.toArray(new String[order.size()]));
+
+ // Default order by creation date
+ } else {
+ query.addOrderDesc(getPropertyCreateDate(mainAlias));
+ }
+
+ if (StringUtils.isNotEmpty(referenceId) && referenceAlias != null) {
+ query.addEquals(getPropertyId(referenceAlias), referenceId);
+ }
+ }
+
+ public static String getPropertyId(String alias) {
+ return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_ID);
+ }
+
+ public static String getPropertyCreateDate(String alias) {
+ return TopiaQuery.getProperty(alias, TopiaEntity.TOPIA_CREATE_DATE);
+ }
+}
Property changes on: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenQueryHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Deleted: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenUtils.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -1,151 +0,0 @@
-package org.chorem.pollen;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.bean.Filter;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Created: 21 mai 2010
- *
- * @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
- */
-public class PollenUtils {
-
- private static final Log log = LogFactory.getLog(PollenUtils.class);
-
- private static PollenContext context;
-
- public static void setContext(PollenContext context) {
- PollenUtils.context = context;
- }
-
- public static Date getCurrentDate() {
- return context.getCurrentDate();
- }
-
- // TEMP METHOD
- public static EntityQueryProperty getEntityQueryProperty(String alias) {
- return new EntityQueryProperty(alias);
- }
-
- public static EntityQueryProperty getEntityQueryProperty(
- Class<? extends TopiaEntity> entityClass, String alias) {
- return new EntityQueryProperty(entityClass, alias);
- }
-
- /**
- * Create a TopiaQuery to find all participants of a list with
- * {@code filter} constraints (order, limit indexes, listId).
- *
- * @param filter used to add constraint in the query
- * @param element
- * @param collection
- * @return the TopiaQuery created
- * @see #prepareQuery(TopiaQuery, Filter, String, EntityQueryProperty)
- */
- public static TopiaQuery createQueryFindElementsByCollection(
- EntityQueryProperty element,
- EntityQueryProperty collection,
- Filter filter) {
-
- // Instanciate a new query based on element
- TopiaQuery query = element.newQuery();
-
- // Add the collection in the From of the query
- query.addFrom((Class<? extends TopiaEntity>)collection.getEntityClass(),
- collection.name());
-
- // Add the link between the collection and the element
- query.addInElements(element.name(), collection.namePropertyJoin());
-
- if (filter != null) {
- // Add constraints from filter, the collection is given to provide
- // the name of its ID property.
- prepareQuery(query, filter, null, collection);
- }
-
- return query;
- }
-
- public static void prepareQuery(TopiaQuery query, Filter filter) {
- prepareQuery(query, filter, null, null);
- }
-
- /**
- * Prepare a query with filter : adding startIndex and endIndex as limit
- * and orderBy if defined. Need an existing query in builder.
- *
- * @param filter Filter to add in the query
- * @see #prepareQuery(TopiaQuery, Filter, String, EntityQueryProperty)
- */
- public static void prepareQuery(TopiaQuery query, Filter filter, String mainAlias) {
- prepareQuery(query, filter, mainAlias, null);
- }
-
- /**
- * Prepare a query with filter. The {@code reference} is used
- * to retrieve the name of ID property in case of filter using referenceId.
- * Need an existing query in builder.
- *
- * @param filter Filter to add in the query
- * @param reference used to filter on referenceId
- */
- public static void prepareQuery(TopiaQuery query, Filter filter,
- String mainAlias,
- EntityQueryProperty reference) {
-
- Integer startIndex = filter.getStartIndex();
- Integer endIndex = filter.getEndIndex();
- String orderBy = filter.getOrderBy();
- String referenceId = filter.getReferenceId();
-
- if (mainAlias == null) {
- mainAlias = query.getMainAlias();
- }
- EntityQueryProperty mainProperty =
- getEntityQueryProperty(mainAlias);
-
- if (log.isDebugEnabled()) {
- log.debug("Filter added to the query : " +
- "startIndex = " + startIndex +
- " _ endIndex = " + endIndex +
- " _ orderBy = " + orderBy +
- " _ referenceId = " + referenceId);
- }
-
- // Add limits. Only startIndex do nothing.
- // startIndex + endIndex provides the limit
- if (filter.getStartIndex() != null && endIndex != null) {
- query.setLimit(startIndex, endIndex);
-
- // endIndex only provides the maxResults wanted
- } else if (endIndex != null) {
- query.setMaxResults(endIndex);
- }
-
- // Add order to the main entity in the query, splitted by comma
- if (orderBy != null) {
- List<String> order = new ArrayList<String>();
- for (String elmt : orderBy.split(",")) {
- order.add(mainProperty.nameProperty(elmt.trim()));
- }
- query.addOrder(order.toArray(new String[order.size()]));
-
- // Default order by creation date
- } else {
- query.addOrderDesc(mainProperty.namePropertyCreateDate());
- }
-
- if (StringUtils.isNotEmpty(referenceId) && reference != null) {
- query.addEquals(reference.namePropertyId(), referenceId);
- }
- }
-}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/FavoriteParticipantDAOImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -1,16 +1,15 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.EntityQueryProperty;
-import org.chorem.pollen.PollenUtils;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.bean.Filter;
-import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
/**
* Created: 26 mai 2010
*
* @author fdesbois <fdesbois(a)codelutin.com>
- * @version $Id$
+ * @version $Id: FavoriteParticipantDAOImpl.java 3014 2010-05-26 09:17:43Z
+ * fdesbois $
*/
public class FavoriteParticipantDAOImpl<E extends FavoriteParticipant>
extends FavoriteParticipantDAOAbstract<E> {
@@ -18,17 +17,17 @@
@Override
public TopiaQuery createQueryFindAllByFavoriteList(Filter filter) {
- EntityQueryProperty participantProperty =
- PollenUtils.getEntityQueryProperty(FavoriteParticipant.class, "P");
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+ String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ String listParticipantProperty =
+ TopiaQuery.getProperty(listAlias, FavoriteList.FAVORITE_PARTICIPANT);
- EntityQueryProperty listProperty =
- PollenUtils.getEntityQueryProperty(FavoriteList.class, "L");
+ TopiaQuery query = new TopiaQuery(FavoriteList.class, listAlias).
+ setSelect(participantAlias).
+ addJoin(listParticipantProperty, participantAlias, false);
- listProperty.setPropertyJoin(FavoriteList.FAVORITE_PARTICIPANT);
+ PollenQueryHelper.prepareQuery(query, filter, listAlias, participantAlias);
- TopiaQuery query = PollenUtils.createQueryFindElementsByCollection(
- participantProperty, listProperty, filter);
-
return query;
}
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -1,9 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.EntityQueryProperty;
-import org.chorem.pollen.PollenUtils;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.bean.Filter;
-import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
/**
@@ -17,11 +15,11 @@
@Override
public TopiaQuery createQueryFindAllByPoll(Filter filter) {
- String pollAlias = "P";
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
String pollAccountProperty =
TopiaQuery.getProperty(pollAlias, Poll.POLL_ACCOUNT);
- String participantAlias = "A";
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
String participantVoteDateProperty =
TopiaQuery.getProperty(participantAlias, PollAccount.VOTE_DATE);
@@ -31,8 +29,36 @@
addJoin(pollAccountProperty, participantAlias, false).
addNotNull(participantVoteDateProperty);
- PollenUtils.prepareQuery(query, filter, participantAlias);
+ PollenQueryHelper.prepareQuery(query, filter, participantAlias);
return query;
}
+
+ @Override
+ public TopiaQuery createQueryFindAllParticipantsByPoll(Poll poll) {
+
+ String pollAlias = PollenQueryHelper.ALIAS_POLL;
+ String pollAccountProperty =
+ TopiaQuery.getProperty(pollAlias, Poll.POLL_ACCOUNT);
+
+ String listAlias = PollenQueryHelper.ALIAS_POLL_LIST;
+ String listChildProperty =
+ TopiaQuery.getProperty(listAlias, PollAccount.CHILD);
+
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
+
+ TopiaQuery query = new TopiaQuery(Poll.class, pollAlias).
+ setSelect(participantAlias).
+ addEquals(pollAlias, poll);
+
+ // Manage join depends on pollType
+ if (poll.getPollType().isGroup()) {
+ query.addJoin(pollAccountProperty, listAlias, false).
+ addJoin(listChildProperty, participantAlias, false);
+ } else {
+ query.addJoin(pollAccountProperty, participantAlias, false);
+ }
+
+ return query;
+ }
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -1,7 +1,7 @@
package org.chorem.pollen.entity;
-import org.chorem.pollen.PollenUtils;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
import org.chorem.pollen.common.VoteCountingType;
@@ -67,13 +67,13 @@
@Override
public boolean isStarted() {
- Date now = PollenUtils.getCurrentDate();
+ Date now = PollenQueryHelper.getCurrentDate();
return getBeginDate() == null || getBeginDate().before(now);
}
@Override
public boolean isFinished() {
- Date now = PollenUtils.getCurrentDate();
+ Date now = PollenQueryHelper.getCurrentDate();
return getEndDate() != null && getEndDate().before(now);
}
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -3,13 +3,11 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.EntityQueryProperty;
import org.chorem.pollen.PollenBinderHelper;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenUtils;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.PollType;
import org.chorem.pollen.common.VoteCountingType;
@@ -32,8 +30,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -295,7 +291,7 @@
@Override
protected Map<PollAccount, Poll> executeGetPollsByUser(TopiaContext transaction,
- UserAccount user)
+ UserAccount user)
throws TopiaException {
PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
@@ -346,7 +342,7 @@
//
// preparePollResults(transaction, queryGroups, polls);
- // ALGO 2 with one query and ordered
+ // ALGO 2 with one query and ordered
TopiaQuery query = dao.createQuery(pollAlias).
addDistinct().
addSelect(participantAlias).
@@ -357,13 +353,13 @@
StringBuilder orBuilder = new StringBuilder(participantAlias).
// IN poll.pollAccount (NORMAL)
- append(" IN (").append(listAlias).append(')').
+ append(" IN (").append(listAlias).append(')').
append(" OR ").append(participantAlias).
// IN poll.pollAccount.child (GROUP)
- append(" IN elements(").append(listChildProperty).append(')').
+ append(" IN elements(").append(listChildProperty).append(')').
append(" OR ").append(participantAlias).
// = poll.creator (CREATOR)
- append(" = ").append(pollCreatorProperty);
+ append(" = ").append(pollCreatorProperty);
query.addWhere(orBuilder.toString());
@@ -381,8 +377,8 @@
List<Object[]> queryResults = transaction.findByQuery(query);
for (Object[] row : queryResults) {
- Poll poll = (Poll)row[0];
- PollAccount account = (PollAccount)row[1];
+ Poll poll = (Poll) row[0];
+ PollAccount account = (PollAccount) row[1];
log.debug("account : " + account.getUid() + " : " +
account.getName() +
" list(" + account.isList() + ")" +
@@ -422,7 +418,7 @@
PollDAO dao = PollenDAOHelper.getPollDAO(transaction);
// No need alias managment so, no need of queryBuilder
-// PollenQueryBuilder builder = context.newQueryBuilder(dao);
+// Prop builder = context.newQueryBuilder(dao);
//
// EntityQueryProperty creatorProperty =
// builder.getPollCreatorProperty(Poll.CREATOR);
@@ -433,19 +429,18 @@
// executeCount();
String creatorUidProperty =
- TopiaQuery.getProperty(Poll.CREATOR, PollAccount.UID);
+ TopiaQuery.getProperty(Poll.CREATOR, PollAccount.UID);
- TopiaQuery query = dao.createQuery().
- addEquals(Poll.UID, pollUid).
- addEquals(creatorUidProperty, accountUid);
+ TopiaQuery query = dao.createQuery().
+ addEquals(Poll.UID, pollUid).
+ addEquals(creatorUidProperty, accountUid);
-
// Note a boolean admin exist in PollAccount, maybe
// find the account in lists
boolean result = dao.existByQuery(query);
-
+
return result;
}
@@ -461,7 +456,7 @@
// addEquals(Poll.UID, pollUid);
TopiaQuery query = dao.createQuery().
- addFetch(properties);
+ addFetch(properties);
String pollUidProperty =
TopiaQuery.getProperty(query.getMainAlias(), Poll.UID);
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -12,24 +12,16 @@
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenUtils;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.bean.Filter;
-import org.chorem.pollen.entity.FavoriteList;
-import org.chorem.pollen.entity.FavoriteListDAO;
-import org.chorem.pollen.entity.FavoriteListImpl;
-import org.chorem.pollen.entity.FavoriteParticipant;
-import org.chorem.pollen.entity.FavoriteParticipantDAO;
-import org.chorem.pollen.entity.FavoriteParticipantImpl;
import org.chorem.pollen.entity.UserAccount;
import org.chorem.pollen.entity.UserAccountDAO;
import org.chorem.pollen.entity.UserAccountImpl;
-import org.nuiton.i18n.I18n;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
import org.nuiton.topia.persistence.util.TopiaEntityBinder;
-import org.nuiton.util.beans.Binder;
/**
* ServiceUserImpl
@@ -268,7 +260,7 @@
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
TopiaQuery query = dao.createQuery();
- PollenUtils.prepareQuery(query, filter);
+ PollenQueryHelper.prepareQuery(query, filter);
Map<String, UserAccount> results = dao.findAllMappedByQuery(
query, UserAccount.LOGIN, String.class);
@@ -282,7 +274,7 @@
UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction);
TopiaQuery query = dao.createQuery();
- PollenUtils.prepareQuery(query, filter);
+ PollenQueryHelper.prepareQuery(query, filter);
int result = dao.countByQuery(query);
return result;
Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java
===================================================================
--- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -3,13 +3,12 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.pollen.EntityQueryProperty;
import org.chorem.pollen.PollenBinderHelper;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenContext;
import org.chorem.pollen.PollenDAOHelper;
import org.chorem.pollen.PollenException;
-import org.chorem.pollen.PollenUtils;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.bean.Filter;
import org.chorem.pollen.entity.Choice;
import org.chorem.pollen.entity.Poll;
@@ -71,7 +70,7 @@
*/
protected void copyPollAccount(PollAccount source, PollAccount destination) {
// Uid is the naturalId, don't copy it
- String[] excludes = new String[] {PollAccount.UID};
+ String[] excludes = new String[]{PollAccount.UID};
// Exclude properties for anonymous account
if (source.isAnonymous()) {
@@ -120,22 +119,16 @@
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
- EntityQueryProperty participantProperty =
- PollenUtils.getEntityQueryProperty(PollAccount.class, "A");
- EntityQueryProperty pollProperty =
- PollenUtils.getEntityQueryProperty(Poll.class, "P");
- EntityQueryProperty groupProperty =
- PollenUtils.getEntityQueryProperty(PollAccount.class, "G");
+ TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- TopiaQuery query = createQueryFindParticipantByPoll(
- participantProperty, groupProperty, pollProperty, poll);
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
- query.addEquals(participantProperty.name(), participant).
- addWhere(pollProperty.nameProperty(Poll.CREATOR),
- TopiaQuery.Op.NEQ,
- participant
- );
+ String pollCreatorProperty =
+ TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL, Poll.CREATOR);
+ query.addEquals(participantAlias, participant).
+ addWhere(pollCreatorProperty, TopiaQuery.Op.NEQ, participant);
+
if (log.isDebugEnabled()) {
log.debug("Query : " + query);
}
@@ -145,39 +138,6 @@
return result;
}
- protected TopiaQuery createQueryFindParticipantByPoll(EntityQueryProperty participantProperty,
- EntityQueryProperty groupProperty,
- EntityQueryProperty pollProperty,
- Poll poll) {
- TopiaQuery query = participantProperty.newQuery().
- addFrom(Poll.class, pollProperty.name()).
- addEquals(pollProperty.name(), poll);
-
- // By default the parentCollection is pollAccount in poll
- String parentCollectionProperty =
- pollProperty.nameProperty(Poll.POLL_ACCOUNT);
-
- if (poll.getPollType().isGroup()) {
- // Add the group into the query
- query.addFrom(PollAccount.class, groupProperty.name()).
- // It's not really necessary, but better to be sure
- addEquals(groupProperty.nameProperty(PollAccount.LIST),
- Boolean.TRUE).
- // Add link between the group and the poll
- addInElements(groupProperty.name(), parentCollectionProperty);
-
- // In case of group, the parentCollection is the child
- // pollAccount from the group
- parentCollectionProperty =
- groupProperty.nameProperty(PollAccount.CHILD);
- }
-
- // Add link between the participant to find and his parent
- query.addInElements(participantProperty.name(), parentCollectionProperty);
-
- return query;
- }
-
@Override
protected PollAccount executeGetNewPollAccount(UserAccount user) {
PollAccount account = new PollAccountImpl();
@@ -208,9 +168,14 @@
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
TopiaQuery query = dao.createQueryFindAllByPoll(filter);
-
- //query.addLoad(PollAccount.CHOICE_VOTE);
+ String participantChoiceProperty =
+ TopiaQuery.getProperty(PollenQueryHelper.ALIAS_POLL_PARTICIPANT,
+ PollAccount.CHOICE_VOTE,
+ Vote.CHOICE);
+
+ query.addDistinct().addFetch(participantChoiceProperty);
+
List<PollAccount> results = dao.findAllByQuery(query);
if (log.isDebugEnabled()) {
@@ -288,7 +253,7 @@
}
@Override
- protected String executeSaveVote(TopiaContext transaction, Poll poll,
+ protected PollAccount executeSaveVote(TopiaContext transaction, Poll poll,
PollAccount participant)
throws TopiaException, PollenBusinessException {
@@ -305,7 +270,7 @@
// set some votes for poll choices
// saveVote
- String result = null;
+ PollAccount result = null;
if (executeCanVote(transaction, poll, participant)) {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
@@ -340,7 +305,7 @@
dao.update(participantToSave);
- result = participantToSave.getUid();
+ result = participantToSave;
// TODO-fdesbois-2010-05-27 : execute vote counting if poll.isContinuousResults()
@@ -359,23 +324,17 @@
PollAccount participant)
throws PollenBusinessException, TopiaException {
- EntityQueryProperty participantProperty =
- PollenUtils.getEntityQueryProperty(PollAccount.class, "A");
- EntityQueryProperty pollProperty =
- PollenUtils.getEntityQueryProperty(Poll.class, "P");
- EntityQueryProperty groupProperty =
- PollenUtils.getEntityQueryProperty(PollAccount.class, "G");
+ TopiaQuery query = dao.createQueryFindAllParticipantsByPoll(poll);
- TopiaQuery query = createQueryFindParticipantByPoll(
- participantProperty, groupProperty, pollProperty, poll);
+ String participantAlias = PollenQueryHelper.ALIAS_POLL_PARTICIPANT;
- query.addEquals(participantProperty.nameProperty(PollAccount.NAME),
- participant.getName());
+ String participantNameProperty =
+ TopiaQuery.getProperty(participantAlias, PollAccount.NAME);
+ query.addEquals(participantNameProperty, participant.getName());
+
if (StringUtils.isNotEmpty(participant.getTopiaId())) {
- query.addWhere(participantProperty.namePropertyId(),
- TopiaQuery.Op.NEQ,
- participant.getTopiaId());
+ query.addWhere(participantAlias, TopiaQuery.Op.NEQ, participant);
}
if (dao.existByQuery(query)) {
Modified: trunk/pollen-business/src/main/xmi/pollen.zargo
===================================================================
(Binary files differ)
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/PollenUtilsTest.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -37,7 +37,7 @@
// TopiaQueryBuilder builder = new TopiaQueryBuilder();
// builder.setQuery(new TopiaQuery(UserAccount.class));
TopiaQuery query = new TopiaQuery(UserAccount.class);
- PollenUtils.prepareQuery(query, filter);
+ PollenQueryHelper.prepareQuery(query, filter);
log.debug("Query : " + query);
@@ -48,7 +48,7 @@
filter.setOrderBy(null);
query = new TopiaQuery(UserAccount.class);
- PollenUtils.prepareQuery(query, filter);
+ PollenQueryHelper.prepareQuery(query, filter);
log.debug("Query : " + query);
@@ -58,65 +58,65 @@
}
- @Test
- public void testCreateQueryFindElementsByCollection() throws IOException {
+// @Test
+// public void testCreateQueryFindElementsByCollection() throws IOException {
+//
+// //TopiaQueryBuilder builder = new TopiaQueryBuilder();
+//
+// Filter filter = new Filter();
+// filter.setStartIndex(1);
+// filter.setEndIndex(40);
+// filter.setOrderBy(FavoriteParticipant.NAME);
+//
+// EntityQueryProperty participantPropertyProvider =
+// PollenQueryHelper.getEntityQueryProperty(FavoriteParticipant.class, "P");
+//
+// EntityQueryProperty listPropertyProvider =
+// PollenQueryHelper.getEntityQueryProperty(FavoriteList.class, "L");
+// listPropertyProvider.setPropertyJoin(FavoriteList.FAVORITE_PARTICIPANT);
+//
+// log.info("test1 : orderBy FavoriteParticipant name");
+// TopiaQuery result = PollenQueryHelper.createQueryFindElementsByCollection(
+// participantPropertyProvider, listPropertyProvider, filter);
+//
+// log.debug("Query : " + result);
+//
+// Assert.assertEquals(result.fullQuery(),
+// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
+// + FavoriteList.class.getName() + " L" +
+// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
+// ") ORDER BY P." + FavoriteParticipant.NAME);
+//
+// log.info("test2 : orderBy not set (default to topiaCreateDate desc)");
+// filter.setOrderBy(null);
+//
+// result = PollenQueryHelper.createQueryFindElementsByCollection(
+// participantPropertyProvider, listPropertyProvider, filter);
+//
+// log.debug("Query : " + result);
+//
+// Assert.assertEquals(result.fullQuery(),
+// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
+// + FavoriteList.class.getName() + " L" +
+// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
+// ") ORDER BY P." + TopiaEntity.TOPIA_CREATE_DATE + " DESC");
+//
+// log.info("test3 : orderBy name and email desc");
+// String orderBy = FavoriteParticipant.NAME + ", " + FavoriteParticipant.EMAIL + " desc";
+// filter.setOrderBy(orderBy);
+//
+// result = PollenQueryHelper.createQueryFindElementsByCollection(
+// participantPropertyProvider, listPropertyProvider, filter);
+//
+// log.debug("Query : " + result);
+//
+// Assert.assertEquals(result.fullQuery(),
+// "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
+// + FavoriteList.class.getName() + " L" +
+// " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
+// ") ORDER BY P." + FavoriteParticipant.NAME + ", P." +
+// FavoriteParticipant.EMAIL + " desc");
+//
+// }
- //TopiaQueryBuilder builder = new TopiaQueryBuilder();
-
- Filter filter = new Filter();
- filter.setStartIndex(1);
- filter.setEndIndex(40);
- filter.setOrderBy(FavoriteParticipant.NAME);
-
- EntityQueryProperty participantPropertyProvider =
- PollenUtils.getEntityQueryProperty(FavoriteParticipant.class, "P");
-
- EntityQueryProperty listPropertyProvider =
- PollenUtils.getEntityQueryProperty(FavoriteList.class, "L");
- listPropertyProvider.setPropertyJoin(FavoriteList.FAVORITE_PARTICIPANT);
-
- log.info("test1 : orderBy FavoriteParticipant name");
- TopiaQuery result = PollenUtils.createQueryFindElementsByCollection(
- participantPropertyProvider, listPropertyProvider, filter);
-
- log.debug("Query : " + result);
-
- Assert.assertEquals(result.fullQuery(),
- "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
- + FavoriteList.class.getName() + " L" +
- " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
- ") ORDER BY P." + FavoriteParticipant.NAME);
-
- log.info("test2 : orderBy not set (default to topiaCreateDate desc)");
- filter.setOrderBy(null);
-
- result = PollenUtils.createQueryFindElementsByCollection(
- participantPropertyProvider, listPropertyProvider, filter);
-
- log.debug("Query : " + result);
-
- Assert.assertEquals(result.fullQuery(),
- "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
- + FavoriteList.class.getName() + " L" +
- " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
- ") ORDER BY P." + TopiaEntity.TOPIA_CREATE_DATE + " DESC");
-
- log.info("test3 : orderBy name and email desc");
- String orderBy = FavoriteParticipant.NAME + ", " + FavoriteParticipant.EMAIL + " desc";
- filter.setOrderBy(orderBy);
-
- result = PollenUtils.createQueryFindElementsByCollection(
- participantPropertyProvider, listPropertyProvider, filter);
-
- log.debug("Query : " + result);
-
- Assert.assertEquals(result.fullQuery(),
- "SELECT P FROM " + FavoriteParticipant.class.getName() + " P, "
- + FavoriteList.class.getName() + " L" +
- " WHERE P IN elements(L." + FavoriteList.FAVORITE_PARTICIPANT +
- ") ORDER BY P." + FavoriteParticipant.NAME + ", P." +
- FavoriteParticipant.EMAIL + " desc");
-
- }
-
}
\ No newline at end of file
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -357,7 +357,7 @@
}
@Test
- public void testFetchOnGetter() throws TopiaException, PollenBusinessException {
+ public void testFetchOnGetter() throws Exception, PollenBusinessException {
poll = createFreePoll("POLL2", user, VoteCountingType.NORMAL);
List<Choice> choices =
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServiceVoteImplTest.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -4,6 +4,7 @@
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.PollenBusinessException;
import org.chorem.pollen.PollenDAOHelper;
+import org.chorem.pollen.PollenQueryHelper;
import org.chorem.pollen.common.ChoiceType;
import org.chorem.pollen.common.VoteCountingType;
import org.chorem.pollen.entity.Choice;
@@ -21,6 +22,7 @@
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
import java.util.ArrayList;
import java.util.Collection;
@@ -38,6 +40,7 @@
private static final Log log = LogFactory.getLog(ServiceVoteImplTest.class);
+
protected UserAccount user;
@Override
@@ -49,7 +52,7 @@
@Test
public void testCanVoteForGroupPoll()
- throws PollenBusinessException, TopiaException {
+ throws Exception, TopiaException {
/** PREPARE DATA **/
@@ -86,7 +89,7 @@
}
@Test
- public void testSaveVoteForFreePoll() throws PollenBusinessException, TopiaException {
+ public void testSaveVoteForFreePoll() throws Exception, TopiaException {
/** PREPARE DATA **/
Poll pollCreated = createFreePoll("Poll", user, VoteCountingType.NORMAL);
List<Choice> choices =
@@ -120,58 +123,67 @@
log.info("test 1 : new participant with 2 votes with value to 1");
- String uid = serviceVote.saveVote(poll, participant);
+ PollAccount accountSaved = serviceVote.saveVote(poll, participant);
- TopiaContext transaction = beginTransaction();
- try {
+// TopiaContext transaction = beginTransaction();
+// try {
+//
+// PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
+//
+// PollAccount accountFound = dao.findByNaturalId(accountSaved.getUid());
+//
+// Assert.assertNotNull(accountFound);
+// Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
+// Assert.assertEquals(2, accountFound.getChoiceVote().size());
+// List<String> choicesExist = new ArrayList<String>();
+// for (Vote curr : accountFound.getChoiceVote()) {
+// Assert.assertEquals(1, curr.getVoteValue(), 0);
+// choicesExist.add(curr.getChoice().getName());
+// }
+//
+// Assert.assertTrue(choicesExist.contains("choice1"));
+// Assert.assertTrue(choicesExist.contains("choice3"));
+//
+// } finally {
+// transaction.closeContext();
+// }
- PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
+ PollAccount accountFound = loadEntity(accountSaved,
+ PollenQueryHelper.PROPERTY_CHOICE_VOTE);
- PollAccount accountFound = dao.findByNaturalId(uid);
-
- Assert.assertNotNull(accountFound);
- Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
- Assert.assertEquals(2, accountFound.getChoiceVote().size());
- List<String> choicesExist = new ArrayList<String>();
- for (Vote curr : accountFound.getChoiceVote()) {
- Assert.assertEquals(1, curr.getVoteValue(), 0);
- choicesExist.add(curr.getChoice().getName());
- }
-
- Assert.assertTrue(choicesExist.contains("choice1"));
- Assert.assertTrue(choicesExist.contains("choice3"));
-
- } finally {
- transaction.closeContext();
+ Assert.assertNotNull(accountFound);
+ Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
+ Assert.assertEquals(2, accountFound.getChoiceVote().size());
+ List<String> choicesExist = new ArrayList<String>();
+ for (Vote curr : accountFound.getChoiceVote()) {
+ Assert.assertEquals(1, curr.getVoteValue(), 0);
+ choicesExist.add(curr.getChoice().getName());
}
+ Assert.assertTrue(choicesExist.contains("choice1"));
+ Assert.assertTrue(choicesExist.contains("choice3"));
+
log.info("test 2 : anonymous participant");
participant.setAnonymous(true);
participant.setName("participant2");
- uid = serviceVote.saveVote(poll, participant);
- transaction = beginTransaction();
- try {
+ accountSaved = serviceVote.saveVote(poll, participant);
- PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
+ // Check
+ accountFound = loadEntity(accountSaved); // Need USER_ACCOUNT ?
- PollAccount accountFound = dao.findByNaturalId(uid);
- Assert.assertTrue(accountFound.isAnonymous());
- Assert.assertNull(accountFound.getName());
- Assert.assertNull(accountFound.getUserAccount());
- Assert.assertNull(accountFound.getEmail());
+ Assert.assertTrue(accountFound.isAnonymous());
+ Assert.assertNull(accountFound.getName());
+ Assert.assertNull(accountFound.getUserAccount());
+ Assert.assertNull(accountFound.getEmail());
- // Update topiaId for next test
- participant.setTopiaId(accountFound.getTopiaId());
+ // Update topiaId for next test
+ participant.setTopiaId(accountFound.getTopiaId());
- } finally {
- transaction.closeContext();
- }
-
log.info("test 3 : update participant votes");
PollAccount participantExist =
- loadEntity(participant, PollAccount.CHOICE_VOTE);
+ loadEntity(participant, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
for (Vote vote : participantExist.getChoiceVote()) {
// Update choice 1 with value 0 -> will be deleted
@@ -185,33 +197,26 @@
vote2.setVoteValue(1); // TRUE
participantExist.addChoiceVote(vote2);
- uid = serviceVote.saveVote(poll, participantExist);
+ accountSaved = serviceVote.saveVote(poll, participantExist);
- transaction = beginTransaction();
- try {
+ // Check
+ accountFound = loadEntity(accountSaved,
+ PollenQueryHelper.PROPERTY_CHOICE_VOTE);
- PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
-
- PollAccount accountFound = dao.findByNaturalId(uid);
-
- Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
- Assert.assertEquals(2, accountFound.getChoiceVote().size());
- List<String> choicesExist = new ArrayList<String>();
- for (Vote curr : accountFound.getChoiceVote()) {
- choicesExist.add(curr.getChoice().getName());
- }
-
- Assert.assertTrue(choicesExist.contains("choice2"));
- Assert.assertTrue(choicesExist.contains("choice3"));
-
- } finally {
- transaction.closeContext();
+ Assert.assertEquals(context.getCurrentDate(), accountFound.getVoteDate());
+ Assert.assertEquals(2, accountFound.getChoiceVote().size());
+ choicesExist.clear();
+ for (Vote curr : accountFound.getChoiceVote()) {
+ choicesExist.add(curr.getChoice().getName());
}
+
+ Assert.assertTrue(choicesExist.contains("choice2"));
+ Assert.assertTrue(choicesExist.contains("choice3"));
}
@Test
public void testDeleteVoteForFreePoll()
- throws TopiaException, PollenBusinessException {
+ throws Exception, PollenBusinessException {
/** PREPARE DATA */
Poll pollCreated = createFreePoll("Poll", user, VoteCountingType.NORMAL);
@@ -232,37 +237,27 @@
participant.addChoiceVote(vote);
}
- String uid = serviceVote.saveVote(pollCreated, participant);
- TopiaContext transaction = beginTransaction();
- PollAccount account = null;
- Collection<Vote> votes = null;
- try {
- PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
+ PollAccount account = serviceVote.saveVote(pollCreated, participant);
- account = dao.findByNaturalId(uid);
- votes = account.getChoiceVote();
+ account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
- } finally {
- transaction.closeContext();
- }
-
Poll poll = loadEntity(pollCreated);
/** EXEC METHOD */
serviceVote.deleteVote(poll, account);
- transaction = beginTransaction();
+ TopiaContext transaction = beginTransaction();
try {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
// Check account are correctly deleted
- account = dao.findByNaturalId(uid);
- Assert.assertNull(account);
+ PollAccount accountFound = dao.findByNaturalId(account.getUid());
+ Assert.assertNull(accountFound);
VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(transaction);
// Check all votes are not in database anymore
- for (Vote vote : votes) {
+ for (Vote vote : account.getChoiceVote()) {
Vote voteFound = voteDAO.findByTopiaId(vote.getTopiaId());
Assert.assertNull(voteFound);
}
@@ -280,7 +275,7 @@
@Test
public void testDeleteVoteForGroupPoll()
- throws TopiaException, PollenBusinessException {
+ throws Exception, PollenBusinessException {
/** PREPARE DATA */
Poll pollCreated = createGroupPoll("Poll", user,
@@ -300,39 +295,30 @@
existingParticipant.addChoiceVote(vote);
}
- String uid = serviceVote.saveVote(pollCreated, existingParticipant);
- TopiaContext transaction = beginTransaction();
- PollAccount account = null;
- Collection<Vote> votes = null;
- try {
- PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
+ PollAccount account =
+ serviceVote.saveVote(pollCreated, existingParticipant);
- account = dao.findByNaturalId(uid);
- votes = account.getChoiceVote();
+ account = loadEntity(account, PollenQueryHelper.PROPERTY_CHOICE_VOTE);
- } finally {
- transaction.closeContext();
- }
-
Poll poll = loadEntity(pollCreated);
/** EXEC METHOD */
serviceVote.deleteVote(poll, account);
- transaction = beginTransaction();
+ TopiaContext transaction = beginTransaction();
try {
PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction);
// Check account are correctly deleted
- account = dao.findByNaturalId(uid);
+ account = dao.findByNaturalId(account.getUid());
Assert.assertFalse(account.isList());
Assert.assertNotNull(account);
Assert.assertNull(account.getVoteDate());
VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(transaction);
// Check all votes are not in database anymore
- for (Vote vote : votes) {
+ for (Vote vote : account.getChoiceVote()) {
Vote voteFound = voteDAO.findByTopiaId(vote.getTopiaId());
Assert.assertNull(voteFound);
}
@@ -343,4 +329,6 @@
}
+
+
}
Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java
===================================================================
--- trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -1,5 +1,6 @@
package org.chorem.pollen.test;
+import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.PollenBusinessException;
@@ -40,6 +41,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
@@ -372,14 +374,20 @@
}
}
- public <E extends TopiaEntity> E loadEntity(E source, String... properties)
- throws TopiaException {
-
+ public <E extends TopiaEntity> E loadEntity(E source,
+ String... propertiesToLoad)
+ throws Exception {
+
TopiaContext transaction = beginTransaction();
try {
TopiaQuery query = new TopiaQuery(source.getClass());
- query.addLoad(properties).
- addEquals(TopiaEntity.TOPIA_ID, source.getTopiaId()).
+
+ query.addFetch(propertiesToLoad);
+
+ String mainIdProperty =
+ TopiaQuery.getProperty(query.getMainAlias(), TopiaEntity.TOPIA_ID);
+
+ query.addEquals(mainIdProperty, source.getTopiaId()).
setMaxResults(1);
E result = (E)query.executeToEntity(transaction, source.getClass());
@@ -388,7 +396,7 @@
return result;
}
- throw new NullPointerException("nothing to find... from " +
+ throw new NullPointerException("nothing to find... from id = " +
source.getTopiaId());
} finally {
transaction.closeContext();
Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java
===================================================================
--- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-02 20:21:08 UTC (rev 3026)
+++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-06-02 21:38:06 UTC (rev 3027)
@@ -659,8 +659,8 @@
boolean linkWithUser = linkUserConnected();
// Execute the save
- String uid = serviceVote.saveVote(getPoll(), getPollAccount());
- getPollAccount().setUid(uid);
+ pollAccount = serviceVote.saveVote(getPoll(), getPollAccount());
+ //getPollAccount().setUid(uid);
if (linkWithUser) {
voteFeedback.addInfo("Votre vote a été lié à votre compte utilisateur.");
1
0