Update of 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util
In directory james.mmbase.org:/tmp/cvs-serv5409

Modified Files:
      Tag: b1_5
        NewsletterBounceUtil.java 
Log Message:
CMSC-1095, Newsletter Bounces list should be ordered,add newsletterSort when 
bounceManager can't sort


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util
See also: http://www.mmbase.org/jira/browse/CMSC-1095


Index: NewsletterBounceUtil.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util/NewsletterBounceUtil.java,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -b -r1.3 -r1.3.2.1
--- NewsletterBounceUtil.java   4 Aug 2008 03:09:21 -0000       1.3
+++ NewsletterBounceUtil.java   22 Oct 2008 06:06:37 -0000      1.3.2.1
@@ -1,7 +1,7 @@
 package com.finalist.newsletter.util;
 
 import java.util.ArrayList;
-import java.util.Date;
+import java.util.Collections;
 import java.util.List;
 
 import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
@@ -13,6 +13,7 @@
 import org.mmbase.bridge.NodeList;
 import org.mmbase.bridge.NodeManager;
 import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.util.Queries;
 import org.mmbase.bridge.util.SearchUtil;
 
 import com.finalist.newsletter.domain.NewsletterBounce;
@@ -22,58 +23,80 @@
    
    private static Log log = LogFactory.getLog(NewsletterBounceUtil.class);
 
-   public static List<NewsletterBounce> getBounceRecord(int offset,int 
pageSize){
+   public static List<NewsletterBounce> getBounceRecord(int offset, int 
pageSize, String order, String direction) {
       List<NewsletterBounce> bounces = new ArrayList<NewsletterBounce>();
       Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
       NodeManager bounceManager = cloud.getNodeManager("newsletterbounce");
       NodeQuery query = bounceManager.createQuery();
+      if (null == order || bounceManager.hasField(order)) {
       query.setMaxNumber(pageSize);
       query.setOffset(offset);
+         Queries.addSortOrders(query, order, direction);
+      }
       NodeList bounceNodes = query.getList();
       bounces = convertNodeListToList(bounceNodes);
+      if (null != order && !bounceManager.hasField(order)) {
+         bounces = nesletterSort(bounces, offset, pageSize, direction, order);
+      }
+      return bounces;
+   }
+
+   private static List<NewsletterBounce> nesletterSort(List<NewsletterBounce> 
bounces, int offset, int pageSize,
+         String direction, String order) {
+      ComparisonUtil comparator = new ComparisonUtil();
+      comparator.setFields_user(new String[] { order });
+      Collections.sort(bounces, comparator);
+      if ("down".equals(direction)) {
+         Collections.reverse(bounces);
+      }
+      if (pageSize + offset < bounces.size()) {
+         bounces = bounces.subList(offset, pageSize + offset);
+      } else {
+         bounces = bounces.subList(offset, bounces.size());
+      }
       return bounces;
    }
    
    public static int getTotalCount() {
       Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
       NodeList bounces = SearchUtil.findNodeList(cloud, "newsletterbounce");
-      if(bounces != null) {
+      if (bounces != null) {
          return bounces.size();
       }
       return (0);
    }
    
    public static List<NewsletterBounce> convertNodeListToList(NodeList 
bounceNodes) {
-      if(bounceNodes == null || bounceNodes.size() <1){
+      if (bounceNodes == null || bounceNodes.size() < 1) {
          return null;
       }
       List<NewsletterBounce> bounces = new ArrayList<NewsletterBounce>();
-      for(int i = 0 ; i < bounceNodes.size() ; i++) {
+      for (int i = 0; i < bounceNodes.size(); i++) {
          Node bounceNode = bounceNodes.getNode(i);
-         if(bounceNode == null){
+         if (bounceNode == null) {
             continue;
          }
          NewsletterBounce bounce = new NewsletterBounce();
-         copyProperties(bounceNode,bounce);
+         copyProperties(bounceNode, bounce);
          bounces.add(bounce);
       }
       return bounces;
    }
    
-   public static void copyProperties(Node srcBounceNode,NewsletterBounce 
desBounce){
+   public static void copyProperties(Node srcBounceNode, NewsletterBounce 
desBounce) {
 
       Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
       desBounce.setId(srcBounceNode.getNumber());
       desBounce.setNewsletterId(srcBounceNode.getIntValue("newsletter"));
       desBounce.setUserId(srcBounceNode.getIntValue("userid"));
 
-      if(srcBounceNode.getIntValue("newsletter") > 0){
+      if (srcBounceNode.getIntValue("newsletter") > 0) {
          Node publicationNode = 
cloud.getNode(srcBounceNode.getIntValue("newsletter"));
          desBounce.setNewsLetterTitle(publicationNode.getStringValue("title"));
       }
-      if(srcBounceNode.getIntValue("userid") > 0 ){
+      if (srcBounceNode.getIntValue("userid") > 0) {
          String userName = 
CommunityModuleAdapter.getUserNameByAuthenticationId(srcBounceNode.getIntValue("userid"));
-         if(userName != null){
+         if (userName != null) {
             desBounce.setUserName(userName);
          }
       }
@@ -83,11 +106,11 @@
       
    }   
     
-   public static NewsletterBounce getNewsletterBounce(int number){
+   public static NewsletterBounce getNewsletterBounce(int number) {
       Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
       Node bounceNode = cloud.getNode(number);
       NewsletterBounce bounce = new NewsletterBounce();
-      copyProperties(bounceNode,bounce);
+      copyProperties(bounceNode, bounce);
       return bounce;
    }
 }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to