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