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