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

Modified Files:
      Tag: b1_5
        NewsletterRegistrationPortlet.java 
Log Message:
CMSC-1357


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/portlets/newsletter
See also: http://www.mmbase.org/jira/browse/CMSC-1357


Index: NewsletterRegistrationPortlet.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/portlets/newsletter/NewsletterRegistrationPortlet.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- NewsletterRegistrationPortlet.java  6 Apr 2009 13:09:09 -0000       1.1.2.1
+++ NewsletterRegistrationPortlet.java  9 Apr 2009 11:58:29 -0000       1.1.2.2
@@ -1,6 +1,9 @@
 package com.finalist.portlets.newsletter;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
@@ -15,6 +18,7 @@
 import com.finalist.cmsc.portalImpl.PortalConstants;
 import com.finalist.cmsc.portlets.RegisterPortlet;
 import com.finalist.cmsc.services.community.ApplicationContextFactory;
+import com.finalist.newsletter.domain.Subscription;
 import com.finalist.newsletter.services.NewsletterSubscriptionServices;
 
 /**
@@ -66,19 +70,25 @@
                .getBean("subscriptionServices");
          Long subscriberId = (Long) 
request.getAttribute(AUTHENTICATION_ID_KEY);
          if (subscriberId != null) {
-            // subscriber is new otherwise an errormessage is given so we can
-            // add all subscriptions
+                // subscribe to new newsletters, ignore existing ones, don't 
remove any other
             String[] newsletters = preferences.getValues(ALLOWED_NEWSLETTERS, 
null);
-            if (newsletters != null) {
-               for (String newsletterId : newsletters) {
-                  // FIXME long is used for authenticationId and int for
-                  // subscriptions
+                if (newsletters != null && newsletters.length > 0) {
+                    List<String> newslettersList = Arrays.asList(newsletters);
+                    List<Subscription> subscriptions = 
services.getSubscriptions(newsletters, subscriberId.intValue());
+                    List<String> existingNewsletters = new ArrayList<String>();
+                    for (Subscription sub : subscriptions) {
+                        String newsletterId = 
String.valueOf(sub.getNewsletter().getId());
+                        existingNewsletters.add(newsletterId);
+                    }
+                    for (String newsletterId : newslettersList) {
+                        if (!existingNewsletters.contains(newsletterId)) {
                   services.addNewRecord(subscriberId.intValue(), 
Integer.valueOf(newsletterId));
                }
             }
          }
       }
    }
+    }
 
    @Override
    protected String getTemplate(String key) {
@@ -92,4 +102,8 @@
       return super.getTemplate(key);
    }
    
+    @Override
+    protected boolean isExistingUserAllowed() {
+        return true;
+    }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to