Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl
In directory
james.mmbase.org:/tmp/cvs-serv26484/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl
Modified Files:
NewsletterSubscriptionCAOImpl.java
Log Message:
CMSC-818 improve code,implement pause all.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl
See also: http://www.mmbase.org/jira/browse/CMSC-818
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.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- NewsletterSubscriptionCAOImpl.java 29 Apr 2008 01:37:04 -0000 1.15
+++ NewsletterSubscriptionCAOImpl.java 3 May 2008 14:40:59 -0000 1.16
@@ -23,18 +23,19 @@
import com.finalist.newsletter.cao.NewsletterSubscriptionCAO;
import com.finalist.newsletter.domain.Subscription;
import com.finalist.newsletter.domain.Term;
+import com.finalist.newsletter.domain.Newsletter;
import com.finalist.newsletter.services.CommunityModuleAdapter;
import static com.finalist.newsletter.domain.Subscription.STATUS;
public class NewsletterSubscriptionCAOImpl implements
NewsletterSubscriptionCAO {
- private static Log log = LogFactory
- .getLog(NewsletterSubscriptionCAOImpl.class);
+ private static Log log =
LogFactory.getLog(NewsletterSubscriptionCAOImpl.class);
private Cloud cloud;
public NewsletterSubscriptionCAOImpl() {
}
+
public NewsletterSubscriptionCAOImpl(Cloud cloud) {
this.cloud = cloud;
}
@@ -78,7 +79,7 @@
}
public void modifySubscriptionStauts(Subscription subscription) {
- log.debug("Modify subscription status"+subscription.getId()+" to
"+subscription.getStatus());
+ log.debug("Modify subscription status " + subscription.getId() + " to "
+ subscription.getStatus());
String stauts = subscription.getStatus().toString();
Node record = cloud.getNode(subscription.getId());
@@ -86,7 +87,6 @@
record.commit();
if ("INACTIVE".equals(stauts)) {
- record.setStringValue("format", "html");
record.deleteRelations("termed");
record.commit();
}
@@ -102,7 +102,7 @@
record.commit();
}
- public void addSubscriptionTerm(Subscription subscription,int termId) {
+ public void addSubscriptionTerm(Subscription subscription, int termId) {
int recordId = subscription.getId();
Node record = cloud.getNode(recordId);
Node term = cloud.getNode(termId);
@@ -112,7 +112,7 @@
record.createRelation(term, insrel).commit();
}
- public void removeSubscriptionTerm(Subscription subscription,int
termId) {
+ public void removeSubscriptionTerm(Subscription subscription, int termId) {
int recordId = subscription.getId();
Node record = cloud.getNode(recordId);
@@ -131,48 +131,38 @@
public Subscription getSubscription(int newsletterId, int userId) {
log.debug("getSubscriptionrecord that newsletterId=" +
newsletterId);
- NodeManager recordManager =
cloud.getNodeManager("subscriptionrecord");
- NodeManager newsletterManager =
cloud.getNodeManager("newsletter");
- Query query = cloud.createQuery();
- Step parameterStep = query.addStep(recordManager);
- RelationStep relationStep =
query.addRelationStep(newsletterManager,
- "newslettered", "DESTINATION");
- Step newsletterStep = relationStep.getNext();
-
- query.addField(parameterStep,
recordManager.getField("subscriber"));
- query.addField(newsletterStep,
newsletterManager.getField("number"));
-
- SearchUtil.addEqualConstraint(query, recordManager
- .getField("subscriber"),
Integer.toString(userId));
- SearchUtil.addEqualConstraint(query, newsletterManager
- .getField("number"), newsletterId);
+ Node subscriptionNode = null;
+ List<Node> records =
cloud.getNode(newsletterId).getRelatedNodes("subscriptionrecord");
+ for (Node record : records) {
+ if
(record.getStringValue("subscriber").equals(Integer.toString(userId))) {
+ subscriptionNode = record;
+ break;
+ }
+ }
+
- List<Node> subscriptionList = query.getList();
+ if (null != subscriptionNode) {
Subscription subscription = new Subscription();
- if (0 != subscriptionList.size()) {
- Node subscriptionNode = subscriptionList.get(0);
- int subscriptionId =
subscriptionNode.getIntValue("subscriptionrecord.number");
- log.debug("Get subscription successful");
+ int subscriptionId = subscriptionNode.getIntValue("number");
- subscription.setId(subscriptionId);
-
subscription.setMimeType(subscriptionNode.getStringValue("subscriptionrecord.format"));
-
subscription.setStatus(STATUS.valueOf(subscriptionNode.getStringValue("subscriptionrecord.status")));
- List<Node> terms =
cloud.getNode(subscriptionId).getRelatedNodes("term");
- Iterator termIt = terms.iterator();
- for(int i=0;i<terms.size();i++){
+ subscription.setId(subscriptionId);
+ subscription.setMimeType(subscriptionNode.getStringValue("format"));
+
subscription.setStatus(STATUS.valueOf(subscriptionNode.getStringValue("status")));
+ List<Node> terms = subscriptionNode.getRelatedNodes("term");
+ log.debug("Get subscription successful and get " + terms.size() + "
term with it");
+ for (Node termNode : terms) {
Term term = new Term();
- Node termNode = (Node) termIt.next();
term.setId(termNode.getNumber());
term.setName(termNode.getStringValue("name"));
term.setSubscription(true);
subscription.getTerms().add(term);
}
return subscription;
- } else {
- log.debug("Get subscription failed,user " + userId
- + " may not subscripbe " +
newsletterId);
+ }
+ else {
+ log.debug("Get subscription failed,user " + userId + " may not
subscripbe " + newsletterId);
return null;
}
}
@@ -193,11 +183,10 @@
}
-
public List<Subscription> getSubscription(int newsletterId) {
List<Node> records =
cloud.getNode(newsletterId).getRelatedNodes("subscriptionrecord");
- log.debug("Get subscriptions of newsletter:"+newsletterId+" and get
"+records.size()+" records in all");
+ log.debug("Get subscriptions of newsletter:" + newsletterId + " and get
" + records.size() + " records in all");
List<Subscription> subscribers = new ArrayList<Subscription>();
for (Node record : records) {
String status = record.getStringValue("status");
@@ -209,7 +198,7 @@
return subscribers;
}
- private Subscription convertFromNode(Node node){
+ private Subscription convertFromNode(Node node) {
Subscription subscription = new Subscription();
subscription.setId(node.getIntValue("number"));
subscription.setMimeType(node.getStringValue("format"));
@@ -219,4 +208,58 @@
return subscription;
}
+ public void createSubscription(int userId, int newsletterId) {
+ log.debug("Create subscription user:" + userId + " newsletter:" +
newsletterId);
+
+ NodeManager recordManager = cloud.getNodeManager("subscriptionrecord");
+ Node newsletter = cloud.getNode(newsletterId);
+
+ Node recordNode = recordManager.createNode();
+ recordNode.setStringValue("status",
Subscription.STATUS.ACTIVE.toString());
+ recordNode.setStringValue("subscriber", Integer.toString(userId));
+ recordNode.setStringValue("format", "text/html");
+ recordNode.commit();
+
+ RelationManager insrel = cloud.getRelationManager("subscriptionrecord",
"newsletter", "newslettered");
+ recordNode.createRelation(newsletter, insrel).commit();
+
+ }
+
+ public Subscription getSubscriptionById(int id) {
+ Node subscriptionNode = cloud.getNode(id);
+ Subscription subscription = convertFromNode(subscriptionNode);
+ List<Node> newsletterNodes =
subscriptionNode.getRelatedNodes("newsletter");
+
+ Newsletter newsletter = new Newsletter();
+ newsletter.setTitle(newsletterNodes.get(0).getStringValue("subject"));
+ subscription.setNewsletter(newsletter);
+
+ return subscription;
+ }
+
+ public void updateSubscription(Subscription subscription) {
+ Node node = cloud.getNode(subscription.getId());
+ node.setStringValue("status",subscription.getStatus().toString());
+ node.setDateValue("pausetill",subscription.getPausedTill());
+ node.commit();
+
+ }
+
+ public List<Subscription> getSubscriptionByUserIdAndStatus(int
userId,STATUS status) {
+
+ NodeManager recordManager = cloud.getNodeManager("subscriptionrecord");
+
+ Query query = recordManager.createQuery();
+
SearchUtil.addEqualConstraint(query,recordManager.getField("status"),status.toString());
+
SearchUtil.addEqualConstraint(query,recordManager.getField("subscriber"),Integer.toString(userId));
+
+ List<Node> subscriptions = query.getList();
+
+ List<Subscription> subs = new ArrayList<Subscription>();
+ for(Node node :subscriptions){
+ subs.add(convertFromNode(node));
+ }
+
+ return subs;
+ }
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs