Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/portlets/newsletter
In directory
james.mmbase.org:/tmp/cvs-serv26312/portlets-newsletter/src/java/com/finalist/portlets/newsletter
Modified Files:
NewsletterSubscriptionPortlet.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/portlets/newsletter
See also: http://www.mmbase.org/jira/browse/CMSC-818
Index: NewsletterSubscriptionPortlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/portlets/newsletter/NewsletterSubscriptionPortlet.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- NewsletterSubscriptionPortlet.java 25 Apr 2008 18:18:34 -0000 1.24
+++ NewsletterSubscriptionPortlet.java 3 May 2008 14:38:57 -0000 1.25
@@ -2,23 +2,21 @@
import com.finalist.cmsc.portalImpl.PortalConstants;
import com.finalist.cmsc.portlets.JspPortlet;
-import com.finalist.cmsc.services.community.person.Person;
import com.finalist.newsletter.domain.Subscription;
import com.finalist.newsletter.services.CommunityModuleAdapter;
import com.finalist.newsletter.services.NewsletterServiceFactory;
import com.finalist.newsletter.services.NewsletterSubscriptionServices;
-import com.finalist.newsletter.util.NewsletterSubscriptionUtil;
-import com.finalist.newsletter.util.NewsletterUtil;
-import org.apache.pluto.core.impl.PortletConfigImpl;
+import org.apache.commons.lang.StringUtils;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
import javax.portlet.*;
-import javax.servlet.ServletContext;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
+import java.util.ArrayList;
public class NewsletterSubscriptionPortlet extends JspPortlet {
-
+ private static Logger log =
Logging.getLoggerInstance(NewsletterSubscriptionPortlet.class.getName());
private static final String HAS_SUBSCRIPTIONS = "hassubscriptions";
private static final String NEWSLETTERSUBSCRIPTIONS =
"newslettersubscriptions";
private static final String ACTION_SUBSCRIBE = "subscribe";
@@ -40,54 +38,66 @@
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
- PortletSession session = request.getPortletSession(true);
PortletPreferences preferences = request.getPreferences();
+ NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
+ int userId = CommunityModuleAdapter.getCurrentUserId();
String[] newsletters = preferences.getValues(ALLOWED_NEWSLETTERS, null);
- NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
+ if (!CommunityModuleAdapter.isUserLogin() ||
+ (services.getActiveSubscription(userId).size()<1 && null ==
request.getParameter("action"))) {
+ request.setAttribute("isUserLogin",
CommunityModuleAdapter.isUserLogin());
+ doInclude("view", "/newsletter/subscription/introduction.jsp",
request, response);
+ return;
+ }
+
+ String action = request.getParameter("action");
+ log.debug(String.format("User %s start a subscribe with action %s",
userId, action));
- Person currentUser = CommunityModuleAdapter.getCurrentUser();
+ if ("pause".equals(action)) {
+ log.debug("Paused subscriptions ,need confrim");
- if (null == currentUser) {
- doInclude("view", "/fragment/pleaselogin.jsp", request, response);
+ List<Subscription> subscriptionsToBePause =
getSubscriptionsFromParameter(request,Subscription.STATUS.ACTIVE);
+ request.setAttribute("subscriptionsToBePause",
subscriptionsToBePause);
+ doInclude("view", "/newsletter/subscription/pauseform.jsp", request,
response);
+ return;
}
- else {
- int userId = currentUser.getId().intValue();
+ else if ("resume".equals(action)) {
+ log.debug("Resume paused subscriptions ,need confrim");
- if (null == newsletters) {
- doInclude("view", "/fragment/null.jsp", request, response);
+ List<Subscription> subscriptionsToBeResume =
getSubscriptionsFromParameter(request, Subscription.STATUS.PAUSED);
+ request.setAttribute("subscriptionsToBeResume",
subscriptionsToBeResume);
+ doInclude("view", "/newsletter/subscription/confirmResume.jsp",
request, response);
+ return;
}
- else if (services.hasSubscription(userId)) {
- List<Subscription> subscriptionList =
services.getSubscriptionList(newsletters, userId);
- request.setAttribute("subscriptionList", subscriptionList);
- doInclude("view", "/fragment/list.jsp", request, response);
+ else if ("terminate".equals(action)) {
+ log.debug("Terminate subscriptions ,need confrim");
+
+ List<Subscription> subscriptionsToBeTerminate =
getSubscriptionsFromParameter(request,null);
+
+ request.setAttribute("subscriptionsToBeTerminate",
subscriptionsToBeTerminate);
+ doInclude("view", "/newsletter/subscription/confirmTerminate.jsp",
request, response);
+ return;
}
- else {
- List<Subscription> subscriptionList =
services.getNewSubscription(newsletters);
+
+ List<Subscription> subscriptionList =
services.getSubscriptionList(newsletters, userId);
request.setAttribute("subscriptionList", subscriptionList);
- doInclude("view", "/fragment/welcome.jsp", request, response);
- }
- }
+ doInclude("view", "/newsletter/subscription/subscribe.jsp", request,
response);
+
}
- private String getUserName(PortletSession session) {
- return ((String) session.getAttribute("userName",
PortletSession.APPLICATION_SCOPE));
+ private List<Subscription> getSubscriptionsFromParameter(RenderRequest
request, Subscription.STATUS status) {
+ NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
+ List<Subscription> subscriptions = new ArrayList<Subscription>();
+ if (null != request.getParameterValues("subscriptions")) {
+ for (String sId : request.getParameterValues("subscriptions")) {
+ Subscription subscription = services.getSubscription(sId);
+ if (null==status||status.equals(subscription.getStatus())) {
+ subscriptions.add(services.getSubscription(sId));
}
-
- private boolean isLoggedIn(PortletSession session) {
- String userName = getUserName(session);
- if (userName != null && userName.length() > 0) {
- return (true);
}
- return (false);
}
-
- private void processChangeSubscription(ActionRequest request,
ActionResponse response) {
- PortletSession session = request.getPortletSession();
- String userName = getUserName(session);
- NewsletterSubscriptionUtil.unsubscribeFromAllNewsletters(userName);
- processNewSubscription(request, response);
+ return subscriptions;
}
@Override
@@ -101,75 +111,87 @@
super.processEditDefaults(request, response);
}
- private void processNewSubscription(ActionRequest request, ActionResponse
response) {
- PortletSession session = request.getPortletSession();
- String userName = getUserName(session);
- List<Integer> subscribeToThemes = new ArrayList<Integer>();
- List<Integer> subscribeToNewsletters = new ArrayList<Integer>();
-
- String[] newsletters =
request.getParameterValues(NEWSLETTERSUBSCRIPTIONS);
- if (newsletters != null) {
- List<Integer> newsletterList = new ArrayList<Integer>();
- for (int n = 0; n < newsletters.length; n++) {
- newsletterList.add(Integer.parseInt(newsletters[n]));
- }
- subscribeToNewsletters.addAll(newsletterList);
- }
- String[] themes =
request.getParameterValues(NewsletterSubscriptionUtil.NEWSLETTER_THEME);
- if (themes != null) {
- for (int i = 0; i < themes.length; i++) {
- String theme = themes[i];
- int themeNumber = Integer.parseInt(theme);
- subscribeToThemes.add(themeNumber);
- int newsletterNumber =
NewsletterUtil.findNewsletterForTheme(themeNumber);
- if (newsletterNumber > 0) {
+ @Override
+ public void processView(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
- int defaultTheme =
NewsletterUtil.getDefaultTheme(newsletterNumber);
- if (!subscribeToThemes.contains(defaultTheme)) {
- subscribeToThemes.add(defaultTheme);
- }
- if (!subscribeToNewsletters.contains(newsletterNumber)) {
- subscribeToNewsletters.add(newsletterNumber);
+ String action = request.getParameter("action");
+ log.debug("Process view action:" + action);
+ if (action != null) {
+ response.setWindowState(WindowState.MAXIMIZED);
+ if ("pause".equals(action)) {
+ processPause(request, response);
}
+ else if ("terminate".equals(action)) {
+ processTermination(request, response);
}
+ else if ("resume".equals(action)) {
+ processResume(request, response);
}
}
- NewsletterSubscriptionUtil.subscribeToNewsletters(userName,
subscribeToNewsletters);
- NewsletterSubscriptionUtil.subscribeToThemes(userName,
subscribeToThemes);
- String preferredMimeType =
request.getParameter(NewsletterSubscriptionUtil.PREFERRED_MIMETYPE);
- NewsletterSubscriptionUtil.setPreferredMimeType(userName,
preferredMimeType);
- int status =
Integer.parseInt(request.getParameter(NewsletterSubscriptionUtil.SUBSCRIPTION_STATUS_KEY));
- NewsletterSubscriptionUtil.setSubscriptionStatus(userName, status);
}
private void processTermination(ActionRequest request, ActionResponse
response) {
- PortletSession session = request.getPortletSession();
- String userName = getUserName(session);
+ NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
String confirmation = request.getParameter("confirm_unsubscribe");
+
+ String[] subscriptionIds = request.getParameterValues("subscriptions");
+ log.debug(String.format("Terminate subscription %s confirm:%s",
subscriptionIds, confirmation));
+
if (confirmation != null) {
- NewsletterSubscriptionUtil.terminateUserSubscription(userName);
+ for (String id : subscriptionIds) {
+ services.terminateUserSubscription(id);
+ }
+ }
+ else {
+ response.setRenderParameters(request.getParameterMap());
}
}
- @Override
- public void processView(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
- PortletSession session = request.getPortletSession();
+ private void processResume(ActionRequest request, ActionResponse response) {
+ NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
+ String confirmation = request.getParameter("confirm_resume");
- String action = request.getParameter("action");
+ String[] subscriptionIds = request.getParameterValues("subscriptions");
+ log.debug(String.format("resume subscription %s confirm:%s",
subscriptionIds, confirmation));
- if (isLoggedIn(session) == true) {
- if (action != null) {
- response.setWindowState(WindowState.MAXIMIZED);
- if (action.equals(ACTION_SUBSCRIBE)) {
- processNewSubscription(request, response);
- } else if (action.equals(ACTION_CHANGE)) {
- processChangeSubscription(request, response);
- } else if (action.equals(ACTION_TERMINATE)) {
- processTermination(request, response);
+ if (confirmation != null) {
+ for (String id : subscriptionIds) {
+ services.resume(id);
+ }
+ }
+ else {
+ response.setRenderParameters(request.getParameterMap());
+ }
+ }
+
+ private void processPause(ActionRequest request, ActionResponse response) {
+
+ NewsletterSubscriptionServices services =
NewsletterServiceFactory.getNewsletterSubscriptionServices();
+ String duration = request.getParameter("timeduration");
+ String durationunit = request.getParameter("durationunit");
+ String resumeDate = request.getParameter("resumeDate");
+
+ String confirmation = request.getParameter("confirm_pause");
+
+ String[] subscriptionIds = request.getParameterValues("subscriptions");
+ log.debug(String.format("pause subscription %s confirm:%s",
subscriptionIds, confirmation));
+
+ if (confirmation != null) {
+ for (String id : subscriptionIds) {
+ if (StringUtils.isBlank(resumeDate)) {
+ services.pause(id, duration, durationunit);
+ }
+ else {
+ services.pause(id, resumeDate);
}
}
}
+ else {
+ response.setRenderParameters(request.getParameterMap());
+ }
+
+
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs