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

Modified Files:
        SubscriptionImportExportAction.java 
        NewsletterStatisticAction.java 
        SubscriptioManagementAction.java 
Added Files:
        SubscriptionImportUploadForm.java 
Log Message:
CMSC-888 fix.


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


SubscriptionImportUploadForm.java is new



Index: SubscriptionImportExportAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms/SubscriptionImportExportAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SubscriptionImportExportAction.java 5 May 2008 02:40:11 -0000       1.1
+++ SubscriptionImportExportAction.java 7 May 2008 02:54:40 -0000       1.2
@@ -3,7 +3,9 @@
 import com.finalist.cmsc.services.community.person.Person;
 import com.finalist.newsletter.domain.Subscription;
 import com.finalist.newsletter.domain.Term;
+import com.finalist.newsletter.domain.Newsletter;
 import com.finalist.newsletter.services.NewsletterSubscriptionServices;
+import com.finalist.newsletter.services.NewsletterService;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 import org.apache.commons.logging.Log;
@@ -11,6 +13,7 @@
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
+import org.apache.struts.upload.FormFile;
 import org.springframework.web.struts.DispatchActionSupport;
 
 import javax.servlet.http.HttpServletRequest;
@@ -24,10 +27,12 @@
    private static Log log = 
LogFactory.getLog(SubscriptionImportExportAction.class);
 
    NewsletterSubscriptionServices subscriptionServices;
+   NewsletterService newsletterService;
 
    protected void onInit() {
       super.onInit();
-      subscriptionServices = (NewsletterSubscriptionServices) 
getWebApplicationContext().getBean("newsletterSubscriptionServices");
+      subscriptionServices = (NewsletterSubscriptionServices) 
getWebApplicationContext().getBean("subscriptionServices");
+      newsletterService = (NewsletterService) 
getWebApplicationContext().getBean("newsletterServices");
    }
 
    public ActionForward export(ActionMapping mapping, ActionForm form,
@@ -47,7 +52,14 @@
       else if ("newsletter".equals(type)) {
          String[] newsletterIds = request.getParameterValues("newsletterIds");
          for (String newsletterid : newsletterIds) {
-            List<Subscription> s = 
subscriptionServices.getSubscriptionsByNewsletterId(Integer.parseInt(newsletterid));
+            List<Subscription> s = 
subscriptionServices.getSubscriptionsByNewsletterId(newsletterid);
+            subscriptions.addAll(s);
+         }
+      }
+      else if ("person".equals(type)) {
+         String[] newsletterIds = request.getParameterValues("userId");
+         for (String newsletterid : newsletterIds) {
+            List<Subscription> s = 
subscriptionServices.getSubscriptionBySubscriber(newsletterid);
             subscriptions.addAll(s);
          }
       }
@@ -56,7 +68,7 @@
       }
 
 
-      String xml = convertToXML(subscriptions);
+      String xml = getXStream().toXML(subscriptions);
       byte[] bytes = xml.getBytes();
 
       response.setContentType("text/xml");
@@ -73,6 +85,40 @@
       return mapping.findForward(null);
    }
 
+
+   public ActionForward importsubscription(ActionMapping mapping, ActionForm 
form,
+                                           HttpServletRequest request, 
HttpServletResponse response)
+         throws IOException {
+      SubscriptionImportUploadForm myForm = (SubscriptionImportUploadForm) 
form;
+
+      FormFile myFile = myForm.getDatafile();
+      byte[] fileData = myFile.getFileData();
+
+      String xml = new String(fileData);
+
+      List<Subscription> subscriptionList = (List<Subscription>) 
getXStream().fromXML(xml);
+
+      for(Subscription subscription : subscriptionList){
+         Person subscrier = subscription.getSubscriber();
+            int sbId = subscrier.getId().intValue();
+            int nId = subscription.getNewsletter().getId();
+
+         if(null==subscriptionServices.getSubscription(sbId,nId)){
+
+
+
+            log.debug(String.format("try to import user %s's subscription of 
%s which is not exist",sbId,nId));
+
+            subscriptionServices.addNewRecord(sbId, nId);
+         }
+      }
+
+      return mapping.findForward("import_success");
+   }
+
+
+
+
    private String convertToXML(List<Subscription> subscriptions) {
       String xml;
       XStream xstream = new XStream(new DomDriver());
@@ -83,4 +129,12 @@
       xml = xstream.toXML(subscriptions);
       return xml;
    }
+
+   private XStream getXStream() {
+      XStream xstream = new XStream(new DomDriver());
+      xstream.alias("person", Person.class);
+      xstream.alias("subscription", Subscription.class);
+      xstream.alias("term", Term.class);
+      return xstream;
+   }
 }


Index: NewsletterStatisticAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms/NewsletterStatisticAction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- NewsletterStatisticAction.java      24 Apr 2008 09:21:02 -0000      1.3
+++ NewsletterStatisticAction.java      7 May 2008 02:54:40 -0000       1.4
@@ -4,6 +4,8 @@
 import com.finalist.newsletter.domain.StatisticResult;
 import com.finalist.newsletter.services.*;
 import com.finalist.newsletter.util.DateUtil;
+import com.finalist.newsletter.ApplicationContextFactory;
+
 import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -20,8 +22,7 @@
                        HttpServletRequest request, HttpServletResponse 
response)
                        throws Exception {
                
-               NewsletterService newsletterService = NewsletterServiceFactory
-                               .getNewsletterService();
+               NewsletterService newsletterService = (NewsletterService) 
ApplicationContextFactory.getBean("newsletterServices");
                List<Newsletter> newsletters = 
newsletterService.getAllNewsletter();
 
                addBlankNewsletter(newsletters);
@@ -35,10 +36,8 @@
                        HttpServletRequest request, HttpServletResponse 
response)
                        throws Exception {
 
-               NewsletterService newsletterService = NewsletterServiceFactory
-                               .getNewsletterService();
-               StatisticService service = NewsletterServiceFactory
-                               .getStatisticService();
+               NewsletterService newsletterService = (NewsletterService) 
ApplicationContextFactory.getBean("newsletterServices");
+               StatisticService service = 
NewsletterServiceFactory.getStatisticService();
                List<Newsletter> newsletters = 
newsletterService.getAllNewsletter();
                addBlankNewsletter(newsletters);
                request.setAttribute("newsletters", newsletters);
@@ -104,7 +103,7 @@
 
                for (StatisticResult s : records) {
                        s.setShowingdate(DateUtil.parser(s.getLogdate()));
-                       
s.setName(newsletterService.getNewsletterName(s.getNewsletterId()));
+                       
s.setName(newsletterService.getNewsletterName(Integer.toString(s.getNewsletterId())));
                }
 
        }


Index: SubscriptioManagementAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms/SubscriptioManagementAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SubscriptioManagementAction.java    5 May 2008 02:40:11 -0000       1.1
+++ SubscriptioManagementAction.java    7 May 2008 02:54:40 -0000       1.2
@@ -1,6 +1,7 @@
 package com.finalist.newsletter.forms;
 
 import com.finalist.cmsc.services.community.person.Person;
+import com.finalist.cmsc.services.community.person.PersonService;
 import com.finalist.newsletter.domain.Newsletter;
 import com.finalist.newsletter.domain.Subscription;
 import com.finalist.newsletter.services.*;
@@ -14,10 +15,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class SubscriptioManagementAction extends DispatchActionSupport {
 
@@ -26,11 +24,13 @@
    NewsletterService newsletterService;
    NewsletterSubscriptionServices subscriptionServices;
    NewsletterPublicationService publicationService;
+   PersonService personServices;
 
    protected void onInit() {
       super.onInit();
       newsletterService = (NewsletterService) 
getWebApplicationContext().getBean("newsletterServices");
-      subscriptionServices = (NewsletterSubscriptionServices) 
getWebApplicationContext().getBean("newsletterSubscriptionServices");
+      subscriptionServices = (NewsletterSubscriptionServices) 
getWebApplicationContext().getBean("subscriptionServices");
+      personServices = (PersonService) 
getWebApplicationContext().getBean("personService");
       publicationService = 
NewsletterServiceFactory.getNewsletterPublicationService();
    }
 
@@ -51,7 +51,87 @@
 
       List<Newsletter> newsletters;
 
-      String title = request.getParameter("query_parameter_title");
+      String title = request.getParameter("title");
+      String subscriber = request.getParameter("subscriber");
+
+      newsletters = newsletterService.getNewsletters(subscriber, title);
+
+      List<Map> results = convertToMap(newsletters);
+
+      request.setAttribute("results", results);
+      return mapping.findForward("newsletteroverview");
+
+   }
+
+   public ActionForward listSubscription(ActionMapping mapping, ActionForm 
form,
+                                         HttpServletRequest request, 
HttpServletResponse response) {
+
+      String name = request.getParameter("name");
+      String email = request.getParameter("email");
+      String newsletterid = request.getParameter("newsletterId");
+
+      log.debug(String.format("List all Subscriptions of Newsletter %s", 
newsletterid));
+
+      List<Subscription> subscriptions;
+
+      if (StringUtils.isNotBlank(name) || StringUtils.isNotBlank(email)) {
+         subscriptions = new 
ArrayList(subscriptionServices.getSubscriptions(newsletterid, name, email));
+      }
+      else {
+         subscriptions = 
subscriptionServices.getSubscriptionsByNewsletterId(newsletterid);
+      }
+      List<Map<String, String>> results = 
convertSubscriptionsToMap(subscriptions);
+      request.setAttribute("results", results);
+      request.setAttribute("newsletter", 
newsletterService.getNewsletterName(newsletterid));
+
+      return mapping.findForward("newsletterdetail");
+   }
+
+   public ActionForward listSubscriptionByPerson(ActionMapping mapping, 
ActionForm form,
+                                         HttpServletRequest request, 
HttpServletResponse response) {
+
+      String name = request.getParameter("name");
+      String email = request.getParameter("email");
+      String subsriberId = request.getParameter("subsriberId");
+
+      log.debug(String.format("List all Subscriptions of person %s", 
subsriberId));
+
+      List<Subscription> subscriptions;
+
+      if (StringUtils.isNotBlank(name) || StringUtils.isNotBlank(email)) {
+         subscriptions = new 
ArrayList(subscriptionServices.getSubscriptions(subsriberId, name, email));
+      }
+      else {
+         subscriptions = 
subscriptionServices.getSubscriptionBySubscriber(subsriberId);
+      }
+      List<Map<String, String>> results = 
convertSubscriptionsToMap(subscriptions);
+      request.setAttribute("results", results);
+
+      return mapping.findForward("ubscriber_subscriptions");
+   }
+
+   private List convertSubscriptionsToMap(List<Subscription> subscriptions) {
+
+      List<Map> results = new ArrayList<Map>();
+      for (Subscription subscription1 : subscriptions) {
+         Map result = new HashMap();
+         Subscription subscription = subscription1;
+         result.put("id", subscription.getId());
+         result.put("status",subscription.getStatus().toString());
+         
result.put("newsletter",newsletterService.getNewsletterBySubscription(subscription.getId()).getTitle());
+         results.add(result);
+      }
+      return results;
+   }
+
+   public ActionForward listNewsletter(ActionMapping mapping, ActionForm form,
+                                       HttpServletRequest request, 
HttpServletResponse response) {
+      log.debug("Show newsletters");
+
+      List<Newsletter> newsletters;
+
+      String title = request.getParameter("title");
+
       if (StringUtils.isBlank(title)) {
          newsletters = newsletterService.getAllNewsletter();
       }
@@ -66,22 +146,47 @@
 
    }
 
