Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl
In directory
james.mmbase.org:/tmp/cvs-serv23447/src/java/com/finalist/newsletter/cao/impl
Modified Files:
NewsletterCAOImpl.java NewsletterPublicationCAOImpl.java
NewsletterSubscriptionCAOImpl.java
Log Message:
cmsc-979,990 newsletter mangement (block by cmsc-217)
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.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- NewsletterCAOImpl.java 21 Jul 2008 12:52:40 -0000 1.16
+++ NewsletterCAOImpl.java 24 Jul 2008 09:04:16 -0000 1.17
@@ -1,13 +1,20 @@
package com.finalist.newsletter.cao.impl;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
import net.sf.mmapps.commons.beans.MMBaseNodeMapper;
import org.apache.commons.lang.StringUtils;
-import org.mmbase.bridge.*;
+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.Queries;
import org.mmbase.bridge.util.SearchUtil;
-import org.mmbase.storage.search.*;
+import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.RelationStep;
+import org.mmbase.storage.search.Step;
import org.mmbase.util.logging.Logger;
import org.mmbase.util.logging.Logging;
@@ -22,16 +29,12 @@
public NewsletterCAOImpl() {
}
- public NewsletterCAOImpl(Cloud cloud) {
- this.cloud = cloud;
- }
-
public List<Term> getALLTerm() {
NodeQuery query = cloud.createNodeQuery();
Step step = query.addStep(cloud.getNodeManager("term"));
query.setNodeStep(step);
NodeList list = query.getList();
- return MMBaseNodeMapper.convertList(list, Term.class);
+ return list;
}
public List<Newsletter> getNewsletterByConstraint(String property, String
constraintType, String value) {
@@ -49,13 +52,13 @@
}
public int getNewsletterIdBySubscription(int id) {
- log.debug("Get newsletter by subsription "+id);
+ log.debug("Get newsletter by subsription " + id);
Node subscriptionNode = cloud.getNode(id);
NodeList nodes = subscriptionNode.getRelatedNodes("newsletter");
- if(nodes.size()>0){
+ if (nodes.size() > 0) {
return nodes.getNode(0).getNumber();
- }else{
+ } else {
return -1;
}
}
@@ -67,13 +70,30 @@
public Newsletter getNewsletterById(int id) {
Node newsletterNode = cloud.getNode(id);
-
+ // <<<<<<< NewsletterCAOImpl.java
+ // Newsletter newsletter = convertFromNode(newsletterNode);
+ //
+ // List<Node> terms = newsletterNode.getRelatedNodes("term");
+ // log.debug("get newsletter by id:" + id + ",and get " +
terms.size() +
+ // " terms with it.");
+ // Iterator termsIt = terms.iterator();
+ //
+ // for (int i = 0; i < terms.size(); i++) {
+ // Term term = new Term();
+ // Node termNode = (Node) termsIt.next();
+ // term.setId(termNode.getNumber());
+ // term.setName(termNode.getStringValue("name"));
+ // term.setSubscription(false);
+ // newsletter.getTerms().add(term);
+ // }
+ // =======
Newsletter newsletter = convertFromNode(newsletterNode);
NodeList terms = newsletterNode.getRelatedNodes("term");
log.debug("get newsletter by id:" + id + ",and get " + terms.size() + "
terms with it.");
List<Term> termList = MMBaseNodeMapper.convertList(terms, Term.class);
newsletter.getTerms().addAll(termList);
+ // >>>>>>> 1.16
return newsletter;
}
@@ -89,30 +109,89 @@
return newsletter;
}
- public Set<Term> getNewsletterTermsByName(int newsletterId, String
name, int pagesize, int offset) {
+ public List<Term> getNewsletterTermsByName(int newsletterId, String
name, int pagesize, int offset, String order, String direction) {
NodeManager termNodeManager = cloud.getNodeManager("term");
NodeManager newsletterNodeManager =
cloud.getNodeManager("newsletter");
+
NodeQuery query = cloud.createNodeQuery();
+ // <<<<<<< NewsletterCAOImpl.java
- Step termStep = query.addStep(termNodeManager);
- query.setNodeStep(termStep);
+ Step newsletterStep = query.addStep(newsletterNodeManager);
+ query.setNodeStep(newsletterStep);
+ Constraint idConstraint =
SearchUtil.createEqualConstraint(query,
newsletterNodeManager.getField("number"), newsletterId);
+ SearchUtil.addConstraint(query, idConstraint);
- if(StringUtils.isNotBlank(name)){
- Constraint nameConstrant
=SearchUtil.createLikeConstraint(query,
- termNodeManager.getField("name"), "%" +
name + "%" );
- SearchUtil.addConstraint(query, nameConstrant);
+ RelationStep relationStep =
query.addRelationStep(termNodeManager, "posrel", "destination");
+ Step termStep = relationStep.getNext();
+ // =======
+ //
+ // Step termStep = query.addStep(termNodeManager);
+ // >>>>>>> 1.16
+ query.setNodeStep(termStep);
+ // <<<<<<< NewsletterCAOImpl.java
+ if (StringUtils.isNotBlank(name)) {
+ SearchUtil.addLikeConstraint(query,
termNodeManager.getField("name"), name);
+ }
+ query.setMaxNumber(pagesize);
+ query.setOffset(offset);
+ String orderBy = "number";
+ if (!"number".equals(order.trim()))
+ orderBy = order.trim();
+ Queries.addSortOrders(query, orderBy, direction);
+ List<Node> nodeList = query.getList();
+ List<Term> terms = new ArrayList<Term>();
+ for (Node termNode : nodeList) {
+ int tmpNum = termNode.getNumber();
+ String tmpName = termNode.getStringValue("name");
+ Term term = new Term();
+ term.setId(tmpNum);
+ term.setName(tmpName);
+ terms.add(term);
+ // =======
+ //
+ // if(StringUtils.isNotBlank(name)){
+ // Constraint nameConstrant
=SearchUtil.createLikeConstraint(query,
+ // termNodeManager.getField("name"), "%" + name + "%" );
+ // SearchUtil.addConstraint(query, nameConstrant);
+ // >>>>>>> 1.16
+ }
+ // <<<<<<< NewsletterCAOImpl.java
+ return terms;
}
- RelationStep rStep =
query.addRelationStep(newsletterNodeManager, "posrel", "destination");
- Constraint idConstraint =
SearchUtil.createEqualConstraint(query,
- newsletterNodeManager.getField("number"),
newsletterId);
+ public int getNewsletterTermsCountByName(int newsletterId, String name)
{
+ NodeManager termNodeManager = cloud.getNodeManager("term");
+ NodeManager newsletterNodeManager =
cloud.getNodeManager("newsletter");
+
+ NodeQuery query = cloud.createNodeQuery();
+
+ Step newsletterStep = query.addStep(newsletterNodeManager);
+ query.setNodeStep(newsletterStep);
+ Constraint idConstraint =
SearchUtil.createEqualConstraint(query,
newsletterNodeManager.getField("number"), newsletterId);
+ // =======
+ //
+ // RelationStep rStep =
query.addRelationStep(newsletterNodeManager,
+ // "posrel", "destination");
+ // Constraint idConstraint =
SearchUtil.createEqualConstraint(query,
+ // newsletterNodeManager.getField("number"), newsletterId);
+ // >>>>>>> 1.16
SearchUtil.addConstraint(query, idConstraint);
+ // <<<<<<< NewsletterCAOImpl.java
- System.out.println(query.toSql());
- NodeList nodeList = query.getList();
- System.out.println(nodeList.toString());
- return new HashSet<Term>();
+ RelationStep relationStep =
query.addRelationStep(termNodeManager, "posrel", "destination");
+ Step termStep = relationStep.getNext();
+ query.setNodeStep(termStep);
+ if (StringUtils.isNotBlank(name)) {
+ SearchUtil.addLikeConstraint(query,
termNodeManager.getField("name"), name);
+ }
+ return query.getList().size();
+ // =======
+ //
+ // System.out.println(query.toSql());
+ // NodeList nodeList = query.getList();
+ // System.out.println(nodeList.toString());
+ // return new HashSet<Term>();
+ // >>>>>>> 1.16
}
-
}
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.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- NewsletterPublicationCAOImpl.java 21 Jul 2008 12:52:40 -0000 1.15
+++ NewsletterPublicationCAOImpl.java 24 Jul 2008 09:04:16 -0000 1.16
@@ -6,6 +6,7 @@
import org.apache.commons.lang.time.DateFormatUtils;
import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.Queries;
import org.mmbase.bridge.util.SearchUtil;
import org.mmbase.storage.search.*;
import org.mmbase.storage.search.implementation.*;
@@ -168,7 +169,55 @@
}
- public Set<Publication> getPublicationsByNewsletterAndPeriod(int
newsletterId, String title, String subject, Date startDate, Date endDate, int
pagesize, int offset){
+// 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 List<Publication> convertPublicationsToMap(List<Node>
publicationNodes) {
+ List<Publication> publications = new ArrayList<Publication>();
+ // private Set<Publication> convertPublicationsToMap(List<Node>
+ // publicationNodes) {
+ // Set<Publication> publications = new HashSet<Publication>();
+ // >>>>>>> 1.15
+ 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);
@@ -188,8 +237,7 @@
if (startDate != null){
BasicFieldValueBetweenConstraint constraintDate= new
BasicFieldValueBetweenConstraint(fieldDate, startDate, endDate);
constraints.addChild(constraintDate);
- }
- else{
+ } else {
BasicFieldValueConstraint constraintDate =new
BasicFieldValueConstraint(fieldDate, endDate);
constraintDate.setOperator(FieldCompareConstraint.LESS);
constraints.addChild(constraintDate);
@@ -197,23 +245,12 @@
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;
+ return nodeQuery.getList().size();
}
- public int getPublicationCountForEdit(int newsletterId, String title,
String subject, Date startDate, Date endDate){
+ public List<Publication> getPublicationsByNewsletterAndPeriod(int
newsletterId, String title, String subject, Date startDate, Date endDate,
+ int pagesize, int offset, String order, String
direction) {
NodeManager manager =
cloud.getNodeManager("newsletterpublication");
Node newsletterNode = cloud.getNode(newsletterId);
@@ -230,18 +267,28 @@
constraintSubject.setOperator(FieldCompareConstraint.LIKE);
BasicCompositeConstraint constraints = new
BasicCompositeConstraint(2);
- if (startDate != null){
- BasicFieldValueBetweenConstraint constraintDate= new
BasicFieldValueBetweenConstraint(fieldDate, startDate, endDate);
+ if (startDate != null) {
+ BasicFieldValueBetweenConstraint constraintDate = new
BasicFieldValueBetweenConstraint(fieldDate, startDate, endDate);
constraints.addChild(constraintDate);
- }
- else{
- BasicFieldValueConstraint constraintDate =new
BasicFieldValueConstraint(fieldDate, endDate);
+ } else {
+ BasicFieldValueConstraint constraintDate = new
BasicFieldValueConstraint(fieldDate, endDate);
constraintDate.setOperator(FieldCompareConstraint.LESS);
constraints.addChild(constraintDate);
}
constraints.addChild(constraintTitle);
constraints.addChild(constraintSubject);
- return nodeQuery.getList().size();
+ nodeQuery.setOffset(offset);
+ nodeQuery.setMaxNumber(pagesize);
+ nodeQuery.setConstraint(constraints);
+ String orderBy = "number";
+ if (!"number".equals(order.trim()))
+ orderBy = order.trim();
+ Queries.addSortOrders(nodeQuery, orderBy, direction);
+ List<Node> list = nodeQuery.getList();
+ List<Publication> publications = convertPublicationsToMap(list);
+ return publications;
}
+
+
}
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.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- NewsletterSubscriptionCAOImpl.java 21 Jul 2008 12:52:40 -0000 1.23
+++ NewsletterSubscriptionCAOImpl.java 24 Jul 2008 09:04:16 -0000 1.24
@@ -2,18 +2,37 @@
import static
com.finalist.newsletter.util.NewsletterSubscriptionUtil.convertFromNode;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.mmbase.bridge.*;
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Field;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.Query;
+import org.mmbase.bridge.RelationManager;
import org.mmbase.bridge.util.SearchUtil;
import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.storage.search.RelationStep;
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 com.finalist.newsletter.cao.AbstractCAO;
import com.finalist.newsletter.cao.NewsletterSubscriptionCAO;
-import com.finalist.newsletter.domain.*;
+import com.finalist.newsletter.domain.Newsletter;
+import com.finalist.newsletter.domain.Subscription;
+import com.finalist.newsletter.domain.Term;
import com.finalist.newsletter.domain.Subscription.STATUS;
import com.finalist.newsletter.util.DateUtil;
@@ -21,7 +40,6 @@
private static Log log =
LogFactory.getLog(NewsletterSubscriptionCAOImpl.class);
-
public NewsletterSubscriptionCAOImpl() {
}
@@ -29,6 +47,10 @@
this.cloud = cloud;
}
+ public void setCloud(Cloud cloud) {
+ this.cloud = cloud;
+ }
+
public List<Node> querySubcriptionByUser(int userId) {
NodeManager recordManager = cloud.getNodeManager("subscriptionrecord");
@@ -40,18 +62,15 @@
query.setNodeStep(theStep);
Field field = recordManager.getField(subscriber);
- Constraint titleConstraint = SearchUtil.createEqualConstraint(query,
- field, Integer.toString(userId));
+ Constraint titleConstraint =
SearchUtil.createEqualConstraint(query, field, Integer.toString(userId));
SearchUtil.addConstraint(query, titleConstraint);
return query.getList();
}
public void addSubscriptionRecord(Subscription subscription, int userId) {
String nodeType = "subscriptionrecord";
- NodeManager subscriptionrecordNodeManager = cloud
- .getNodeManager(nodeType);
- Node subscriptionrecordNode = subscriptionrecordNodeManager
- .createNode();
+ NodeManager subscriptionrecordNodeManager =
cloud.getNodeManager(nodeType);
+ Node subscriptionrecordNode =
subscriptionrecordNodeManager.createNode();
subscriptionrecordNode.setIntValue("subscriber", userId);
subscriptionrecordNode.setStringValue("status",
subscription.getStatus().toString());
@@ -61,8 +80,7 @@
// add Relation to newsletter
int nodeNumber = subscription.getNewsletter().getId();
Node newsletternode = cloud.getNode(nodeNumber);
- RelationManager insrel = cloud.getRelationManager("subscriptionrecord",
- "newsletter", "newslettered");
+ RelationManager insrel =
cloud.getRelationManager("subscriptionrecord", "newsletter", "newslettered");
subscriptionrecordNode.createRelation(newsletternode, insrel).commit();
subscription.setId(subscriptionrecordNode.getNumber());
}
@@ -88,18 +106,6 @@
record.commit();
}
- public Set<Node> getRecordByNewsletterAndName(int newsletterId, String
termName) {
- return null;
- }
-
- public Set<Node> getNewslettersByScriptionRecord(int authenticationId) {
- return null;
- }
-
- public Set<Node> getTermsByScriptionRecord(int authenticationId) {
- return null;
- }
-
public void modifySubscriptionFormat(Subscription subscription) {
int recordId = subscription.getId();
Node record = cloud.getNode(recordId);
@@ -114,8 +120,7 @@
Node record = cloud.getNode(recordId);
Node term = cloud.getNode(termId);
- RelationManager insrel = cloud.getRelationManager(
- "subscriptionrecord", "term", "termed");
+ RelationManager insrel =
cloud.getRelationManager("subscriptionrecord", "term", "termed");
record.createRelation(term, insrel).commit();
}
@@ -129,8 +134,7 @@
for (int i = 0; i < terms.size(); i++) {
Node term = (Node) termsit.next();
if (termId != term.getNumber()) {
- RelationManager insrel = cloud.getRelationManager(
- "subscriptionrecord", "term", "termed");
+ RelationManager insrel =
cloud.getRelationManager("subscriptionrecord", "term", "termed");
record.createRelation(term, insrel).commit();
}
}
@@ -148,12 +152,10 @@
}
}
-
if (null != subscriptionNode) {
Subscription subscription = new Subscription();
int subscriptionId = subscriptionNode.getIntValue("number");
-
subscription.setId(subscriptionId);
subscription.setMimeType(subscriptionNode.getStringValue("format"));
subscription.setStatus(STATUS.valueOf(subscriptionNode.getStringValue("status")));
@@ -168,8 +170,7 @@
subscription.getTerms().add(term);
}
return subscription;
- }
- else {
+ } else {
log.debug("Get subscription failed,user " + userId + " may not
subscripbe " + newsletterId);
return null;
}
@@ -191,7 +192,6 @@
return terms;
}
-
public List<Subscription> getSubscription(int newsletterId) {
List<Node> records =
cloud.getNode(newsletterId).getRelatedNodes("subscriptionrecord");
@@ -207,7 +207,6 @@
return subscribers;
}
-
public void createSubscription(int userId, int newsletterId) {
log.debug("Create subscription user:" + userId + " newsletter:" +
newsletterId);
@@ -275,11 +274,72 @@
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);
+ }
+ }
+ }
+ 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;
+ }
+
public void updateLastBounce(int subscriptionId) {
- //todo test.
+ // todo test.
Node subscription = getSubscriptionNodeById(subscriptionId);
-
subscription.setIntValue("count_bounces",subscription.getIntValue("count_bounces"));
- subscription.setDateValue("last_bounce",new
Date(System.currentTimeMillis()));
+ subscription.setIntValue("count_bounces",
subscription.getIntValue("count_bounces"));
+ subscription.setDateValue("last_bounce", new
Date(System.currentTimeMillis()));
subscription.commit();
}
@@ -305,4 +365,35 @@
return subscriptionNode;
}
+
+ public List<Node> getSubscriptionsByTerms(int newsletterId, String
terms) {
+ NodeManager termNodeManager = cloud.getNodeManager("term");
+ NodeManager newsletterNodeManager =
cloud.getNodeManager("newsletter");
+ NodeManager subscriptionNodeManger =
cloud.getNodeManager("subscriptionrecord");
+
+ NodeQuery query = cloud.createNodeQuery();
+ Step termStep = query.addStep(termNodeManager);
+ query.setNodeStep(termStep);
+
+ if (StringUtils.isNotBlank(terms)) {
+ String nameLikeStr = null;
+ String[] tmpTerms = terms.split(" ");
+ for (String termName : tmpTerms) {
+ SearchUtil.addLikeConstraint(query,
termNodeManager.getField("name"), termName);
+ }
+ }
+
+ RelationStep newsletterRelStep =
query.addRelationStep(newsletterNodeManager, "posrel", "source");
+ Step newsletterStep = newsletterRelStep.getNext();
+ query.setNodeStep(newsletterStep);
+ SearchUtil.addEqualConstraint(query,
newsletterNodeManager.getField("number"), newsletterId);
+
+ RelationStep subscriptionRelStep =
query.addRelationStep(subscriptionNodeManger, "newslettered", "destination");
+ Step subscriptionStep = subscriptionRelStep.getNext();
+ query.setNodeStep(subscriptionStep);
+ List<Node> subscriptions = query.getList();
+
+ return subscriptions;
+ }
+
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs