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

Modified Files:
        NewsletterCAOImpl.java NewsletterPublicationCAOImpl.java 
        NewsletterSubscriptionCAOImpl.java 
Log Message:
cmsc-956 finish, change dashboard of newsleter management
cmsc-979 not finish yet. finish page design, edit part. logic of statistics 
need more discuss
cmsc-990 not finish yet. finish page design. logic of subscriber need more 
discuss.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl


Index: NewsletterCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsletterCAOImpl.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- NewsletterCAOImpl.java      10 Jun 2008 12:50:53 -0000      1.13
+++ NewsletterCAOImpl.java      7 Jul 2008 04:03:43 -0000       1.14
@@ -8,10 +8,15 @@
 import org.mmbase.bridge.*;
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.AggregatedField;
+import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.storage.search.RelationStep;
 import org.mmbase.storage.search.Step;
 import org.mmbase.storage.search.ResultBuilder;
 import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.StepField;
 import org.mmbase.storage.search.implementation.BasicAggregatedField;
+import org.mmbase.storage.search.implementation.BasicCompositeConstraint;
+import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
 import org.mmbase.storage.search.implementation.BasicSearchQuery;
 import org.mmbase.storage.search.implementation.database.BasicQueryHandler;
 import org.mmbase.util.logging.Logger;
@@ -22,8 +27,10 @@
 import org.mmbase.core.CoreField;
 import org.apache.commons.lang.StringUtils;
 
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 public class NewsletterCAOImpl extends AbstractCAO implements NewsletterCAO {
    private static Logger log = 
Logging.getLoggerInstance(NewsletterCAOImpl.class.getName());
@@ -102,4 +109,30 @@
       return newsletter;
    }
 
+       public Set<Term> getNewsletterTermsByName(int newsletterId, String 
name, int pagesize, int offset) {
+
+               NodeManager termNodeManager = cloud.getNodeManager("term");
+               NodeManager newsletterNodeManager = 
cloud.getNodeManager("newsletter");
+               NodeQuery query = cloud.createNodeQuery();
+               
+               Step termStep = query.addStep(termNodeManager);
+               query.setNodeStep(termStep);
+               
+               if(StringUtils.isNotBlank(name)){
+                       Constraint nameConstrant 
=SearchUtil.createLikeConstraint(query, 
+                                       termNodeManager.getField("name"), "%" + 
name + "%" );
+                       SearchUtil.addConstraint(query, nameConstrant);
+               }
+               
+               RelationStep rStep = 
query.addRelationStep(newsletterNodeManager, "posrel", "destination");
+               Constraint idConstraint = 
SearchUtil.createEqualConstraint(query,
+                               newsletterNodeManager.getField("number"), 
newsletterId);
+               SearchUtil.addConstraint(query, idConstraint);
+               
+               System.out.println(query.toSql());
+               NodeList nodeList = query.getList();
+               System.out.println(nodeList.toString());
+               return new HashSet<Term>();
+       }
+
 }


Index: NewsletterPublicationCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsletterPublicationCAOImpl.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- NewsletterPublicationCAOImpl.java   22 May 2008 10:35:34 -0000      1.12
+++ NewsletterPublicationCAOImpl.java   7 Jul 2008 04:03:43 -0000       1.13
@@ -2,20 +2,25 @@
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.mmbase.bridge.Cloud;
 import org.mmbase.bridge.Field;
 import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
 import org.mmbase.bridge.NodeManager;
 import org.mmbase.bridge.NodeQuery;
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldCompareConstraint;
 import org.mmbase.storage.search.Step;
+import org.mmbase.storage.search.StepField;
 import org.mmbase.util.logging.Logger;
 import org.mmbase.util.logging.Logging;
 
@@ -37,6 +42,9 @@
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.Constraint;
 import org.mmbase.storage.search.Step;
+import org.mmbase.storage.search.implementation.BasicCompositeConstraint;
+import 
org.mmbase.storage.search.implementation.BasicFieldValueBetweenConstraint;
+import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
 import org.mmbase.util.logging.Logger;
 import org.mmbase.util.logging.Logging;
 
@@ -150,6 +158,10 @@
    private Publication convertFromNode(Node node){
       Publication publication = new Publication();
       publication.setId(node.getNumber());
+      publication.setSubject(node.getStringValue("subject"));
+      publication.setTitle(node.getStringValue("title"));
+      publication.setLastmodifieddate(node.getStringValue("lastmodifieddate"));
+      publication.setLastmodifier(node.getStringValue("lastmodifier"));
       return publication;
    }
 
@@ -194,4 +206,81 @@
       publicationNode.commit();
    
    }
+   
+   public Set<Publication> getPublicationsByNewsletterAndPeriod(int 
newsletterId, String title, String subject, Date startDate, Date endDate, int 
pagesize, int offset){
+          NodeManager manager = cloud.getNodeManager("newsletterpublication");
+          Node newsletterNode = cloud.getNode(newsletterId);
+          
+          NodeQuery nodeQuery = 
SearchUtil.createRelatedNodeListQuery(newsletterNode, "newsletterpublication", 
"related");
+          Step step = nodeQuery.getNodeStep();
+          
+          StepField fieldSubject = nodeQuery.addField(step, 
manager.getField("subject"));
+          StepField fieldTitle = nodeQuery.addField(step, 
manager.getField("title"));
+          StepField fieldDate = nodeQuery.addField(step, 
manager.getField("creationdate"));
+          
+          BasicFieldValueConstraint constraintTitle = new 
BasicFieldValueConstraint(fieldTitle, "%" + title + "%");
+          constraintTitle.setOperator(FieldCompareConstraint.LIKE);
+          BasicFieldValueConstraint constraintSubject = new 
BasicFieldValueConstraint(fieldSubject, "%" + subject + "%");
+          constraintSubject.setOperator(FieldCompareConstraint.LIKE);
+          
+          BasicCompositeConstraint constraints = new 
BasicCompositeConstraint(2);
+          if (startDate != null){
+                  BasicFieldValueBetweenConstraint constraintDate= new 
BasicFieldValueBetweenConstraint(fieldDate, startDate, endDate);
+                  constraints.addChild(constraintDate);
+          }
+          else{
+                       BasicFieldValueConstraint constraintDate =new 
BasicFieldValueConstraint(fieldDate, endDate);
+                       constraintDate.setOperator(FieldCompareConstraint.LESS);
+                       constraints.addChild(constraintDate);
+          }
+          
+          constraints.addChild(constraintTitle);
+          constraints.addChild(constraintSubject);
+          nodeQuery.setOffset(offset);
+          nodeQuery.setMaxNumber(pagesize);
+          nodeQuery.setConstraint(constraints);
+          List<Node> list = nodeQuery.getList();
+          Set<Publication> publications = convertPublicationsToMap(list);
+          return publications;
+   }
+   
+       private Set<Publication> convertPublicationsToMap(List<Node> 
publicationNodes) {
+          Set<Publication> publications = new HashSet<Publication>();
+          for (Node publicationNode : publicationNodes) {
+                  publications.add(convertFromNode(publicationNode));
+          }
+          return publications;
+       }
+       
+       public int getPublicationCountForEdit(int newsletterId, String title, 
String subject, Date startDate, Date endDate){
+               NodeManager manager = 
cloud.getNodeManager("newsletterpublication");
+                  Node newsletterNode = cloud.getNode(newsletterId);
+                  
+                  NodeQuery nodeQuery = 
SearchUtil.createRelatedNodeListQuery(newsletterNode, "newsletterpublication", 
"related");
+                  Step step = nodeQuery.getNodeStep();
+                  
+                  StepField fieldSubject = nodeQuery.addField(step, 
manager.getField("subject"));
+                  StepField fieldTitle = nodeQuery.addField(step, 
manager.getField("title"));
+                  StepField fieldDate = nodeQuery.addField(step, 
manager.getField("creationdate"));
+                  
+                  BasicFieldValueConstraint constraintTitle = new 
BasicFieldValueConstraint(fieldTitle, "%" + title + "%");
+                  constraintTitle.setOperator(FieldCompareConstraint.LIKE);
+                  BasicFieldValueConstraint constraintSubject = new 
BasicFieldValueConstraint(fieldSubject, "%" + subject + "%");
+                  constraintSubject.setOperator(FieldCompareConstraint.LIKE);
+                  
+                  BasicCompositeConstraint constraints = new 
BasicCompositeConstraint(2);
+                  if (startDate != null){
+                          BasicFieldValueBetweenConstraint constraintDate= new 
BasicFieldValueBetweenConstraint(fieldDate, startDate, endDate);
+                          constraints.addChild(constraintDate);
+                  }
+                  else{
+                               BasicFieldValueConstraint constraintDate =new 
BasicFieldValueConstraint(fieldDate, endDate);
+                               
constraintDate.setOperator(FieldCompareConstraint.LESS);
+                               constraints.addChild(constraintDate);
+                  }
+                  
+                  constraints.addChild(constraintTitle);
+                  constraints.addChild(constraintSubject);
+                  return nodeQuery.getList().size();
+       }
 }


