Update of /var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms In directory james.mmbase.org:/tmp/cvs-serv5196
Modified Files: Tag: b1_5 SubscriptioManagementAction.java Log Message: CMSC-1094, All newsletters with their subscriptions list should be ordered,add convertToOderedMap and pseudoRanking See also: http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms See also: http://www.mmbase.org/jira/browse/CMSC-1094 Index: SubscriptioManagementAction.java =================================================================== RCS file: /var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms/SubscriptioManagementAction.java,v retrieving revision 1.13 retrieving revision 1.13.2.1 diff -u -b -r1.13 -r1.13.2.1 --- SubscriptioManagementAction.java 24 Sep 2008 09:56:25 -0000 1.13 +++ SubscriptioManagementAction.java 22 Oct 2008 05:58:42 -0000 1.13.2.1 @@ -1,6 +1,8 @@ package com.finalist.newsletter.forms; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -19,6 +21,7 @@ import org.apache.struts.action.ActionMapping; import org.springframework.web.struts.DispatchActionSupport; +import com.finalist.cmsc.paging.PagingStatusHolder; import com.finalist.cmsc.paging.PagingUtils; import com.finalist.cmsc.services.community.person.PersonService; import com.finalist.newsletter.domain.Newsletter; @@ -26,11 +29,10 @@ import com.finalist.newsletter.services.NewsletterService; import com.finalist.newsletter.services.NewsletterSubscriptionServices; import com.finalist.newsletter.services.SubscriptionHibernateService; +import com.finalist.newsletter.util.ComparisonUtil; /** - * * @author Lisa - * */ public class SubscriptioManagementAction extends DispatchActionSupport { @@ -68,7 +70,8 @@ protected void onInit() { super.onInit(); newsletterService = (NewsletterService) getWebApplicationContext().getBean("newsletterServices"); - subscriptionServices = (NewsletterSubscriptionServices) getWebApplicationContext().getBean("subscriptionServices"); + subscriptionServices = (NewsletterSubscriptionServices) getWebApplicationContext() + .getBean("subscriptionServices"); personServices = (PersonService) getWebApplicationContext().getBean("personService"); publicationService = (NewsletterPublicationService) getWebApplicationContext().getBean("publicationService"); subscriptionHService = (SubscriptionHibernateService) getWebApplicationContext().getBean("subscriptionHService"); @@ -94,7 +97,6 @@ } /** - * * @param mapping * @param form * @param request @@ -109,11 +111,11 @@ PagingUtils.initStatusHolder(request); String title = request.getParameter(PARAM_TITLE); String subscriber = request.getParameter(PARAM_SUBSCRIBER); - int resultCount = newsletterService.getNewsletters(subscriber, title, false).size(); - List<Newsletter> newsletters = newsletterService.getNewsletters(subscriber, title, true); - List<Map<Object, Object>> results = convertToMap(newsletters); - + List<Newsletter> newsletters; + List<Map<Object, Object>> results; + newsletters = newsletterService.getNewsletters(subscriber, title, true); + results = convertToOderedMap(newsletters); request.setAttribute(RESULTS, results); request.setAttribute(RESULTCOUNT, resultCount); return mapping.findForward(FORWARD_OVERVIEW); @@ -303,4 +305,33 @@ } return results; } + + private List<Map<Object, Object>> convertToOderedMap(List<Newsletter> newsletters) { + List<Map<Object, Object>> results = convertToMap(newsletters); + PagingStatusHolder pagingHolder = PagingUtils.getStatusHolder(); + String order = pagingHolder.getSort(); + if (!"title".equals(order) && null != order) { + results = pseudoRanking(results, pagingHolder, order); + } + return results; + } + + private List<Map<Object, Object>> pseudoRanking(List<Map<Object, Object>> results, PagingStatusHolder pagingHolder, + String order) { + String oderby = pagingHolder.getDir(); + int offset = pagingHolder.getOffset(); + int size = pagingHolder.getPageSize(); + ComparisonUtil comparator = new ComparisonUtil(); + comparator.setFields_user(new String[] { order }); + Collections.sort(results, comparator); + if ("desc".equals(oderby)) { + Collections.reverse(results); + } + if (size + offset < results.size()) { + results = results.subList(offset, size + offset); + } else { + results = results.subList(offset, results.size()); + } + return results; + } } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs