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

Modified Files:
        NewsletterSubscriptionServicesImpl.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/services/impl
See also: http://www.mmbase.org/jira/browse/CMSC-818


Index: NewsletterSubscriptionServicesImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/services/impl/NewsletterSubscriptionServicesImpl.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- NewsletterSubscriptionServicesImpl.java     29 Apr 2008 01:37:04 -0000      
1.10
+++ NewsletterSubscriptionServicesImpl.java     3 May 2008 14:40:59 -0000       
1.11
@@ -1,9 +1,6 @@
 package com.finalist.newsletter.services.impl;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -14,59 +11,55 @@
 import com.finalist.newsletter.domain.Newsletter;
 import com.finalist.newsletter.domain.Subscription;
 import com.finalist.newsletter.domain.Term;
+import static com.finalist.newsletter.domain.Subscription.STATUS;
 import com.finalist.newsletter.services.NewsletterSubscriptionServices;
+import com.finalist.newsletter.util.DateUtil;
 
-public class NewsletterSubscriptionServicesImpl implements 
NewsletterSubscriptionServices{
+public class NewsletterSubscriptionServicesImpl implements 
NewsletterSubscriptionServices {
        
        NewsletterSubscriptionCAO cao;
        NewsletterCAO newsletterCAO;
        
-       private static Log log = LogFactory
-       .getLog(NewsletterSubscriptionServicesImpl.class);
+   private static Log log = 
LogFactory.getLog(NewsletterSubscriptionServicesImpl.class);
                                                                        
        public void setCao(NewsletterSubscriptionCAO cao) {
                this.cao = cao;
                
        }
-       public void setNewsletterCao(NewsletterCAO newsletterCAO){
+
+   public void setNewsletterCao(NewsletterCAO newsletterCAO) {
                this.newsletterCAO = newsletterCAO;
        }
        
-       public List<Subscription> getSubscriptionList(String[] 
allowedLetters,int userId){
+   public List<Subscription> getSubscriptionList(String[] allowedLetters, int 
userId) {
                
            List<Subscription> subscriptionList = new ArrayList<Subscription>();
                int newsletterId;
-               for(int i=0;i<allowedLetters.length;i++)
-               {
+      for (int i = 0; i < allowedLetters.length; i++) {
                        newsletterId = Integer.parseInt(allowedLetters[i]);
-                       
subscriptionList.add(addRecordInfo(newsletterId,userId));
+         subscriptionList.add(getSubscription(newsletterId, userId));
                }       
                return subscriptionList;
        }
        
-       public Subscription addRecordInfo(int newsletterId, int userId) {
+   private Subscription getSubscription(int newsletterId, int userId) {
        
-               Subscription subscription = 
cao.getSubscription(newsletterId,userId);
+      Subscription subscription = cao.getSubscription(newsletterId, userId);
                Newsletter newsletter = 
newsletterCAO.getNewsletterById(newsletterId);
-               if(subscription==null){
-                       Subscription newSubscription = new Subscription();
-                       newSubscription.setNewsletter(newsletter);
-                       newSubscription.setTerms(newsletter.getTerms());
-                       return newSubscription;
-               }else{
+
+      if (subscription == null) {
+         subscription = new Subscription();
+         subscription.setTerms(newsletter.getTerms());
+
+      }
+      else {
                        Set<Term> newsletterTerms = newsletter.getTerms();
                        Set<Term> subscriptionTerms = subscription.getTerms();
-                       Iterator newsletterTermList = 
newsletterTerms.iterator();
-                       Iterator selectListIt = subscriptionTerms.iterator();
-                       for(int i=0;i<subscriptionTerms.size();i++)
-                       {
-                               Term term = (Term) newsletterTermList.next();
-                               if(subscriptionTerms.size()==0){
-                                       subscriptionTerms.add(term);
-                               }else{
-                                       if(subscriptionTerms.contains(term)){
-                                               continue;
-                                       }else{
+         for (Term term : newsletterTerms) {
+            if (subscriptionTerms.size() == 0) {
+               subscriptionTerms.addAll(newsletterTerms);
+            }
+            else if (!subscriptionTerms.contains(term)) {
                                                subscriptionTerms.add(term);
                                        }                       
                                }       
@@ -74,14 +67,11 @@
                        subscription.setNewsletter(newsletter);
                        return subscription;
                }       
-       }
        
-       public List<Subscription> getNewSubscription(String[] allowedLetters)
-       {
+   public List<Subscription> getNewSubscription(String[] allowedLetters) {
                List<Subscription> list = new ArrayList<Subscription>();
                int nodenumber;
-               for(int i=0;i<allowedLetters.length;i++)
-               {
+      for (int i = 0; i < allowedLetters.length; i++) {
                        nodenumber = Integer.parseInt(allowedLetters[i]);
                        Newsletter newsletter = 
newsletterCAO.getNewsletterById(nodenumber);
                        Subscription subscription = new Subscription();
@@ -93,53 +83,104 @@
                return list;
        }
 
+   public void changeStatus(int userId, int newsletterId) {
+      log.debug(String.format("user % change subscribe status on %s", userId, 
newsletterId));
+
+      Subscription subscription = cao.getSubscription(newsletterId, userId);
+
+      if (STATUS.ACTIVE.equals(subscription.getStatus())) {
+         subscription.setStatus(STATUS.INACTIVE);
+      }
+      else {
+         subscription.setStatus(STATUS.ACTIVE);
+      }
+      cao.modifySubscriptionStauts(subscription);
+   }
+
+   public void pause(String subscriptionId, String duration, String 
durationunit) {
+      Subscription subscription = 
cao.getSubscriptionById(Integer.parseInt(subscriptionId));
+
+      subscription.setStatus(STATUS.PAUSED);
+      if (null != duration) {
+         Date date = DateUtil.calculateDateByDuration(DateUtil.getCurrent(), 
Integer.parseInt(duration), durationunit);
+         subscription.setPausedTill(date);
+      }
+
+      cao.updateSubscription(subscription);
+   }
+
+
+   public void pause(String subscriptionId, String resumeDate) {
+
+      log.debug(String.format("Pasue subscription %s till %s", subscriptionId, 
resumeDate));
+
+      Subscription subscription = 
cao.getSubscriptionById(Integer.parseInt(subscriptionId));
+
+      subscription.setStatus(STATUS.PAUSED);
+      if (null != resumeDate) {
+         Date date = DateUtil.parser(resumeDate);
+         subscription.setPausedTill(date);
+      }
+
+      cao.updateSubscription(subscription);
+   }
+
+
        public boolean hasSubscription(int userId) {
                
                List<Node> list = cao.querySubcriptionByUser(userId);
-               if(0==list.size()){
+      if (0 == list.size()) {
                return false;
                }
-               else
-               {
+      else {
                return true;
                }
        }
 
        public void selectTermInLetter(int userId, int newsletterId, int 
termId) {
+      log.debug("Add term " + termId + " to user" + userId + "'s newsletter:" 
+ newsletterId);
                Subscription subscription = cao.getSubscription(newsletterId, 
userId);
                Set<Term> termList = subscription.getTerms();
                Iterator it = termList.iterator();
-               for(int i=0;i<termList.size();i++){
-                       Term term = (Term)it.next();
-                       if(termId==term.getId()){
+      for (int i = 0; i < termList.size(); i++) {
+         Term term = (Term) it.next();
+         if (termId == term.getId()) {
                                term.setSubscription(true);
                        }
                }
-               cao.addSubscriptionTerm(subscription,termId);
+      cao.addSubscriptionTerm(subscription, termId);
                
        }
        
        public void unSelectTermInLetter(int userId, int newsletterId, int 
termId) {
+      log.debug("Remove term " + termId + " to user " + userId + "'s 
newsletter:" + newsletterId);
                Subscription subscription = cao.getSubscription(newsletterId, 
userId);
                Set<Term> termList = subscription.getTerms();
                Iterator it = termList.iterator();
-               for(int i=0;i<termList.size();i++){
-                       Term term = (Term)it.next();
-                       if(termId==term.getId()){
+      for (int i = 0; i < termList.size(); i++) {
+         Term term = (Term) it.next();
+         if (termId == term.getId()) {
                                term.setSubscription(false);
                        }
                }
-               cao.removeSubscriptionTerm(subscription,termId);
+      cao.removeSubscriptionTerm(subscription, termId);
        }
 
    public void modifyStauts(int userId, int newsletterId, String status) {
       log.debug("user " + userId + " change subscription status of newsletter 
" + newsletterId + " to " + status);
       Subscription subscription = cao.getSubscription(newsletterId, userId);
-      subscription.setStatus(Subscription.STATUS.valueOf(status));
+
+      if (null == subscription) {
+         cao.createSubscription(userId, newsletterId);
+      }
+      else {
+         subscription.setStatus(STATUS.valueOf(status));
       cao.modifySubscriptionStauts(subscription);
    }
+   }
 
    public void modifyFormat(int userId, int newsletterId, String format) {
+      log.debug("User " + userId + " modify format of newsletter " + 
newsletterId + "to " + format);
                Subscription subscription = cao.getSubscription(newsletterId, 
userId);
                subscription.setMimeType(format);
                cao.modifySubscriptionFormat(subscription);             
@@ -155,12 +196,29 @@
                Newsletter newsletter = new Newsletter();
                newsletter.setId(newsletterId);
                subscription.setNewsletter(newsletter);
-               subscription.setMimeType("html");
-               subscription.setStatus(Subscription.STATUS.ACTIVE);
-               cao.addSubscriptionRecord(subscription,userId); 
+      subscription.setMimeType("text/html");
+      subscription.setStatus(STATUS.ACTIVE);
+      cao.addSubscriptionRecord(subscription, userId);
        }
 
+   public void resume(String subscriptionId) {
+      Subscription subscription = 
cao.getSubscriptionById(Integer.parseInt(subscriptionId));
+      subscription.setStatus(STATUS.ACTIVE);
+      cao.updateSubscription(subscription);
+   }
 
+   public void terminateUserSubscription(String subscriptionId) {
+      Subscription subscription = 
cao.getSubscriptionById(Integer.parseInt(subscriptionId));
+      subscription.setStatus(STATUS.INACTIVE);
+      cao.updateSubscription(subscription);
+   }
        
+   public Subscription getSubscription(String sId) {
+      int id = Integer.parseInt(sId);
+      return cao.getSubscriptionById(id);
+   }
        
+   public List<Subscription> getActiveSubscription(int userId) {
+      return cao.getSubscriptionByUserIdAndStatus(userId,STATUS.ACTIVE); 
+   }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to