Index: NewsletterSubscriptionCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsletterSubscriptionCAOImpl.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- NewsletterSubscriptionCAOImpl.java  20 May 2008 09:49:52 -0000      1.20
+++ NewsletterSubscriptionCAOImpl.java  7 Jul 2008 04:03:43 -0000       1.21
@@ -1,5 +1,6 @@
 package com.finalist.newsletter.cao.impl;
 
+import com.finalist.cmsc.services.community.security.AuthenticationService;
 import com.finalist.newsletter.cao.NewsletterSubscriptionCAO;
 import com.finalist.newsletter.cao.AbstractCAO;
 import com.finalist.newsletter.domain.Newsletter;
@@ -12,7 +13,11 @@
 import org.mmbase.bridge.*;
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldCompareConstraint;
 import org.mmbase.storage.search.Step;
+import org.mmbase.storage.search.StepField;
+import org.mmbase.storage.search.implementation.BasicCompositeConstraint;
+import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
 
 import static com.finalist.newsletter.util.NewsletterSubscriptionUtil.*;
 import com.finalist.newsletter.util.DateUtil;
@@ -258,4 +263,66 @@
 
       return list;
    }
+   
+   public Set<Node> getRecordByNewsletterAndName(int newsletterId,String 
termName){
+          NodeManager manager = cloud.getNodeManager("term");
+          Node newsletterNode = cloud.getNode(newsletterId);      
+          NodeQuery nodeQuery = 
SearchUtil.createRelatedNodeListQuery(newsletterNode, "term", "posrel");
+          
+          if(StringUtils.isNotBlank(termName)){
+                  Step step = nodeQuery.getNodeStep();
+                  StepField fieldName = nodeQuery.addField(step, 
manager.getField("name"));
+                  BasicFieldValueConstraint constraintTitle = new 
BasicFieldValueConstraint(fieldName, "%" + termName + "%");
+                  constraintTitle.setOperator(FieldCompareConstraint.LIKE);
+                  BasicCompositeConstraint constraints = new 
BasicCompositeConstraint(2);
+                  constraints.addChild(constraintTitle);
+                  nodeQuery.setConstraint(constraints);
+          }
+          List<Node> list = nodeQuery.getList();          
+          Set results = new HashSet<Node>();      
+          List<Node> recordList = null;
+          
+          for (Node termNode : list){
+                  recordList = termNode.getRelatedNodes("subscriptionrecord", 
"termed", "source");
+                  for(Node recordNode :recordList){
+                          if(recordNode!=null){
+                                  results.add(recordNode);
+                                  System.out.println(recordNode.toString());
+                          }
+                  }
+          }
+          return results;
+   }
+   
+   public Set<Node> getNewslettersByScriptionRecord(int authenticationId){
+          NodeManager recordManager = 
cloud.getNodeManager("subscriptionrecord");
+          Query query = recordManager.createQuery();
+          SearchUtil.addEqualConstraint(query, 
recordManager.getField("subscriber"), Integer.toString(authenticationId));
+          List<Node> subscriptions = query.getList();
+          Set<Node> newsletters = new HashSet<Node>(); 
+          for(Node subscription :subscriptions){
+                  List<Node> tmpNewsletters = 
subscription.getRelatedNodes("newsletter", "newslettered", "source");
+                  for(Node newsletter : tmpNewsletters){
+                          if(newsletter != null)
+                                  newsletters.add(newsletter);
+                  }
+          }
+          return newsletters;
+   }
+   
+   public Set<Node> getTermsByScriptionRecord(int authenticationId){
+          NodeManager recordManager = 
cloud.getNodeManager("subscriptionrecord");
+          Query query = recordManager.createQuery();
+          SearchUtil.addEqualConstraint(query, 
recordManager.getField("subscriber"), Integer.toString(authenticationId));
+          List<Node> subscriptions = query.getList();
+          Set<Node> terms = new HashSet<Node>();
+          for(Node subscription : subscriptions){
+                  List<Node> tmpTerms = subscription.getRelatedNodes("term", 
"termed", "destination");
+                  for(Node term :tmpTerms){
+                          if(term != null)
+                                  terms.add(term);
+                  }
+          }
+          return terms;
+   }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to