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