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

Reply via email to