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

Reply via email to