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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs