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