Author: tchemit Date: 2012-01-31 00:51:17 +0100 (Tue, 31 Jan 2012) New Revision: 3123 Url: http://chorem.org/repositories/revision/pollen/3123 Log: - add sort on user list - add poll lists method (some are not still coded) Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/UserService.java Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-01-30 20:43:30 UTC (rev 3122) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-01-30 23:51:17 UTC (rev 3123) @@ -23,16 +23,25 @@ */ package org.chorem.pollen.services.impl; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenConfiguration; +import org.chorem.pollen.PollenTechnicalException; import org.chorem.pollen.business.persistence.Poll; import org.chorem.pollen.business.persistence.PollAccount; import org.chorem.pollen.business.persistence.PollAccountImpl; +import org.chorem.pollen.business.persistence.PollDAO; import org.chorem.pollen.business.persistence.PollImpl; import org.chorem.pollen.business.persistence.UserAccount; +import org.chorem.pollen.entities.PollenDAOHelper; import org.chorem.pollen.services.PollenServiceSupport; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.util.PagerUtil; +import java.util.List; + public class PollService extends PollenServiceSupport { /** Logger. */ @@ -69,6 +78,206 @@ result.setPollId(serviceContext.createPollenUrlId()); return result; } + + public List<Poll> getPolls(PagerUtil.PagerBean pager, + String sortColumn, + boolean ascendantOrder) { + + try { + PollDAO dao = PollenDAOHelper.getPollDAO(getTransaction()); + + long records = dao.count(); + pager.setRecords((int) records); + PagerUtil.computeRecordIndexesAndPagesNumber(pager); + TopiaQuery query = dao.createQuery("e"); + addFilterToQuery(query, pager, sortColumn, ascendantOrder); + + List<Poll> result = dao.findAllByQuery(query); + return result; + } catch (TopiaException e) { + throw new PollenTechnicalException(e); + } + } + + public List<Poll> getCreatedPolls(PagerUtil.PagerBean pager, + String sortColumn, + boolean ascendantOrder, + UserAccount user) { + + try { + PollDAO dao = PollenDAOHelper.getPollDAO(getTransaction()); + + TopiaQuery countQuery = dao.createQuery("e"); + countQuery.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + long records = dao.countByQuery(countQuery); + pager.setRecords((int) records); + + PagerUtil.computeRecordIndexesAndPagesNumber(pager); + TopiaQuery query = dao.createQuery("e"); + addFilterToQuery(query, pager, sortColumn, ascendantOrder); + query.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + + List<Poll> result = dao.findAllByQuery(query); + return result; + } catch (TopiaException e) { + throw new PollenTechnicalException(e); + } + } + + public List<Poll> getInvitedPolls(PagerUtil.PagerBean pager, + String sortColumn, + boolean ascendantOrder, + UserAccount user) { + + try { + PollDAO dao = PollenDAOHelper.getPollDAO(getTransaction()); + + TopiaQuery countQuery = dao.createQuery("e"); + countQuery.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + long records = dao.countByQuery(countQuery); + pager.setRecords((int) records); + + PagerUtil.computeRecordIndexesAndPagesNumber(pager); + TopiaQuery query = dao.createQuery("e"); + addFilterToQuery(query, pager, sortColumn, ascendantOrder); + query.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + + List<Poll> result = dao.findAllByQuery(query); + return result; + } catch (TopiaException e) { + throw new PollenTechnicalException(e); + } + } + + public List<Poll> getParticipatedPolls(PagerUtil.PagerBean pager, + String sortColumn, + boolean ascendantOrder, + UserAccount user) { + + try { + PollDAO dao = PollenDAOHelper.getPollDAO(getTransaction()); + + TopiaQuery countQuery = dao.createQuery("e"); + countQuery.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + long records = dao.countByQuery(countQuery); + pager.setRecords((int) records); + + PagerUtil.computeRecordIndexesAndPagesNumber(pager); + TopiaQuery query = dao.createQuery("e"); + addFilterToQuery(query, pager, sortColumn, ascendantOrder); + query.addWhere("e." + Poll.PROPERTY_CREATOR + "." + PollAccount.PROPERTY_USER_ACCOUNT, TopiaQuery.Op.EQ, user); + + List<Poll> result = dao.findAllByQuery(query); + return result; + } catch (TopiaException e) { + throw new PollenTechnicalException(e); + } + } + + + /* + @Override + public List<PollDTO> findParticipatedPolls(String userId) { + TopiaContext transaction = null; + List<PollDTO> results = null; + UserAccountDAO userDAO = null; + try { + transaction = rootContext.beginTransaction(); + + userDAO = PollenModelDAOHelper.getUserAccountDAO(transaction); + UserAccount user = userDAO.findByTopiaId(userId); + + Set<Poll> pollEntities = new HashSet<Poll>(); + for (PollAccount pollAccount : user.getPollAccount()) { + for (Vote vote : pollAccount.getVote()) { + pollEntities.add(vote.getPoll()); + } + } + + converter.setTransaction(transaction); + results = converter + .createPollDTOs(new ArrayList<Poll>(pollEntities)); + + transaction.commitTransaction(); + + if (log.isDebugEnabled()) { + log.debug("Entities found: " + + ((results == null) ? "null" : results.size())); + } + + return results; + } catch (Exception e) { + ContextUtil.doCatch(e, transaction); + return null; + } finally { + ContextUtil.doFinally(transaction); + } + } + + @Override + public List<PollDTO> findInvitedPolls(String userId) { + TopiaContext transaction = null; + List<PollDTO> results = null; + UserAccountDAO userDAO = null; + try { + transaction = rootContext.beginTransaction(); + + userDAO = PollenModelDAOHelper.getUserAccountDAO(transaction); + UserAccount user = userDAO.findByTopiaId(userId); + + pollDAO = PollenModelDAOHelper.getPollDAO(transaction); + List<Poll> polls = pollDAO.findAll(); + + Set<Poll> pollEntities = new HashSet<Poll>(); + for (Poll poll : polls) { + for (VotingList votingList : poll.getVotingList()) { + for (PersonToList personToList : votingList + .getPollAccountPersonToList()) { + if (!personToList.getHasVoted()) { + PollAccount pollAccount = personToList + .getPollAccount(); + if (pollAccount != null + && pollAccount.getEmail() != null + && pollAccount.getEmail().equals( + user.getEmail())) { + pollEntities.add(poll); + } + } + } + } + } + + converter.setTransaction(transaction); + results = converter + .createPollDTOs(new ArrayList<Poll>(pollEntities)); + + transaction.commitTransaction(); + + if (log.isDebugEnabled()) { + log.debug("Entities found: " + + ((results == null) ? "null" : results.size())); + } + + return results; + } catch (Exception e) { + ContextUtil.doCatch(e, transaction); + return null; + } finally { + ContextUtil.doFinally(transaction); + } + } + */ + private void addFilterToQuery(TopiaQuery query, PagerUtil.PagerBean pager, String sortColumn, boolean ascendantOrder) { + query.setLimit(pager.getRecordStartIndex(), pager.getRecordEndIndex() - 1); + if (StringUtils.isNotEmpty(sortColumn)) { + if (ascendantOrder) { + query.addOrder(sortColumn); + } else { + query.addOrderDesc(sortColumn); + } + } + } + // // /** // * Build a new Poll instance based on existing {@code poll} (copy) Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/UserService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/UserService.java 2012-01-30 20:43:30 UTC (rev 3122) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/UserService.java 2012-01-30 23:51:17 UTC (rev 3123) @@ -201,7 +201,9 @@ } } - public List<UserAccount> getUsers(PagerUtil.PagerBean pager) { + public List<UserAccount> getUsers(PagerUtil.PagerBean pager, + String sortColumn, + boolean ascendantOrder) { try { UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(getTransaction()); @@ -212,6 +214,14 @@ PagerUtil.computeRecordIndexesAndPagesNumber(pager); TopiaQuery query = dao.createQuery("e"); query.setLimit(pager.getRecordStartIndex(), pager.getRecordEndIndex() - 1); + + if (StringUtils.isNotEmpty(sortColumn)) { + if (ascendantOrder) { + query.addOrder(sortColumn); + } else { + query.addOrderDesc(sortColumn); + } + } List<UserAccount> result = dao.findAllByQuery(query); return result; } catch (TopiaException e) {