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

Modified Files:
        NewsletterServiceImpl.java 
        NewsletterSubscriptionServicesImpl.java 
Log Message:
CMSC-888 fix.


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-888


Index: NewsletterServiceImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/services/impl/NewsletterServiceImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- NewsletterServiceImpl.java  5 May 2008 02:40:11 -0000       1.3
+++ NewsletterServiceImpl.java  7 May 2008 02:54:40 -0000       1.4
@@ -1,28 +1,39 @@
 package com.finalist.newsletter.services.impl;
 
 import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.ArrayList;
 
 import com.finalist.newsletter.cao.NewsletterCAO;
+import com.finalist.newsletter.cao.NewsletterSubscriptionCAO;
 import com.finalist.newsletter.domain.Newsletter;
+import com.finalist.newsletter.domain.Subscription;
 import com.finalist.newsletter.services.NewsletterService;
+import com.finalist.newsletter.services.NewsletterSubscriptionServices;
 import org.mmbase.bridge.NodeManager;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 public class NewsletterServiceImpl implements NewsletterService {
 
-   NewsletterCAO newsletterCAO;
-
-   public NewsletterServiceImpl() {
-
-   }
+   private static Log log = LogFactory.getLog(NewsletterServiceImpl.class);
 
-   public NewsletterServiceImpl(NewsletterCAO newsletterCAO) {
+   NewsletterCAO newsletterCAO;
+   NewsletterSubscriptionCAO subscriptionCAO;
+   NewsletterSubscriptionServices subscriptionServices;
 
+   public void setNewsletterCAO(NewsletterCAO newsletterCAO) {
       this.newsletterCAO = newsletterCAO;
    }
 
-   public void setNewsletterCAO(NewsletterCAO newsletterCAO) {
+   public void setSubscriptionCAO(NewsletterSubscriptionCAO subscriptionCAO) {
+      this.subscriptionCAO = subscriptionCAO;
+   }
 
-      this.newsletterCAO = newsletterCAO;
+   public void setSubscriptionServices(NewsletterSubscriptionServices 
subscriptionServices) {
+      this.subscriptionServices = subscriptionServices;
    }
 
    public List<Newsletter> getAllNewsletter() {
@@ -30,9 +41,14 @@
       return newsletterCAO.getNewsletterByConstraint(null, null, null);
    }
 
-   public String getNewsletterName(int newsletterId) {
+   public String getNewsletterName(String newsletterId) {
+      String name = "";
+
+      if (StringUtils.isNotBlank(newsletterId)) {
+         name =  
newsletterCAO.getNewsletterById(Integer.parseInt(newsletterId)).getTitle();
+      }
 
-      return newsletterCAO.getNewsletterById(newsletterId).getTitle();
+      return name;
    }
 
    public int countAllNewsletters() {
@@ -44,6 +60,9 @@
    }
 
    public List<Newsletter> getNewslettersByTitle(String title) {
+
+      log.debug(String.format("Get newsletter by title %s", title));
+
       return newsletterCAO.getNewsletterByConstraint("title", "like", title);
    }
 
@@ -52,5 +71,33 @@
        return newsletterCAO.getNewsletterById(newsletterId);
    }
 
+   public List<Newsletter> getNewsletters(String subscriber, String title) {
+
+      log.debug(String.format("Get Newsletters by subscriber %s and title %s", 
subscriber, title));
+
+      boolean sc = StringUtils.isNotBlank(subscriber);
+      boolean tc = StringUtils.isNotBlank(title);
+
+      if (sc && tc) {
+         return getAllNewsletterBySubscriberAndTitle(subscriber, title);
+      }
+      else if (sc && !tc) {
+         return getAllNewsletterBySubscriber(subscriber);
+      }
+      else if (tc) {
+         return getNewslettersByTitle(title);
+      }
+      else {
+         return getAllNewsletter();
+      }
+   }
+
+   private List<Newsletter> getAllNewsletterBySubscriber(String subscriber) {
+      return null;
+   }
+
+   private List<Newsletter> getAllNewsletterBySubscriberAndTitle(String 
subscriber, String title) {
+      return null;
+   }
 
 }


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.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- NewsletterSubscriptionServicesImpl.java     5 May 2008 02:40:11 -0000       
1.12
+++ NewsletterSubscriptionServicesImpl.java     7 May 2008 02:54:40 -0000       
1.13
@@ -4,6 +4,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.commons.lang.StringUtils;
 import org.mmbase.bridge.Node;
 
 import com.finalist.newsletter.cao.NewsletterCAO;
@@ -16,19 +17,17 @@
 import com.finalist.newsletter.services.NewsletterService;
 import com.finalist.newsletter.util.DateUtil;
 import com.finalist.newsletter.util.NewsletterSubscriptionUtil;
+import com.finalist.cmsc.services.community.person.PersonService;
+import com.finalist.cmsc.services.community.person.Person;
 
 public class NewsletterSubscriptionServicesImpl implements 
NewsletterSubscriptionServices {
 
-   NewsletterSubscriptionCAO subscriptinCAO;
-   NewsletterCAO newsletterCAO;
-   NewsletterService newsletterService;
-
    private static Log log = 
LogFactory.getLog(NewsletterSubscriptionServicesImpl.class);
 
-   public void setSubscriptinCAO(NewsletterSubscriptionCAO subscriptinCAO) {
-      this.subscriptinCAO = subscriptinCAO;
-
-   }
+   NewsletterSubscriptionCAO subscriptionCAO;
+   NewsletterCAO newsletterCAO;
+   NewsletterService newsletterService;
+   PersonService personService;
 
    public void setNewsletterCAO(NewsletterCAO newsletterCAO) {
       this.newsletterCAO = newsletterCAO;
@@ -38,21 +37,29 @@
       this.newsletterService = newsletterService;
    }
 
+   public void setPersonService(PersonService personService) {
+      this.personService = personService;
+   }
+
+   public void setSubscriptionCAO(NewsletterSubscriptionCAO subscriptionCAO) {
+      this.subscriptionCAO = subscriptionCAO;
+   }
+
    public List<Subscription> getSubscriptionList(String[] allowedLetters, int 
userId) {
 
       List<Subscription> subscriptionList = new ArrayList<Subscription>();
-      int newsletterId;
-      for (int i = 0; i < allowedLetters.length; i++) {
-         newsletterId = Integer.parseInt(allowedLetters[i]);
-         subscriptionList.add(getSubscription(newsletterId, userId));
+      for (String allowedLetter : allowedLetters) {
+         subscriptionList.add(getSubscription(allowedLetter, 
Integer.toString(userId)));
       }
       return subscriptionList;
    }
 
-   private Subscription getSubscription(int newsletterId, int userId) {
+   private Subscription getSubscription(String newsletterId, String userId) {
+      int nId = Integer.parseInt(newsletterId);
+      int uId = Integer.parseInt(userId);
 
-      Subscription subscription = subscriptinCAO.getSubscription(newsletterId, 
userId);
-      Newsletter newsletter = newsletterCAO.getNewsletterById(newsletterId);
+      Subscription subscription = subscriptionCAO.getSubscription(nId, uId);
+      Newsletter newsletter = newsletterCAO.getNewsletterById(nId);
 
       if (subscription == null) {
          subscription = new Subscription();
@@ -93,7 +100,7 @@
    public void changeStatus(int userId, int newsletterId) {
       log.debug(String.format("user % change subscribe status on %s", userId, 
newsletterId));
 
-      Subscription subscription = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
 
       if (STATUS.ACTIVE.equals(subscription.getStatus())) {
          subscription.setStatus(STATUS.INACTIVE);
@@ -101,11 +108,11 @@
       else {
          subscription.setStatus(STATUS.ACTIVE);
       }
-      subscriptinCAO.modifySubscriptionStauts(subscription);
+      subscriptionCAO.modifySubscriptionStauts(subscription);
    }
 
    public void pause(String subscriptionId, String duration, String 
durationunit) {
-      Subscription subscription = 
subscriptinCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
+      Subscription subscription = 
subscriptionCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
 
       subscription.setStatus(STATUS.PAUSED);
       if (null != duration) {
@@ -113,7 +120,7 @@
          subscription.setPausedTill(date);
       }
 
-      subscriptinCAO.updateSubscription(subscription);
+      subscriptionCAO.updateSubscription(subscription);
    }
 
 
@@ -121,7 +128,7 @@
 
       log.debug(String.format("Pasue subscription %s till %s", subscriptionId, 
resumeDate));
 
-      Subscription subscription = 
subscriptinCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
+      Subscription subscription = 
subscriptionCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
 
       subscription.setStatus(STATUS.PAUSED);
       if (null != resumeDate) {
@@ -129,13 +136,13 @@
          subscription.setPausedTill(date);
       }
 
-      subscriptinCAO.updateSubscription(subscription);
+      subscriptionCAO.updateSubscription(subscription);
    }
 
 
    public boolean hasSubscription(int userId) {
 
-      List<Node> list = subscriptinCAO.querySubcriptionByUser(userId);
+      List<Node> list = subscriptionCAO.querySubcriptionByUser(userId);
       if (0 == list.size()) {
          return false;
       }
@@ -146,7 +153,7 @@
 
    public void selectTermInLetter(int userId, int newsletterId, int termId) {
       log.debug("Add term " + termId + " to user" + userId + "'s newsletter:" 
+ newsletterId);
-      Subscription subscription = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
       Set<Term> termList = subscription.getTerms();
       Iterator it = termList.iterator();
       for (int i = 0; i < termList.size(); i++) {
@@ -155,13 +162,13 @@
             term.setSubscription(true);
          }
       }
-      subscriptinCAO.addSubscriptionTerm(subscription, termId);
+      subscriptionCAO.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 = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
       Set<Term> termList = subscription.getTerms();
       Iterator it = termList.iterator();
       for (int i = 0; i < termList.size(); i++) {
@@ -170,31 +177,31 @@
             term.setSubscription(false);
          }
       }
-      subscriptinCAO.removeSubscriptionTerm(subscription, termId);
+      subscriptionCAO.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 = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
 
       if (null == subscription) {
-         subscriptinCAO.createSubscription(userId, newsletterId);
+         subscriptionCAO.createSubscription(userId, newsletterId);
       }
       else {
          subscription.setStatus(STATUS.valueOf(status));
-         subscriptinCAO.modifySubscriptionStauts(subscription);
+         subscriptionCAO.modifySubscriptionStauts(subscription);
       }
    }
 
    public void modifyFormat(int userId, int newsletterId, String format) {
       log.debug("User " + userId + " modify format of newsletter " + 
newsletterId + "to " + format);
-      Subscription subscription = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
       subscription.setMimeType(format);
-      subscriptinCAO.modifySubscriptionFormat(subscription);
+      subscriptionCAO.modifySubscriptionFormat(subscription);
    }
 
    public boolean noSubscriptionRecord(int userId, int newsletterId) {
-      Subscription subscription = subscriptinCAO.getSubscription(newsletterId, 
userId);
+      Subscription subscription = 
subscriptionCAO.getSubscription(newsletterId, userId);
       return subscription == null;
    }
 
@@ -205,28 +212,28 @@
       subscription.setNewsletter(newsletter);
       subscription.setMimeType("text/html");
       subscription.setStatus(STATUS.ACTIVE);
-      subscriptinCAO.addSubscriptionRecord(subscription, userId);
+      subscriptionCAO.addSubscriptionRecord(subscription, userId);
    }
 
    public void resume(String subscriptionId) {
-      Subscription subscription = 
subscriptinCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
+      Subscription subscription = 
subscriptionCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
       subscription.setStatus(STATUS.ACTIVE);
-      subscriptinCAO.updateSubscription(subscription);
+      subscriptionCAO.updateSubscription(subscription);
    }
 
    public void terminateUserSubscription(String subscriptionId) {
-      Subscription subscription = 
subscriptinCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
+      Subscription subscription = 
subscriptionCAO.getSubscriptionById(Integer.parseInt(subscriptionId));
       subscription.setStatus(STATUS.INACTIVE);
-      subscriptinCAO.updateSubscription(subscription);
+      subscriptionCAO.updateSubscription(subscription);
    }
 
    public Subscription getSubscription(String sId) {
       int id = Integer.parseInt(sId);
-      return subscriptinCAO.getSubscriptionById(id);
+      return subscriptionCAO.getSubscriptionById(id);
    }
 
    public List<Subscription> getActiveSubscription(int userId) {
-      return 
subscriptinCAO.getSubscriptionByUserIdAndStatus(userId,STATUS.ACTIVE);
+      return subscriptionCAO.getSubscriptionByUserIdAndStatus(userId, 
STATUS.ACTIVE);
    }
 
    public int countAllSubscriptions() {
@@ -234,11 +241,11 @@
    }
 
    public int countSubscriptionByNewsletter(int id) {
-      return subscriptinCAO.getSubscription(id).size();
+      return subscriptionCAO.getSubscription(id).size();
    }
 
    public List<Subscription> getAllSubscription() {
-      List<Node> subscriptionNodes = subscriptinCAO.getAllSubscriptions();
+      List<Node> subscriptionNodes = subscriptionCAO.getAllSubscriptions();
 
       List<Subscription> subscriptions = new ArrayList<Subscription>();
 
@@ -251,8 +258,88 @@
       return subscriptions;
    }
 
-   public List<Subscription> getSubscriptionsByNewsletterId(int i) {
-      log.debug("Get all subscriptions of newsletter "+i);
-      return subscriptinCAO.getSubscription(i);
+
+
+   public List<Subscription> getSubscriptionsByNewsletterId(String i) {
+      log.debug("Get all subscriptions of newsletter " + i);
+      return subscriptionCAO.getSubscription(Integer.parseInt(i));
+   }
+
+   public Set<Subscription> getSubscriptions(String newsletterId, String name, 
String email) {
+      Set<String> personIds = getPersonIdSet(name, email);
+
+      Set<Subscription> result = new HashSet<Subscription>();
+
+      System.out.printf("---------------"+personIds.size());
+
+      for (Subscription subscription : 
getSubscriptionsByNewsletterId(newsletterId)) {
+         if(personIds.contains(subscription.getSubscriberId())){
+            result.add(subscription);
+         }
+      }
+
+      return result;
+   }
+
+   private Set<String> getPersonIdSet(String name, String email) {
+      Set<String> personIds = new HashSet<String>();
+
+      Person person = new Person();
+      if (StringUtils.isNotBlank(name)) {
+         person.setLastName(name);
+      }
+
+      if (StringUtils.isNotBlank(email)) {
+         person.setEmail(email);
+      }
+
+      List<Person> persons = personService.getLikePersons(person);
+      for (Person p : persons) {
+         personIds.add(p.getId().toString());
+      }
+
+      return personIds;
+   }
+
+   public List<Person> getAllSubscribers() {
+
+      List<Person> persons = personService.getAllPersons();
+      removeNoneSubscribers(persons);
+      return persons;
+   }
+
+   private void removeNoneSubscribers(List<Person> persons) {
+      for (int i = 0; i < persons.size(); i++) {
+         Person person = persons.get(i);
+         List subscrioptions = 
subscriptionCAO.getSubscriptionByUserIdAndStatus(person.getId().intValue(), 
null);
+         if (subscrioptions.size() < 1) {
+            persons.remove(i);
+         }
+      }
+   }
+
+   public List<Person> getAllSubscribers(String name, String email) {
+
+      Person person = new Person();
+      if (StringUtils.isNotBlank(name)) {
+         person.setLastName(name);
+      }
+
+      if (StringUtils.isNotBlank(email)) {
+         person.setEmail(email);
+      }
+
+      List<Person> persons = personService.getLikePersons(person);
+      removeNoneSubscribers(persons);
+
+      return persons;
+   }
+
+   public List<Subscription> getSubscriptionBySubscriber(String newsletterid) {
+      return 
subscriptionCAO.getSubscriptionByUserIdAndStatus(Integer.parseInt(newsletterid),null);
+   }
+
+   public Subscription getSubscription(int userId, int newsletterId) {
+      return subscriptionCAO.getSubscription(newsletterId,userId);
    }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to