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