-   public ActionForward newsletterDetail(ActionMapping mapping, ActionForm 
form,
+   public ActionForward listSubscribers(ActionMapping mapping, ActionForm form,
                                          HttpServletRequest request, 
HttpServletResponse response) {
-      String newsletterid = request.getParameter("nesletterId");
-      log.debug(String.format("Show Newsletter %s's detail", newsletterid));
+      log.debug("Show persons who have newsletter subscription");
+
+
+      String name = request.getParameter("name");
+      String email = request.getParameter("email");
 
-      String name = request.getParameter("query_parameter_name");
-      String email = request.getParameter("query_parameter_email");
+      List<Person> persons;
+      if (StringUtils.isNotBlank(name) || StringUtils.isNotBlank(email)) {
+         persons = subscriptionServices.getAllSubscribers(name, email);
+      }
+      else {
+         persons = subscriptionServices.getAllSubscribers();
+      }
 
-      int newsletterId = Integer.parseInt(newsletterid);
-      List<Subscription> subscriptions = 
subscriptionServices.getSubscriptionsByNewsletterId(newsletterId);
-      List<Map<String, String>> results = convertToMap(name, email, 
subscriptions);
+      List results = convertPersonsToMap(persons);
 
       request.setAttribute("results", results);
-      request.setAttribute("newsletter", 
newsletterService.getNewsletterName(newsletterId));
+      return mapping.findForward("listsubscribers");
+   }
 
-      return mapping.findForward("newsletterdetail");
+   public ActionForward showImportPage(ActionMapping mapping, ActionForm form,
+                                       HttpServletRequest request, 
HttpServletResponse response) {
+      log.debug("Show import page");
+      return mapping.findForward("importpage");
+
+   }
+
+   private List<Map> convertPersonsToMap(List<Person> persons) {
+      List<Map> results = new ArrayList<Map>();
+      for (int i = 0; i < persons.size(); i++) {
+         Map result = new HashMap();
+         Person person = persons.get(i);
+         result.put("id", person.getId());
+         result.put("username", person.getNickname());
+         result.put("email", person.getEmail());
+         result.put("fullname", person.getLastName() + " " + 
person.getFirstName());
+         results.add(result);
+      }
+      return results;
    }
 
    private List<Map> convertToMap(List<Newsletter> newsletters) {
@@ -99,7 +204,7 @@
       return results;
    }
 
-   private List<Map<String, String>> convertToMap(String name, String email, 
List<Subscription> subscriptions) {
+   private List<Map<String, String>> convertToMap(String name, String email, 
Set<Subscription> subscriptions) {
       List<Map<String, String>> results = new ArrayList<Map<String, String>>();
       for (Subscription subscription : subscriptions) {
          Person person = 
CommunityModuleAdapter.getUserById(subscription.getSubscriberId());
@@ -108,7 +213,7 @@
          Map result = new HashMap();
          if (sameName && sameemail) {
 
-            result.put("id", Integer.toString(subscription.getId()));
+            result.put("id", person.getId());
             result.put("username", person.getNickname());
             result.put("email", person.getEmail());
             result.put("fullname", person.getLastName() + "" + 
person.getFirstName());
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to