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

Modified Files:
        NewsletterUtil.java 
Log Message:
CMSC-867,modify Newsletter Content Portlet.


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-867


Index: NewsletterUtil.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util/NewsletterUtil.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- NewsletterUtil.java 23 Apr 2008 11:03:16 -0000      1.15
+++ NewsletterUtil.java 28 Apr 2008 12:39:44 -0000      1.16
@@ -2,22 +2,33 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import net.sf.mmapps.commons.beans.MMBaseNodeMapper;
 import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.mmbase.bridge.Cloud;
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.NodeList;
 import org.mmbase.bridge.NodeManager;
 import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.Query;
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldValueInConstraint;
+import org.mmbase.storage.search.RelationStep;
+import org.mmbase.storage.search.Step;
 
 import com.finalist.cmsc.beans.om.ContentElement;
+import com.finalist.newsletter.cao.impl.NewsletterSubscriptionCAOImpl;
 
 public abstract class NewsletterUtil {
-
+   private static Log log = LogFactory
+   .getLog(NewsletterUtil.class);
    public static final String NEWSLETTER = "newsletter";
    public static final String NEWSLETTERPUBLICATION = "newsletterpublication";
 
@@ -204,8 +215,26 @@
          List<ContentElement> articles = new ArrayList<ContentElement>();
          Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
          Node newsletterNode = cloud.getNode(newsletterNumber);
+         
+         NodeManager tagNodeManager = cloud.getNodeManager("tag");   
+         NodeList tags = newsletterNode.getRelatedNodes(tagNodeManager);
          NodeManager articleNodeManager = cloud.getNodeManager("article");     
    
-         NodeQuery  query =  
Queries.createRelatedNodesQuery(newsletterNode,articleNodeManager,null,null);
+         Node tag = null;     
+         SortedSet<Integer> sort= new TreeSet<Integer>();
+         for (int i = 0 ; i < tags.size(); i++) {
+            tag =  tags.getNode(i);
+            sort.add(new Integer(tag.getNumber()));
+         }
+         if(sort.size() == 0) {
+            return (null);
+         }
+         NodeQuery query = cloud.createNodeQuery();
+         Step parameterStep = query.addStep(articleNodeManager);
+         query.setNodeStep(parameterStep);
+         query.addRelationStep(tagNodeManager,
+               null, null);
+         SearchUtil.addInConstraint(query, tagNodeManager
+               .getField("number"), sort);           
          Queries.addSortOrders(query, orderBy, direction);
          query.setOffset(offset);
          query.setMaxNumber(elementsPerPage);
@@ -222,12 +251,33 @@
       }
       return (null);
    }
+   
    public static int countArticlesByNewsletter(int newsletterNumber) {
       if (newsletterNumber > 0) {
          Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
          Node newsletterNode = cloud.getNode(newsletterNumber);
+         
+         NodeManager tagNodeManager = cloud.getNodeManager("tag");   
+         NodeList tags = newsletterNode.getRelatedNodes(tagNodeManager);
          NodeManager articleNodeManager = cloud.getNodeManager("article");     
    
-         NodeQuery  query =  
Queries.createRelatedNodesQuery(newsletterNode,articleNodeManager,null,null);
+         Node tag = null;     
+         SortedSet<Integer> sort= new TreeSet<Integer>();
+         for (int i = 0 ; i < tags.size(); i++) {
+            tag =  tags.getNode(i);
+            sort.add(new Integer(tag.getNumber()));
+         }
+         if(sort.size() == 0) {
+            return (0);
+         }
+         NodeQuery query = cloud.createNodeQuery();
+         Step parameterStep = query.addStep(articleNodeManager);
+         query.setNodeStep(parameterStep);
+         query.addRelationStep(tagNodeManager,
+               null, null);
+         SearchUtil.addInConstraint(query, tagNodeManager
+               .getField("number"), sort);  
+         
+//         NodeQuery  query =  
Queries.createRelatedNodesQuery(tag,articleNodeManager,null,null);
          return Queries.count(query);
       }
       return (0);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to