Author: tchemit Date: 2012-06-25 19:27:47 +0200 (Mon, 25 Jun 2012) New Revision: 3545 Url: http://chorem.org/repositories/revision/pollen/3545 Log: replace TopiaQuery and simple hql code (to add tests of DAO) Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/CommentDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonListDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonToListDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/UserAccountDAOImplTest.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java Removed: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOTest.java Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/CommentDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonListDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/UserAccountDAOImpl.java trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/AbstractDAOTest.java Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/CommentDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/CommentDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/CommentDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -23,8 +23,8 @@ package org.chorem.pollen.business.persistence; import com.google.common.base.Preconditions; +import org.chorem.pollen.PollenIOUtil; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; import java.util.List; @@ -37,17 +37,25 @@ Preconditions.checkNotNull(pager); Preconditions.checkNotNull(pollId); - TopiaQuery countQuery = createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("p." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId). - addWhere("e in elements(p." + Poll.PROPERTY_COMMENT + ")"); - long records = countByQuery(countQuery); - pager.setRecords((int) records); + String countHql = "SELECT COUNT(e) FROM CommentImpl e, PollImpl p WHERE p.pollId = :pollId AND e IN ELEMENTS(p.comment)"; + PollenIOUtil.computeAndAddRecordsToPager(getContext(), countHql, pager, + "pollId", pollId); - TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, - pager); - List<E> result = findAllByQuery(query); + String hql = "SELECT e FROM CommentImpl e, PollImpl p WHERE p.pollId = :pollId AND e IN ELEMENTS(p.comment)"; + List<E> result = PollenIOUtil.findByPager(getContext(), hql, pager, + "pollId", pollId); return result; +// TopiaQuery countQuery = createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("p." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId). +// addWhere("e in elements(p." + Poll.PROPERTY_COMMENT + ")"); +// long records = countByQuery(countQuery); +// pager.setRecords((int) records); +// +// TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, +// pager); +// List<E> result = findAllByQuery(query); +// return result; } @@ -55,13 +63,16 @@ Preconditions.checkNotNull(pollId); - TopiaQuery query = createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("p." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId). - addWhere("e in elements(p." + Poll.PROPERTY_COMMENT + ")"); - query.addOrderDesc(Comment.PROPERTY_POST_DATE); - List<E> result = findAllByQuery(query); + String hql = "SELECT e FROM CommentImpl e, PollImpl p WHERE p.pollId = :pollId AND e IN ELEMENTS(p.comment)"; + List<E> result = getContext().findAll(hql, "pollId", pollId); return result; +// TopiaQuery query = createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("p." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId). +// addWhere("e in elements(p." + Poll.PROPERTY_COMMENT + ")"); +// query.addOrderDesc(Comment.PROPERTY_POST_DATE); +// List<E> result = findAllByQuery(query); +// return result; } Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonListDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonListDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonListDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -24,8 +24,8 @@ import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; +import org.chorem.pollen.PollenIOUtil; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; import java.util.List; @@ -36,31 +36,42 @@ TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException { Preconditions.checkNotNull(user); + Preconditions.checkNotNull(pager); - TopiaQuery countQuery = createQuery("e"); - countQuery.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); - long records = countByQuery(countQuery); + String countHql = "SELECT COUNT(*) FROM PersonListImpl WHERE owner = :owner"; + PollenIOUtil.computeAndAddRecordsToPager(getContext(), countHql, pager, + "owner", user); - pager.setRecords((int) records); - - TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, pager); - - List<E> result = findAllByQuery(query); + String hql = "FROM PersonListImpl e WHERE e.owner = :owner"; + List<E> result = PollenIOUtil.findByPager(getContext(), hql, pager, + "owner", user); return result; +// TopiaQuery countQuery = createQuery("e"); +// countQuery.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); +// long records = countByQuery(countQuery); +// +// pager.setRecords((int) records); +// +// TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, pager); +// +// List<E> result = findAllByQuery(query); +// return result; } public List<E> getFavoriteLists(UserAccount user) throws TopiaException { Preconditions.checkNotNull(user); - - TopiaQuery query = createQuery("e"); - query.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); - List<E> result = findAllByQuery(query); + String hql = "FROM PersonListImpl WHERE owner = :owner"; + List<E> result = getContext().findAll(hql, "owner", user); return result; - +// TopiaQuery query = createQuery("e"); +// query.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); +// List<E> result = findAllByQuery(query); +// return result; } - public boolean isPersonListExist(UserAccount user, String name) throws TopiaException { + public boolean isPersonListExist(UserAccount user, + String name) throws TopiaException { Preconditions.checkNotNull(user); Preconditions.checkNotNull(name); @@ -68,16 +79,18 @@ // can't accept favorite list without name Preconditions.checkArgument(StringUtils.isNotEmpty(name)); - // check list does not already exists - TopiaQuery query = createQuery("e"); - - query.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); - query.addWhere("e." + PersonList.PROPERTY_NAME, TopiaQuery.Op.EQ, name); - - boolean exist = existByQuery(query); - return exist; + String hql = "SELECT COUNT(*) FROM PersonListImpl WHERE owner = :owner AND name = :name"; + long count = (Long) getContext().findUnique(hql, "owner", user, "name", name); + return count > 0; +// TopiaQuery query = createQuery("e"); +// +// query.addWhere("e." + PersonList.PROPERTY_OWNER, TopiaQuery.Op.EQ, user); +// query.addWhere("e." + PersonList.PROPERTY_NAME, TopiaQuery.Op.EQ, name); +// +// boolean exist = existByQuery(query); +// return exist; } } //PersonListDAOImpl<E extends PersonList> Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -22,35 +22,29 @@ */ package org.chorem.pollen.business.persistence; -import java.util.List; - /** * Created: 28/03/12 * * @author fdesbois <desbois@codelutin.com> - * $Id$ + * @author tchemit <cheit@codelutin.com> + * @since 1.3 */ public class PersonToListDAOImpl<E extends PersonToList> extends PersonToListDAOAbstract<E> { public PersonToList findByPollAndAccount(Poll poll, PollAccount account) { -// TopiaQuery query = createQuery("e") -// .addFrom(Poll.class, "p") -// .addFrom(VotingList.class, "v") -// .addEquals("p", poll) -// .addInElements("v", "p." + Poll.PROPERTY_VOTING_LIST) -// .addWhere("e." + PersonToList.PROPERTY_VOTING_LIST + " = v." + VotingList.PROPERTY_POLL_ACCOUNT_PERSON_TO_LIST) -// .addEquals("e." + PersonToList.PROPERTY_POLL_ACCOUNT, account); + PersonToList result = null; + if (!poll.isVotingListEmpty()) { + for (VotingList votingList : poll.getVotingList()) { + result = votingList.getPollAccountPersonToList(account); + if (result != null) { - PersonToList result; - List<VotingList> votingLists = poll.getVotingList(); - for (VotingList votingList : votingLists) { - result = votingList.getPollAccountPersonToList(account); - if (result != null) { - return result; + // personToList found + break; + } } } - return null; + return result; } - + } Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -34,17 +34,15 @@ public E getRestrictedPollAccount(String pollId, String accountId) throws TopiaException { -// List<PersonToList> tmp = transaction.find( -// "FROM " + PersonToList.class.getName() + -// " WHERE pollAccount.accountId = :accountUId" + -// " AND votingList.poll.pollId = :pollUId", -// "accountUId", accountId, -// "pollUId", pollId); + Preconditions.checkNotNull(pollId); + Preconditions.checkNotNull(accountId); TopiaQuery query = new TopiaQuery(PersonToList.class, "p"). + addFrom(Poll.class, "poll"). setSelect("p." + PersonToList.PROPERTY_POLL_ACCOUNT). + addWhere("poll." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId). addWhere("p." + PersonToList.PROPERTY_POLL_ACCOUNT + "." + PollAccount.PROPERTY_ACCOUNT_ID, TopiaQuery.Op.EQ, accountId). - addWhere("p." + PersonToList.PROPERTY_VOTING_LIST + "." + VotingList.PROPERTY_POLL + "." + Poll.PROPERTY_POLL_ID, TopiaQuery.Op.EQ, pollId); + addInElements("p", "poll." + Poll.PROPERTY_VOTING_LIST + "." + VotingList.PROPERTY_POLL_ACCOUNT_PERSON_TO_LIST); E result = findByQuery(query); return result; } @@ -55,7 +53,6 @@ Preconditions.checkNotNull(favoriteList); Preconditions.checkNotNull(pager); - int records = favoriteList.sizePollAccount(); pager.setRecords(records); @@ -89,13 +86,13 @@ boolean result = existByQuery(query); return result; } - + public PollAccount findByPollVoteUser(Poll poll, UserAccount user) throws TopiaException { - + Preconditions.checkNotNull(poll); Preconditions.checkNotNull(user); - + TopiaQuery query = createQuery("e") .addFrom(Poll.class, "p") .addFrom(Vote.class, "v") Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -26,109 +26,135 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenFunctions; -import org.chorem.pollen.entities.PollenDAOHelper; +import org.chorem.pollen.PollenIOUtil; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; +import java.util.Date; import java.util.List; import java.util.Map; public class PollDAOImpl<E extends Poll> extends PollDAOAbstract<E> { - /** Logger. */ - private static final Log log = LogFactory.getLog(PollDAOImpl.class); + public List<E> getPolls( + TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException { - public List<E> getPolls(TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException { - Preconditions.checkNotNull(pager); - long records = count(); - pager.setRecords((int) records); - - TopiaQuery query = createQuery("e"); - TopiaFilterPagerUtil.addPagerToQuery(query, pager); - - List<E> result = findAllByQuery(query); + String countHql = "SELECT COUNT(*) FROM PollImpl"; + PollenIOUtil.computeAndAddRecordsToPager(getContext(), countHql, pager); + String hql = "FROM PollImpl"; + List<E> result = PollenIOUtil.findByPager(getContext(), hql, pager); return result; +// long records = count(); +// pager.setRecords((int) records); +// +// TopiaQuery query = createQuery("e"); +// TopiaFilterPagerUtil.addPagerToQuery(query, pager); +// +// List<E> result = findAllByQuery(query); +// return result; } - public List<E> getCreatedPolls(TopiaFilterPagerUtil.FilterPagerBean pager, UserAccount user) throws TopiaException { Preconditions.checkNotNull(pager); Preconditions.checkNotNull(user); - TopiaQuery countQuery = createQuery("e"); - countQuery.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); - long records = countByQuery(countQuery); - pager.setRecords((int) records); + String countHql = "SELECT COUNT(*) FROM PollImpl " + + "WHERE creator.userAccount = :user"; + PollenIOUtil.computeAndAddRecordsToPager(getContext(), countHql, pager, + "user", user); + String hql = "FROM PollImpl WHERE creator.userAccount = :user"; + List<E> result = PollenIOUtil.findByPager(getContext(), hql, pager, + "user", user); + return result; - TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, pager); - - List<E> result = findAllByQuery(query); - return result; +// TopiaQuery countQuery = createQuery("e"); +// countQuery.addWhere("e." + Poll.PROPERTY_CREATOR + "." + +// PollAccount.PROPERTY_USER_ACCOUNT, +// TopiaQuery.Op.EQ, user); +// long records = countByQuery(countQuery); +// pager.setRecords((int) records); +// +// TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery(countQuery, pager); +// +// List<E> result = findAllByQuery(query); +// return result; } public List<Pair<Poll, PollAccount>> getInvitedPolls( TopiaFilterPagerUtil.FilterPagerBean pager, - UserAccount userToUse) throws TopiaException { + UserAccount user) throws TopiaException { Preconditions.checkNotNull(pager); - Preconditions.checkNotNull(userToUse); + Preconditions.checkNotNull(user); - String email = userToUse.getEmail(); - - TopiaQuery query = createQuery("p"). - setSelect("p", "l." + PersonToList.PROPERTY_POLL_ACCOUNT). - addLeftJoin("p." + Poll.PROPERTY_VOTING_LIST, "v", false). - addLeftJoin("v." + VotingList.PROPERTY_POLL_ACCOUNT_PERSON_TO_LIST, "l", false). - addEquals("l." + PersonToList.PROPERTY_POLL_ACCOUNT - + "." + PollAccount.PROPERTY_EMAIL, email); - + String hql = "SELECT p, l.pollAccount FROM PollImpl p, " + + "LEFT JOIN p.votingList v, " + + "LEFT JOIN v.pollAccountPersonToList l " + + "WHERE l.pollAccount.email = :email"; List<Pair<Poll, PollAccount>> result = findAllWithPollAccounts( - query, pager); + hql, pager, "email", user.getEmail()); return result; + +// String email = user.getEmail(); +// +// TopiaQuery query = createQuery("p"). +// setSelect("p", "l." + PersonToList.PROPERTY_POLL_ACCOUNT). +// addLeftJoin("p." + Poll.PROPERTY_VOTING_LIST, "v", false). +// addLeftJoin("v." + VotingList.PROPERTY_POLL_ACCOUNT_PERSON_TO_LIST, "l", false). +// addEquals("l." + PersonToList.PROPERTY_POLL_ACCOUNT +// + "." + PollAccount.PROPERTY_EMAIL, email); +// +// List<Pair<Poll, PollAccount>> result = findAllWithPollAccounts( +// query, pager); +// return result; } public List<Pair<Poll, PollAccount>> getParticipatedPolls( TopiaFilterPagerUtil.FilterPagerBean pager, - UserAccount userToUse) throws TopiaException { + UserAccount user) throws TopiaException { Preconditions.checkNotNull(pager); - Preconditions.checkNotNull(userToUse); + Preconditions.checkNotNull(user); - VoteDAO voteDao = PollenDAOHelper.getVoteDAO(context); - - TopiaQuery query = voteDao.createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("e in elements(p." + Poll.PROPERTY_VOTE + ")"). - setSelect("p", "e." + Vote.PROPERTY_POLL_ACCOUNT). - addWhere("e." + Vote.PROPERTY_POLL_ACCOUNT + "." + - PollAccount.PROPERTY_USER_ACCOUNT, - TopiaQuery.Op.EQ, userToUse); - + String hql = "SELECT p, v.pollAccount FROM VoteImpl v, PollImpl p " + + "WHERE v IN ELEMENTS(p.vote) " + + "AND v.pollAccount.userAccount = :user"; List<Pair<Poll, PollAccount>> result = findAllWithPollAccounts( - query, pager); + hql, pager, "user", user); return result; + +// VoteDAO voteDao = PollenDAOHelper.getVoteDAO(context); +// +// TopiaQuery query = voteDao.createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("e in elements(p." + Poll.PROPERTY_VOTE + ")"). +// setSelect("p", "e." + Vote.PROPERTY_POLL_ACCOUNT). +// addWhere("e." + Vote.PROPERTY_POLL_ACCOUNT + "." + +// PollAccount.PROPERTY_USER_ACCOUNT, +// TopiaQuery.Op.EQ, user); +// +// List<Pair<Poll, PollAccount>> result = findAllWithPollAccounts( +// query, pager); +// return result; } - protected List<Pair<Poll, PollAccount>> findAllWithPollAccounts(TopiaQuery query, - TopiaFilterPagerUtil.FilterPagerBean pager) + protected List<Pair<Poll, PollAccount>> findAllWithPollAccounts( + String hql, + TopiaFilterPagerUtil.FilterPagerBean pager, Object... params) throws TopiaException { - List<Object[]> queryResults = getContext().findByQuery(query); + List<Object[]> queryResults = getContext().findAll(hql, params); Map<Poll, PollAccount> mapResult = Maps.newLinkedHashMap(); for (Object[] row : queryResults) { Poll poll = (Poll) row[0]; PollAccount pollAccount = (PollAccount) row[1]; mapResult.put(poll, pollAccount); } - long records = mapResult.size(); pager.setRecords((int) records); TopiaFilterPagerUtil.computeRecordIndexesAndPagesNumber(pager); @@ -140,40 +166,55 @@ return result; } - public List<E> getRunningPolls(boolean withEndDate) throws TopiaException { +// protected List<Pair<Poll, PollAccount>> findAllWithPollAccounts( +// TopiaQuery query, +// TopiaFilterPagerUtil.FilterPagerBean pager) +// throws TopiaException { +// +// List<Object[]> queryResults = getContext().findByQuery(query); +// Map<Poll, PollAccount> mapResult = Maps.newLinkedHashMap(); +// for (Object[] row : queryResults) { +// Poll poll = (Poll) row[0]; +// PollAccount pollAccount = (PollAccount) row[1]; +// mapResult.put(poll, pollAccount); +// } +// +// long records = mapResult.size(); +// pager.setRecords((int) records); +// TopiaFilterPagerUtil.computeRecordIndexesAndPagesNumber(pager); +// List<Map.Entry<Poll, PollAccount>> entries = +// Lists.newLinkedList(mapResult.entrySet()); +// List<Pair<Poll, PollAccount>> result = +// Lists.transform(TopiaFilterPagerUtil.getPageFromList(entries, pager), +// PollenFunctions.MAP_ENTRY_TO_PAIR_FUNCTION); +// return result; +// } - List<E> results; - TopiaQuery query; + public List<E> getRunningPolls(Date currentTime) throws TopiaException { - if (withEndDate) { - - query = createQuery("poll"). - addWhere("poll.endDate is not null and poll.endDate > current_timestamp()"). - addWhere("poll.beginDate is null or poll.beginDate < current_timestamp()"); - -// results = transaction -// .find("from " -// + Poll.class.getName() -// + " as poll where (poll.endDate is not null and poll.endDate > current_timestamp())" -// + " and (poll.beginDate is null or poll.beginDate < current_timestamp())"); - } else { - query = createQuery("poll"). - addWhere("poll.endDate is null or poll.endDate > current_timestamp()"). - addWhere("poll.beginDate is null or poll.beginDate < current_timestamp()"); - -// results = transaction -// .find("from " -// + Poll.class.getName() -// + " as poll where (poll.endDate is null or poll.endDate > current_timestamp())" -// + " and (poll.beginDate is null or poll.beginDate < current_timestamp())"); - } - - results = findAllByQuery(query); - - if (log.isDebugEnabled()) { - log.debug("Entities found: " - + ((results == null) ? "null" : results.size())); - } + String hql = "FROM PollImpl WHERE (endDate IS NULL OR endDate > :currentTime) AND (beginDate IS NULL OR beginDate < :currentTime)"; + List<E> results = getContext().findAll(hql, "currentTime", currentTime); return results; +// List<E> results; +// TopiaQuery query; +// +// if (withEndDate) { +// +// query = createQuery("poll"). +// addWhere("poll.endDate is not null and poll.endDate > current_timestamp()"). +// addWhere("poll.beginDate is null or poll.beginDate < current_timestamp()"); +// } else { +// query = createQuery("poll"). +// addWhere("poll.endDate is null or poll.endDate > current_timestamp()"). +// addWhere("poll.beginDate is null or poll.beginDate < current_timestamp()"); +// } +// +// results = findAllByQuery(query); +// +// if (log.isDebugEnabled()) { +// log.debug("Entities found: " +// + ((results == null) ? "null" : results.size())); +// } +// return results; } } //PollDAOImpl<E extends Poll> Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/UserAccountDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/UserAccountDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/UserAccountDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -24,8 +24,8 @@ import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; +import org.chorem.pollen.PollenIOUtil; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; import java.util.List; @@ -39,28 +39,40 @@ // In case of email change, check if an other user has not already // the new email // FIXME-fdesbois-20100510 : replace by using id directly - TopiaQuery query = createQuery(). - addWhere(UserAccount.PROPERTY_LOGIN, - TopiaQuery.Op.NEQ, user.getLogin()); - query.addEquals(UserAccount.PROPERTY_EMAIL, - StringUtils.lowerCase(user.getEmail())); - - // existing user found - boolean result = existByQuery(query); - return result; + String hql = "SELECT COUNT(*) FROM UserAccountImpl WHERE login = :login AND email = :email"; + long count = (Long) getContext().findUnique( + hql, + "login", user.getLogin(), + "email", StringUtils.lowerCase(user.getEmail())); + return count > 0; +// TopiaQuery query = createQuery(). +// addWhere(UserAccount.PROPERTY_LOGIN, +// TopiaQuery.Op.NEQ, user.getLogin()). +// addEquals(UserAccount.PROPERTY_EMAIL, +// StringUtils.lowerCase(user.getEmail())); +// +// // existing user found +// boolean result = existByQuery(query); +// return result; } public List<E> getUsers(TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException { Preconditions.checkNotNull(pager); - long records = count(); - pager.setRecords((int) records); + String countHql = "SELECT COUNT(*) FROM UserAccountImpl"; + PollenIOUtil.computeAndAddRecordsToPager(getContext(), countHql, pager); - TopiaQuery query = createQuery("e"); - TopiaFilterPagerUtil.addPagerToQuery(query, pager); - - List<E> result = findAllByQuery(query); + String hql = "FROM UserAccountImpl"; + List<E> result = PollenIOUtil.findByPager(getContext(), hql, pager); return result; +// long records = count(); +// pager.setRecords((int) records); +// +// TopiaQuery query = createQuery("e"); +// TopiaFilterPagerUtil.addPagerToQuery(query, pager); +// +// List<E> result = findAllByQuery(query); +// return result; } } //UserAccountDAOImpl<E extends UserAccount> Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -24,19 +24,14 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.PollenIOUtil; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; import java.util.List; public class VoteDAOImpl<E extends Vote> extends VoteDAOAbstract<E> { - /** Logger. */ - private static final Log log = LogFactory.getLog(VoteDAOImpl.class); - public List<E> getAllVotes(Poll poll) throws TopiaException { Preconditions.checkNotNull(poll); @@ -48,25 +43,15 @@ results = Lists.newArrayList(); } else { - // FIXME-FD20100309 : change model to suppress link from poll to vote - // It's not necessary to have votes when retrieving the poll, this - // method do this job only when it's needed + String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE p = :p AND e IN ELEMENTS(p.vote) ORDER BY e.topiaCreateDate DESC"; + results = getContext().findAll(hql, "p", poll); -// if (log.isDebugEnabled()) { -// log.debug("Load votes for poll with uid = " + poll.getPollId()); -// log.debug("LIMIT : startIndex = " + startIndex + " _ " + -// "endIndex = " + endIndex); -// } - - // FIXME : refactor this to use TopiaQuery from ToPIA 2.3 - // Order the results by creation date (the last vote done will be - // at the end of the list) - TopiaQuery query = createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("p", TopiaQuery.Op.EQ, poll). - addWhere("e in elements (p." + Poll.PROPERTY_VOTE + ")"). - addOrder("e.topiaCreateDate DESC"); - results = findAllByQuery(query); +// TopiaQuery query = createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("p", TopiaQuery.Op.EQ, poll). +// addInElements("e", "p." + Poll.PROPERTY_VOTE). +// addOrder("e.topiaCreateDate DESC"); +// results = findAllByQuery(query); } return results; } @@ -85,26 +70,29 @@ results = Lists.newArrayList(); } else { - // FIXME-FD20100309 : change model to suppress link from poll to vote - // It's not necessary to have votes when retrieving the poll, this - // method do this job only when it's needed + String countHql = "SELECT COUNT(e) FROM VoteImpl e, PollImpl p WHERE p = :p AND e IN ELEMENTS(p.vote)"; -// if (log.isDebugEnabled()) { -// log.debug("Load votes for poll with uid = " + poll.getPollId()); -// log.debug("LIMIT : startIndex = " + startIndex + " _ " + -// "endIndex = " + endIndex); -// } + PollenIOUtil.computeAndAddRecordsToPager(getContext(), + countHql, pager, + "p", poll); - // FIXME : refactor this to use TopiaQuery from ToPIA 2.3 - // Order the results by creation date (the last vote done will be - // at the end of the list) - TopiaQuery query = createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("p", TopiaQuery.Op.EQ, poll). - addWhere("e in elements (p." + Poll.PROPERTY_VOTE + ")"). - addOrder("e.topiaCreateDate"); - TopiaFilterPagerUtil.addPagerToQuery(query, pager); - results = findAllByQuery(query); + String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE p = :p AND e IN ELEMENTS(p.vote) ORDER BY e.topiaCreateDate DESC"; + + + results = PollenIOUtil.findByPager(getContext(), hql, pager, + "p", poll); + +// TopiaQuery countQuery = createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("p", TopiaQuery.Op.EQ, poll). +// addInElements("e", "p." + Poll.PROPERTY_VOTE). +// addOrder("e.topiaCreateDate"); +// long records = countByQuery(countQuery); +// pager.setRecords((int) records); +// +// TopiaQuery query = TopiaFilterPagerUtil.addPagerToQuery( +// countQuery, pager); +// results = findAllByQuery(query); } return results; } @@ -112,24 +100,28 @@ public boolean hasAlreadyVoted(Poll poll, String votingId) throws TopiaException { // Test using a count(*) on votes - TopiaQuery query = createQuery("e"). - addFrom(Poll.class, "p"). - addWhere("p", TopiaQuery.Op.EQ, poll). - addWhere("e in elements(p." + Poll.PROPERTY_VOTE + ")"). - addWhere("e.pollAccount.votingId", TopiaQuery.Op.EQ, votingId). - addOrder("e.topiaCreateDate"); - boolean result = existByQuery(query); - return result; + String hql = "SELECT COUNT(*) FROM VoteImpl e, PollImpl p WHERE p = :p AND e in elements(p.vote) AND e.pollAccount.votingId = :v"; + Long nb = (Long) getContext().findUnique(hql, "p", poll, "v", votingId); + return nb == 1; +// TopiaQuery query = createQuery("e"). +// addFrom(Poll.class, "p"). +// addWhere("p", TopiaQuery.Op.EQ, poll). +// addInElements("e", "p." + Poll.PROPERTY_VOTE). +// addWhere("e." + Vote.PROPERTY_POLL_ACCOUNT + "." + PollAccount.PROPERTY_VOTING_ID, TopiaQuery.Op.EQ, votingId); +// boolean result = existByQuery(query); +// return result; } public Vote findByAccountId(String accountId) throws TopiaException { - String accountIdProperty = - TopiaQuery.getProperty("e", Vote.PROPERTY_POLL_ACCOUNT, PollAccount.PROPERTY_ACCOUNT_ID); - - TopiaQuery query = createQuery("e").addEquals(accountIdProperty, accountId); - Vote result = findByQuery(query); + String hql = "FROM VoteImpl e WHERE e.pollAccount.accountId = :a"; + Vote result = (Vote) getContext().findUnique(hql, "a", accountId); return result; +// String accountIdProperty = +// TopiaQuery.getProperty("e", Vote.PROPERTY_POLL_ACCOUNT, PollAccount.PROPERTY_ACCOUNT_ID); +// TopiaQuery query = createQuery("e").addEquals(accountIdProperty, accountId); +// Vote result = findByQuery(query); +// return result; } Modified: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/AbstractDAOTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/AbstractDAOTest.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/AbstractDAOTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -25,7 +25,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenIOUtil; -import org.chorem.pollen.PollenConfiguration; import org.chorem.pollen.PollenTopiaRootContextFactory; import org.junit.Rule; import org.junit.rules.TestWatcher; @@ -36,7 +35,6 @@ import org.nuiton.topia.framework.TopiaContextImplementor; import java.io.File; -import java.util.Properties; /** * Base test for daos. @@ -49,7 +47,7 @@ /** Logger. */ private static final Log log = LogFactory.getLog(AbstractDAOTest.class); - public static final String CONFIGURATION_PATH = "pollen-fake.properties"; + public static final String CONFIGURATION_PATH = "db.properties"; public static final long TIMESTAMP = System.nanoTime(); @@ -64,10 +62,6 @@ return db.beginTransaction(); } - public PollenConfiguration getConfiguration() { - return getDb().getConfiguration(); - } - /** * A new database created for each test. * @@ -80,12 +74,6 @@ private TopiaContext rootCtxt; - private PollenConfiguration configuration; - - public PollenConfiguration getConfiguration() { - return configuration; - } - @Override protected void starting(Description description) { @@ -99,10 +87,10 @@ testBasedir, "/" + CONFIGURATION_PATH ); - - Properties props = new Properties(); - props.put("testDirectory", testBasedir.getAbsolutePath()); - configuration = new PollenConfiguration(CONFIGURATION_PATH, props); + if (log.isInfoEnabled()) { + log.info("Starts db " + + ((TopiaContextImplementor) rootCtxt).getConfig().get(TopiaContextFactory.CONFIG_URL)); + } } @Override @@ -111,9 +99,9 @@ TopiaContextImplementor rootContext = ((TopiaContextImplementor) rootCtxt).getRootContext(); - if (log.isInfoEnabled()) { - log.info("release database " + - rootContext.getConfig().get(TopiaContextFactory.CONFIG_URL)); + if (log.isDebugEnabled()) { + log.debug("release db " + + rootContext.getConfig().get(TopiaContextFactory.CONFIG_URL)); } try { if (rootContext != null && !rootContext.isClosed()) { Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/CommentDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/CommentDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/CommentDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,104 @@ +package org.chorem.pollen.business.persistence; + +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.persistence.TopiaFilterPagerUtil; + +import java.util.List; + +/** + * Tests the {@link CommentDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class CommentDAOImplTest extends AbstractDAOTest { + + @Test + public void getComments() throws Exception { + + TopiaContext tx = beginTransaction(); + CommentDAO dao = PollenDAOHelper.getCommentDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + String pollId1 = "pollId1"; + Poll poll = pollDAO.create(Poll.PROPERTY_POLL_ID, pollId1); + for (int i = 0; i < 9; i++) { + poll.addComment(dao.create(Comment.PROPERTY_TEXT, "comment" + i)); + } + tx.commitTransaction(); + + List<Comment> actual; + TopiaFilterPagerUtil.FilterPagerBean pager; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Comment.PROPERTY_TEXT); + pager.setSortAscendant(true); + actual = dao.getComments(pager, pollId1); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("comment" + i, actual.get(i).getText()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(2); + pager.setSortColumn(Comment.PROPERTY_TEXT); + pager.setSortAscendant(true); + actual = dao.getComments(pager, pollId1); + Assert.assertNotNull(actual); + Assert.assertEquals(4, actual.size()); + for (int i = 0; i < 4; i++) { + Assert.assertEquals("comment" + (5 + i), actual.get(i).getText()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Comment.PROPERTY_TEXT); + pager.setSortAscendant(false); + actual = dao.getComments(pager, pollId1); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("comment" + (8 - i), actual.get(i).getText()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Comment.PROPERTY_TEXT); + pager.setSortAscendant(false); + actual = dao.getComments(pager, pollId1 + "-"); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void getAllComments() throws Exception { + + + TopiaContext tx = beginTransaction(); + CommentDAO dao = PollenDAOHelper.getCommentDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + String pollId1 = "pollId1"; + Poll poll = pollDAO.create(Poll.PROPERTY_POLL_ID, pollId1); + for (int i = 0; i < 9; i++) { + + Comment comment = dao.create(); + poll.addComment(comment); + } + + tx.commitTransaction(); + + List<Comment> actual; + actual = dao.getAllComments(pollId1); + Assert.assertNotNull(actual); + Assert.assertEquals(9, actual.size()); + + actual = dao.getAllComments(pollId1 + "-"); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } +} Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonListDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonListDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonListDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,140 @@ +package org.chorem.pollen.business.persistence; + +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.persistence.TopiaFilterPagerUtil; + +import java.util.List; + +/** + * Tests the {@link PersonListDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class PersonListDAOImplTest extends AbstractDAOTest { + + @Test + public void getAllFavoriteLists() throws Exception { + + TopiaContext tx = beginTransaction(); + PersonListDAO dao = PollenDAOHelper.getPersonListDAO(tx); + UserAccountDAO userDao = PollenDAOHelper.getUserAccountDAO(tx); + + UserAccount userAccount1 = userDao.create(UserAccount.PROPERTY_LOGIN, "login1"); + UserAccount userAccount2 = userDao.create(UserAccount.PROPERTY_LOGIN, "login2"); + + for (int i = 0; i < 9; i++) { + + PersonList personList = dao.create(PersonList.PROPERTY_NAME, "name" + i); + userAccount1.addFavoriteList(personList); + } + + tx.commitTransaction(); + + List<PersonList> actual; + actual = dao.getFavoriteLists(userAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(9, actual.size()); + + actual = dao.getFavoriteLists(userAccount2); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void getFavoriteLists() throws Exception { + + TopiaContext tx = beginTransaction(); + PersonListDAO dao = PollenDAOHelper.getPersonListDAO(tx); + UserAccountDAO userDao = PollenDAOHelper.getUserAccountDAO(tx); + + UserAccount userAccount1 = userDao.create(UserAccount.PROPERTY_LOGIN, "login1"); + UserAccount userAccount2 = userDao.create(UserAccount.PROPERTY_LOGIN, "login2"); + + for (int i = 0; i < 9; i++) { + + PersonList personList = dao.create(PersonList.PROPERTY_NAME, "name" + i); + userAccount1.addFavoriteList(personList); + } + + tx.commitTransaction(); + + List<PersonList> actual; + TopiaFilterPagerUtil.FilterPagerBean pager; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(PersonList.PROPERTY_NAME); + pager.setSortAscendant(true); + + actual = dao.getFavoriteLists(userAccount1, pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("name" + i, actual.get(i).getName()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(2); + pager.setSortColumn(PersonList.PROPERTY_NAME); + pager.setSortAscendant(true); + actual = dao.getFavoriteLists(userAccount1, pager); + Assert.assertNotNull(actual); + Assert.assertEquals(4, actual.size()); + for (int i = 0; i < 4; i++) { + Assert.assertEquals("name" + (5 + i), actual.get(i).getName()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(PersonList.PROPERTY_NAME); + pager.setSortAscendant(false); + actual = dao.getFavoriteLists(userAccount1, pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("name" + (8 - i), actual.get(i).getName()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(PersonList.PROPERTY_NAME); + pager.setSortAscendant(false); + + actual = dao.getFavoriteLists(userAccount2, pager); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void isPersonListExist() throws Exception { + TopiaContext tx = beginTransaction(); + PersonListDAO dao = PollenDAOHelper.getPersonListDAO(tx); + UserAccountDAO userDao = PollenDAOHelper.getUserAccountDAO(tx); + + UserAccount userAccount1 = userDao.create(UserAccount.PROPERTY_LOGIN, "login1"); + UserAccount userAccount2 = userDao.create(UserAccount.PROPERTY_LOGIN, "login2"); + + for (int i = 0; i < 9; i++) { + + PersonList personList = dao.create(PersonList.PROPERTY_NAME, "name" + i); + userAccount1.addFavoriteList(personList); + } + + tx.commitTransaction(); + + boolean actual; + actual = dao.isPersonListExist(userAccount1, "name1"); + Assert.assertTrue(actual); + + actual = dao.isPersonListExist(userAccount1, "name-"); + Assert.assertFalse(actual); + + actual = dao.isPersonListExist(userAccount2, "name1"); + Assert.assertFalse(actual); + } +} Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonToListDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonToListDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PersonToListDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,79 @@ +package org.chorem.pollen.business.persistence; + +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; + +/** + * Tests the {@link PersonToListDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class PersonToListDAOImplTest extends AbstractDAOTest { + + @Test + public void findByPollAndAccount() throws Exception { + + TopiaContext tx = beginTransaction(); + PersonToListDAO dao = PollenDAOHelper.getPersonToListDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + VotingListDAO votingListDAO = PollenDAOHelper.getVotingListDAO(tx); + + Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); + Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2"); + Poll poll3 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId3"); + + PollAccount pollAccount1 = pollAccountDAO.create(PollAccount.PROPERTY_VOTING_ID, "votingId1"); + PollAccount pollAccount2 = pollAccountDAO.create(PollAccount.PROPERTY_VOTING_ID, "votingId2"); + PollAccount pollAccount3 = pollAccountDAO.create(PollAccount.PROPERTY_VOTING_ID, "votingId3"); + + VotingList votingList1 = votingListDAO.create(VotingList.PROPERTY_NAME, "votingList1"); + poll1.addVotingList(votingList1); + VotingList votingList2 = votingListDAO.create(VotingList.PROPERTY_NAME, "votingList2"); + poll2.addVotingList(votingList2); + + PersonToList personToList1 = dao.create(PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount1); + votingList1.addPollAccountPersonToList(personToList1); + + PersonToList personToList2 = dao.create(PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount2); + votingList1.addPollAccountPersonToList(personToList2); + + PersonToList personToList3 = dao.create(PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount3); + votingList2.addPollAccountPersonToList(personToList3); + + PersonToList actual; + + actual = dao.findByPollAndAccount(poll1, pollAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(personToList1, actual); + + actual = dao.findByPollAndAccount(poll1, pollAccount2); + Assert.assertNotNull(actual); + Assert.assertEquals(personToList2, actual); + + actual = dao.findByPollAndAccount(poll1, pollAccount3); + Assert.assertNull(actual); + + actual = dao.findByPollAndAccount(poll2, pollAccount1); + Assert.assertNull(actual); + + actual = dao.findByPollAndAccount(poll2, pollAccount2); + Assert.assertNull(actual); + + actual = dao.findByPollAndAccount(poll2, pollAccount3); + Assert.assertNotNull(actual); + Assert.assertEquals(personToList3, actual); + + actual = dao.findByPollAndAccount(poll3, pollAccount1); + Assert.assertNull(actual); + + actual = dao.findByPollAndAccount(poll3, pollAccount2); + Assert.assertNull(actual); + + actual = dao.findByPollAndAccount(poll3, pollAccount3); + Assert.assertNull(actual); + } +} Copied: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOImplTest.java (from rev 3544, trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOTest.java) =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,151 @@ +/* + * #%L + * Pollen :: Persistence + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.pollen.business.persistence; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; + +/** + * Test the {@link PollAccountDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.3 + */ +public class PollAccountDAOImplTest extends AbstractDAOTest { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(PollAccountDAOImplTest.class); + + @Test + public void getRestrictedPollAccount() throws Exception { + TopiaContext tx = beginTransaction(); + + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + VotingListDAO votingListDAO = PollenDAOHelper.getVotingListDAO(tx); + PersonToListDAO personToListDAO = PollenDAOHelper.getPersonToListDAO(tx); + + String pollId = "pollId"; + String accountId = "accountId"; + String accountId2 = "accountId2"; + String accountId3 = "accountId3"; + + PollAccount pollAccount = pollAccountDAO.create( + PollAccount.PROPERTY_ACCOUNT_ID, accountId); + + PollAccount pollAccount2 = pollAccountDAO.create( + PollAccount.PROPERTY_ACCOUNT_ID, accountId2); + PollAccount pollAccount3 = pollAccountDAO.create( + PollAccount.PROPERTY_ACCOUNT_ID, accountId3); + + Poll poll = pollDAO.create(Poll.PROPERTY_POLL_ID, pollId); + + VotingList votingList = votingListDAO.create(); + poll.addVotingList(votingList); + VotingList votingList2 = votingListDAO.create(); + poll.addVotingList(votingList2); + + PersonToList personToList = personToListDAO.create( + PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount, + PersonToList.PROPERTY_VOTING_LIST, votingList + ); + + PersonToList personToList2 = personToListDAO.create( + PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount2, + PersonToList.PROPERTY_VOTING_LIST, votingList + ); + PersonToList personToList3 = personToListDAO.create( + PersonToList.PROPERTY_POLL_ACCOUNT, pollAccount3, + PersonToList.PROPERTY_VOTING_LIST, votingList2 + ); + + pollAccount.addVotingListPersonToList(personToList); + pollAccount2.addVotingListPersonToList(personToList2); + pollAccount3.addVotingListPersonToList(personToList3); + + PollAccount restrictedPollAccount = + pollAccountDAO.getRestrictedPollAccount(pollId, accountId); + + Assert.assertNotNull(restrictedPollAccount); + Assert.assertEquals(accountId, restrictedPollAccount.getAccountId()); + Assert.assertNotNull(restrictedPollAccount.getVotingListPersonToList()); + Assert.assertTrue(restrictedPollAccount.getVotingListPersonToList().contains(personToList)); + + PollAccount restrictedPollAccount2 = + pollAccountDAO.getRestrictedPollAccount(pollId, accountId2); + + Assert.assertNotNull(restrictedPollAccount2); + Assert.assertEquals(accountId2, restrictedPollAccount2.getAccountId()); + Assert.assertNotNull(restrictedPollAccount2.getVotingListPersonToList()); + Assert.assertFalse(restrictedPollAccount2.getVotingListPersonToList().contains(personToList)); + Assert.assertTrue(restrictedPollAccount2.getVotingListPersonToList().contains(personToList2)); + + PollAccount restrictedPollAccount3 = + pollAccountDAO.getRestrictedPollAccount(pollId, accountId3); + + Assert.assertNotNull(restrictedPollAccount3); + Assert.assertEquals(accountId3, restrictedPollAccount3.getAccountId()); + Assert.assertNotNull(restrictedPollAccount3.getVotingListPersonToList()); + Assert.assertFalse(restrictedPollAccount3.getVotingListPersonToList().contains(personToList)); + Assert.assertTrue(restrictedPollAccount3.getVotingListPersonToList().contains(personToList3)); + + PollAccount restrictedPollAccount4 = + pollAccountDAO.getRestrictedPollAccount(pollId, System.nanoTime() + "--"); + + Assert.assertNull(restrictedPollAccount4); + } + + @Test + public void getFavoriteListUsers() throws TopiaException { + if (log.isInfoEnabled()) { + log.info("TODO"); + } + } + + @Test + public void isPollAccountExists() throws TopiaException { + if (log.isInfoEnabled()) { + log.info("TODO"); + } + } + + @Test + public void findByPollVoteUser() throws TopiaException { + if (log.isInfoEnabled()) { + log.info("TODO"); + } + } + + @Test + public void existsByPollVoteAccountId() throws TopiaException { + if (log.isInfoEnabled()) { + log.info("TODO"); + } + } +} Property changes on: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOImplTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOTest.java 2012-06-20 14:08:36 UTC (rev 3544) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollAccountDAOTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -1,89 +0,0 @@ -/* - * #%L - * Pollen :: Persistence - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2012 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.pollen.business.persistence; - -import org.chorem.pollen.entities.PollenDAOHelper; -import org.junit.Assert; -import org.junit.Test; -import org.nuiton.topia.TopiaContext; - -/** - * Test the {@link PollAccountDAO}. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.3 - */ -public class PollAccountDAOTest extends AbstractDAOTest { - - @Test - public void getRestrictedPollAccount() throws Exception { - TopiaContext tx = beginTransaction(); - - PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); - - String pollId = "pollId"; - String accountId = "accountId"; - - PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); - PollAccount pollAccount = pollAccountDAO.newInstance(); - pollAccount.setAccountId(accountId); - pollAccount = pollAccountDAO.create(pollAccount); - - Poll poll = pollDAO.newInstance(); - poll.setPollId(pollId); - poll = pollDAO.create(poll); - - - VotingListDAO votingListDAO = PollenDAOHelper.getVotingListDAO(tx); - - VotingList votingList = votingListDAO.newInstance(); - - votingList.setPoll(poll); - votingList = votingListDAO.create(votingList); - - - PersonToListDAO personToListDAO = PollenDAOHelper.getPersonToListDAO(tx); - - PersonToList personToList = personToListDAO.newInstance(); - personToList.setPollAccount(pollAccount); - personToList.setVotingList(votingList); - personToList.setPollAccount(pollAccount); - - personToList = personToListDAO.create(personToList); - - poll.addVotingList(votingList); - pollAccount.addVotingListPersonToList(personToList); - - pollDAO.update(poll); - pollAccountDAO.update(pollAccount); - - - PollAccount restrictedPollAccount = - pollAccountDAO.getRestrictedPollAccount(pollId, accountId); - - Assert.assertNotNull(restrictedPollAccount); - Assert.assertEquals(accountId, restrictedPollAccount.getAccountId()); - Assert.assertNotNull(restrictedPollAccount.getVotingListPersonToList()); - Assert.assertTrue(restrictedPollAccount.getVotingListPersonToList().contains(personToList)); - } -} Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/PollDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,272 @@ +package org.chorem.pollen.business.persistence; + +import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.persistence.TopiaFilterPagerUtil; +import org.nuiton.util.DateUtil; + +import java.util.Date; +import java.util.List; + +/** + * Tests the {@link PollDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class PollDAOImplTest extends AbstractDAOTest { + + /** Logger. */ + private static final Log log = LogFactory.getLog(PollDAOImplTest.class); + + @Test + public void getPolls() throws Exception { + + TopiaContext tx = beginTransaction(); + PollDAO dao = PollenDAOHelper.getPollDAO(tx); + + for (int i = 0; i < 9; i++) { + dao.create(Poll.PROPERTY_POLL_ID, "pollId" + i, + Poll.PROPERTY_TITLE, "title" + i); + } + + tx.commitTransaction(); + + List<Poll> actual; + TopiaFilterPagerUtil.FilterPagerBean pager; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(true); + actual = dao.getPolls(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("title" + i, actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(2); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(true); + actual = dao.getPolls(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(4, actual.size()); + for (int i = 0; i < 4; i++) { + Assert.assertEquals("title" + (5 + i), actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(false); + actual = dao.getPolls(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("title" + (8 - i), actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(3); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(false); + actual = dao.getPolls(pager); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + + } + + @Test + public void getCreatedPolls() throws Exception { + + TopiaContext tx = beginTransaction(); + PollDAO dao = PollenDAOHelper.getPollDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + UserAccountDAO userAccountDAO = PollenDAOHelper.getUserAccountDAO(tx); + UserAccount userAccount1 = userAccountDAO.create(UserAccount.PROPERTY_LOGIN, "login1"); + UserAccount userAccount2 = userAccountDAO.create(UserAccount.PROPERTY_LOGIN, "login2"); + + for (int i = 0; i < 9; i++) { + PollAccount creator = pollAccountDAO.create( + PollAccount.PROPERTY_USER_ACCOUNT, userAccount1); + dao.create(Poll.PROPERTY_POLL_ID, "pollId" + i, + Poll.PROPERTY_TITLE, "title" + i, + Poll.PROPERTY_CREATOR, creator); + } + + tx.commitTransaction(); + + List<Poll> actual; + TopiaFilterPagerUtil.FilterPagerBean pager; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(true); + actual = dao.getCreatedPolls(pager, userAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("title" + i, actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(2); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(true); + actual = dao.getCreatedPolls(pager, userAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(4, actual.size()); + for (int i = 0; i < 4; i++) { + Assert.assertEquals("title" + (5 + i), actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(false); + actual = dao.getCreatedPolls(pager, userAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("title" + (8 - i), actual.get(i).getTitle()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(Poll.PROPERTY_TITLE); + pager.setSortAscendant(false); + actual = dao.getCreatedPolls(pager, userAccount2); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + + } + + @Test + public void getInvitedPolls() throws Exception { + + TopiaContext tx = beginTransaction(); + PollDAO dao = PollenDAOHelper.getPollDAO(tx); + if (log.isInfoEnabled()) { + log.info("TODO"); + } + } + + @Test + public void getParticipatedPolls() throws Exception { + + TopiaContext tx = beginTransaction(); + PollDAO dao = PollenDAOHelper.getPollDAO(tx); + VoteDAO voteDao = PollenDAOHelper.getVoteDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + UserAccountDAO userAccountDAO = PollenDAOHelper.getUserAccountDAO(tx); + + Poll poll0 = dao.create(Poll.PROPERTY_POLL_ID, "pollId0"); + Poll poll1 = dao.create(Poll.PROPERTY_POLL_ID, "pollId1"); + + UserAccount userAccount1 = userAccountDAO.create(UserAccount.PROPERTY_LOGIN, "login1"); + UserAccount userAccount2 = userAccountDAO.create(UserAccount.PROPERTY_LOGIN, "login2"); + PollAccount pollAccount1 = pollAccountDAO.create(PollAccount.PROPERTY_ACCOUNT_ID, "accountId1", PollAccount.PROPERTY_USER_ACCOUNT, userAccount1); + PollAccount pollAccount2 = pollAccountDAO.create(PollAccount.PROPERTY_ACCOUNT_ID, "accountId2", PollAccount.PROPERTY_USER_ACCOUNT, userAccount2); + + Vote vote1 = voteDao.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount1); + poll0.addVote(vote1); + + Vote vote2 = voteDao.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount1); + poll1.addVote(vote2); + + + tx.commitTransaction(); + + TopiaFilterPagerUtil.FilterPagerBean pager; + List<Pair<Poll, PollAccount>> actual; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + + actual = dao.getParticipatedPolls(pager, userAccount1); + Assert.assertNotNull(actual); + Assert.assertEquals(2, actual.size()); + Assert.assertEquals(poll0, actual.get(0).getLeft()); + Assert.assertEquals(pollAccount1, actual.get(0).getRight()); + Assert.assertEquals(poll1, actual.get(1).getLeft()); + Assert.assertEquals(pollAccount1, actual.get(1).getRight()); + + actual = dao.getParticipatedPolls(pager, userAccount2); + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void getRunningPolls() throws Exception { + + TopiaContext tx = beginTransaction(); + PollDAO dao = PollenDAOHelper.getPollDAO(tx); + + Date now = DateUtil.createDate(5, 6, 2010); + Date lastYearNow = DateUtil.createDate(5, 6, 2009); + Date nextMonthNow = DateUtil.createDate(5, 7, 2010); + Date nextYearNow = DateUtil.createDate(5, 6, 2011); + + Poll poll0 = dao.create(Poll.PROPERTY_POLL_ID, "pollId0"); + Poll poll1 = dao.create(Poll.PROPERTY_POLL_ID, "pollId1", Poll.PROPERTY_BEGIN_DATE, DateUtil.createDate(1, 5, 2010)); + Poll poll2 = dao.create(Poll.PROPERTY_POLL_ID, "pollId2", Poll.PROPERTY_BEGIN_DATE, DateUtil.createDate(1, 7, 2010)); + Poll poll3 = dao.create(Poll.PROPERTY_POLL_ID, "pollId3", + Poll.PROPERTY_BEGIN_DATE, DateUtil.createDate(1, 5, 2010), + Poll.PROPERTY_END_DATE, DateUtil.createDate(1, 10, 2010) + ); + Poll poll4 = dao.create(Poll.PROPERTY_POLL_ID, "pollId4", + Poll.PROPERTY_BEGIN_DATE, DateUtil.createDate(1, 5, 2010), + Poll.PROPERTY_END_DATE, DateUtil.createDate(1, 7, 2010) + ); + Poll poll5 = dao.create(Poll.PROPERTY_POLL_ID, "pollId5", + Poll.PROPERTY_END_DATE, DateUtil.createDate(1, 8, 2010) + ); + + tx.commitTransaction(); + + List<Poll> actual; + + actual = dao.getRunningPolls(now); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + Assert.assertEquals(poll0, actual.get(0)); + Assert.assertEquals(poll1, actual.get(1)); + Assert.assertEquals(poll3, actual.get(2)); + Assert.assertEquals(poll4, actual.get(3)); + Assert.assertEquals(poll5, actual.get(4)); + + + actual = dao.getRunningPolls(lastYearNow); + Assert.assertNotNull(actual); + Assert.assertEquals(2, actual.size()); + Assert.assertEquals(poll0, actual.get(0)); + Assert.assertEquals(poll5, actual.get(1)); + + actual = dao.getRunningPolls(nextMonthNow); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + Assert.assertEquals(poll0, actual.get(0)); + Assert.assertEquals(poll1, actual.get(1)); + Assert.assertEquals(poll2, actual.get(2)); + Assert.assertEquals(poll3, actual.get(3)); + Assert.assertEquals(poll5, actual.get(4)); + + actual = dao.getRunningPolls(nextYearNow); + Assert.assertNotNull(actual); + Assert.assertEquals(3, actual.size()); + Assert.assertEquals(poll0, actual.get(0)); + Assert.assertEquals(poll1, actual.get(1)); + Assert.assertEquals(poll2, actual.get(2)); + } +} Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/UserAccountDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/UserAccountDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/UserAccountDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,110 @@ +package org.chorem.pollen.business.persistence; + +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.persistence.TopiaFilterPagerUtil; + +import java.util.List; + +/** + * Tests the {@link UserAccountDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class UserAccountDAOImplTest extends AbstractDAOTest { + + @Test + public void isUserExist() throws Exception { + TopiaContext tx = beginTransaction(); + + UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(tx); + + for (int i = 0; i < 20; i++) { + dao.create(UserAccount.PROPERTY_LOGIN, "login" + i, UserAccount.PROPERTY_EMAIL, "email" + i); + } + + tx.commitTransaction(); + + boolean actual; + UserAccount userAccount; + userAccount = dao.newInstance(); + userAccount.setLogin("login1"); + userAccount.setEmail("email1"); + actual = dao.isUserExist(userAccount); + Assert.assertTrue(actual); + + userAccount = dao.newInstance(); + userAccount.setLogin("login1"); + userAccount.setEmail("Email1"); + actual = dao.isUserExist(userAccount); + Assert.assertTrue(actual); + + userAccount = dao.newInstance(); + userAccount.setLogin("Login1"); + userAccount.setEmail("email1"); + actual = dao.isUserExist(userAccount); + Assert.assertFalse(actual); + + userAccount = dao.newInstance(); + userAccount.setLogin("login1"); + userAccount.setEmail("email111"); + actual = dao.isUserExist(userAccount); + Assert.assertFalse(actual); + } + + @Test + public void getUsers() throws Exception { + + TopiaContext tx = beginTransaction(); + + UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(tx); + + for (int i = 0; i < 9; i++) { + dao.create(UserAccount.PROPERTY_LOGIN, "login" + i, UserAccount.PROPERTY_EMAIL, "email" + i); + } + + tx.commitTransaction(); + + TopiaFilterPagerUtil.FilterPagerBean pager; + List<UserAccount> actual; + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(UserAccount.PROPERTY_LOGIN); + pager.setSortAscendant(true); + actual = dao.getUsers(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("login" + i, actual.get(i).getLogin()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setPageIndex(2); + pager.setSortColumn(UserAccount.PROPERTY_LOGIN); + pager.setSortAscendant(true); + actual = dao.getUsers(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(4, actual.size()); + for (int i = 0; i < 4; i++) { + Assert.assertEquals("login" + (5 + i), actual.get(i).getLogin()); + } + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(5); + pager.setSortColumn(UserAccount.PROPERTY_LOGIN); + pager.setSortAscendant(false); + actual = dao.getUsers(pager); + Assert.assertNotNull(actual); + Assert.assertEquals(5, actual.size()); + for (int i = 0; i < 5; i++) { + Assert.assertEquals("login" + (8 - i), actual.get(i).getLogin()); + } + + + } +} Added: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java (rev 0) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java 2012-06-25 17:27:47 UTC (rev 3545) @@ -0,0 +1,191 @@ +package org.chorem.pollen.business.persistence; + +import org.chorem.pollen.entities.PollenDAOHelper; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.persistence.TopiaFilterPagerUtil; +import org.nuiton.util.DateUtil; + +import java.util.List; + +/** + * Tests the {@link VoteDAOImpl}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.5 + */ +public class VoteDAOImplTest extends AbstractDAOTest { + + @Test + public void getAllVotes() throws Exception { + + TopiaContext tx = beginTransaction(); + + VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + + Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); + Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", + Poll.PROPERTY_ANONYMOUS, true); + + Vote vote1 = voteDAO.create(); + vote1.setTopiaCreateDate(DateUtil.createDate(0, 0, 0, 1, 1, 2010)); + poll1.addVote(vote1); + Vote vote2 = voteDAO.create(); + vote2.setTopiaCreateDate(DateUtil.createDate(10, 0, 0, 1, 1, 2010)); + poll1.addVote(vote2); + + Vote vote3 = voteDAO.create(); + poll2.addVote(vote3); + + tx.commitTransaction(); + + List<Vote> actual; + + actual = voteDAO.getAllVotes(poll1); + + Assert.assertNotNull(actual); + Assert.assertEquals(2, actual.size()); + Assert.assertEquals(vote2, actual.get(0)); + Assert.assertEquals(vote1, actual.get(1)); + Assert.assertFalse(actual.contains(vote3)); + + actual = voteDAO.getAllVotes(poll2); + + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void getVotesByPoll() throws Exception { + + + TopiaContext tx = beginTransaction(); + + VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + + Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); + Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", + Poll.PROPERTY_ANONYMOUS, true); + + Vote vote1 = voteDAO.create(); + vote1.setTopiaCreateDate(DateUtil.createDate(0, 0, 0, 1, 1, 2010)); + poll1.addVote(vote1); + Vote vote2 = voteDAO.create(); + vote2.setTopiaCreateDate(DateUtil.createDate(10, 0, 0, 1, 1, 2010)); + poll1.addVote(vote2); + + Vote vote3 = voteDAO.create(); + poll2.addVote(vote3); + + tx.commitTransaction(); + + List<Vote> actual; + TopiaFilterPagerUtil.FilterPagerBean pager = + TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(10); + actual = voteDAO.getVotesByPoll(poll1, pager); + + Assert.assertNotNull(actual); + Assert.assertEquals(2, actual.size()); + Assert.assertEquals(vote2, actual.get(0)); + Assert.assertEquals(vote1, actual.get(1)); + Assert.assertFalse(actual.contains(vote3)); + + pager = TopiaFilterPagerUtil.newFilterPagerBean(); + pager.setPageSize(10); + actual = voteDAO.getVotesByPoll(poll2, pager); + + Assert.assertNotNull(actual); + Assert.assertTrue(actual.isEmpty()); + } + + @Test + public void hasAlreadyVoted() throws Exception { + + + TopiaContext tx = beginTransaction(); + + VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(tx); + PollDAO pollDAO = PollenDAOHelper.getPollDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + + Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); + Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", + Poll.PROPERTY_ANONYMOUS, true); + + String votingId1 = "votingId1"; + String votingId2 = "votingId2"; + + PollAccount pollAccount1 = pollAccountDAO.create( + PollAccount.PROPERTY_VOTING_ID, votingId1); + + PollAccount pollAccount2 = pollAccountDAO.create( + PollAccount.PROPERTY_VOTING_ID, votingId2); + Vote vote1 = voteDAO.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount1); + poll1.addVote(vote1); + Vote vote2 = voteDAO.create(); + poll1.addVote(vote2); + Vote vote3 = voteDAO.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount2); + poll2.addVote(vote3); + + tx.commitTransaction(); + + boolean actual; + actual = voteDAO.hasAlreadyVoted(poll1, votingId1); + Assert.assertTrue(actual); + actual = voteDAO.hasAlreadyVoted(poll2, votingId1); + Assert.assertFalse(actual); + + actual = voteDAO.hasAlreadyVoted(poll1, votingId2); + Assert.assertFalse(actual); + actual = voteDAO.hasAlreadyVoted(poll2, votingId2); + Assert.assertTrue(actual); + } + + @Test + public void findByAccountId() throws Exception { + + TopiaContext tx = beginTransaction(); + + VoteDAO voteDAO = PollenDAOHelper.getVoteDAO(tx); + PollAccountDAO pollAccountDAO = PollenDAOHelper.getPollAccountDAO(tx); + + String accountId1 = "accountId1"; + PollAccount pollAccount1 = pollAccountDAO.create(PollAccount.PROPERTY_ACCOUNT_ID, accountId1); + String accountId2 = "accountId2"; + PollAccount pollAccount2 = pollAccountDAO.create(PollAccount.PROPERTY_ACCOUNT_ID, accountId2); + + tx.commitTransaction(); + + Vote actual; + actual = voteDAO.findByAccountId(accountId1); + Assert.assertNull(actual); + actual = voteDAO.findByAccountId(accountId2); + Assert.assertNull(actual); + + // attach accountId1 to vote1 + + Vote vote1 = voteDAO.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount1); + + tx.commitTransaction(); + + actual = voteDAO.findByAccountId(accountId1); + Assert.assertNotNull(actual); + Assert.assertEquals(vote1, actual); + actual = voteDAO.findByAccountId(accountId2); + Assert.assertNull(actual); + + // attach accountId2 to vote2 + Vote vote2 = voteDAO.create(Vote.PROPERTY_POLL_ACCOUNT, pollAccount2); + tx.commitTransaction(); + + actual = voteDAO.findByAccountId(accountId2); + Assert.assertNotNull(actual); + Assert.assertEquals(vote2, actual); + + + } +}