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

Modified Files:
        NewsletterPublisher.java 
Log Message:
CMSC-709 
After sending the publication to the subscribers, the (localized) date and time 
are added to the title of the publication 



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


Index: NewsletterPublisher.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/publisher/NewsletterPublisher.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- NewsletterPublisher.java    19 Feb 2008 21:13:55 -0000      1.5
+++ NewsletterPublisher.java    8 Mar 2008 14:53:16 -0000       1.6
@@ -1,7 +1,12 @@
 package com.finalist.newsletter.publisher;
 
 import java.io.UnsupportedEncodingException;
+import java.text.DateFormat;
+import java.util.Date;
+
 import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
 
 import javax.mail.Message;
 import javax.mail.MessagingException;
@@ -30,7 +35,8 @@
 
    private static final String UNSENT_NEWSLETTER = "unsent_newsletter";
 
-   private static Logger log = 
Logging.getLoggerInstance(NewsletterPublisher.class.getName());
+   private static Logger log = Logging
+         .getLoggerInstance(NewsletterPublisher.class.getName());
 
    private int publicationNumber;
    private Cloud cloud;
@@ -43,13 +49,17 @@
    private void createConfirmationList(List<String> subscribers) {
       for (int s = 0; s < subscribers.size(); s++) {
          String userName = subscribers.get(s);
-         NewsletterCommunication.setUserPreference(userName, 
UNSENT_NEWSLETTER, String.valueOf(publicationNumber));
+         NewsletterCommunication.setUserPreference(userName, UNSENT_NEWSLETTER,
+               String.valueOf(publicationNumber));
       }
    }
 
-   private Message generateNewsletter(String userName, int publicationNumber, 
String mimeType) {
-      NewsletterGeneratorFactory factory = 
NewsletterGeneratorFactory.getInstance();
-      NewsletterGenerator generator = 
factory.getNewsletterGenerator(publicationNumber, mimeType);
+   private Message generateNewsletter(String userName, int publicationNumber,
+         String mimeType) {
+      NewsletterGeneratorFactory factory = NewsletterGeneratorFactory
+            .getInstance();
+      NewsletterGenerator generator = factory.getNewsletterGenerator(
+            publicationNumber, mimeType);
       if (generator != null) {
          Message message = generator.generateNewsletterMessage(userName);
          return (message);
@@ -58,7 +68,8 @@
    }
 
    private void removeFromConfirmationList(String userName) {
-      NewsletterCommunication.removeUserPreference(userName, 
UNSENT_NEWSLETTER, String.valueOf(publicationNumber));
+      NewsletterCommunication.removeUserPreference(userName, UNSENT_NEWSLETTER,
+            String.valueOf(publicationNumber));
    }
 
    @Override
@@ -67,15 +78,18 @@
    }
 
    private void sendNewsletter(Node publicationNode, String userName) {
-      String mimeType = 
NewsletterSubscriptionUtil.getPreferredMimeType(userName);
-      Message message = generateNewsletter(userName, publicationNumber, 
mimeType);
+      String mimeType = NewsletterSubscriptionUtil
+            .getPreferredMimeType(userName);
+      Message message = generateNewsletter(userName, publicationNumber,
+            mimeType);
 
       try {
          message = setMailHeaders(publicationNode, userName, message);
          Transport.send(message);
          removeFromConfirmationList(userName);
       } catch (MessagingException e) {
-         log.debug("An error occurred while trying to send a newsletter 
e-mail");
+         log
+               .debug("An error occurred while trying to send a newsletter 
e-mail");
          log.debug(e.getMessage());
       } catch (UnsupportedEncodingException e) {
          // TODO Auto-generated catch block
@@ -83,14 +97,17 @@
       }
    }
 
-   private Message setMailHeaders(Node publicationNode, String userName, 
Message message) throws MessagingException, UnsupportedEncodingException {
+   private Message setMailHeaders(Node publicationNode, String userName,
+         Message message) throws MessagingException,
+         UnsupportedEncodingException {
 
       String emailFrom = null;
       String nameFrom = null;
       String emailReplyTo = null;
       String nameReplyTo = null;
 
-      Node newsletterNode = SearchUtil.findRelatedNode(publicationNode, 
"newsletter", "related");
+      Node newsletterNode = SearchUtil.findRelatedNode(publicationNode,
+            "newsletter", "related");
       if (newsletterNode != null) {
          emailFrom = newsletterNode.getStringValue("from_mail");
          nameFrom = newsletterNode.getStringValue("from_name");
@@ -139,7 +156,8 @@
          return (null);
       }
 
-      String userEmail = NewsletterCommunication.getUserPreference(userName, 
"email");
+      String userEmail = NewsletterCommunication.getUserPreference(userName,
+            "email");
       if (userEmail != null && userEmail.length() > 0) {
          InternetAddress toAddress = new InternetAddress(userEmail);
          message.setRecipient(RecipientType.TO, toAddress);
@@ -155,14 +173,20 @@
 
    private void startMassPublishing() {
       Node publicationNode = cloud.getNode(publicationNumber);
-      NodeList newsletterNodeList = 
publicationNode.getRelatedNodes(NewsletterUtil.NEWSLETTER);
+      NodeList newsletterNodeList = publicationNode
+            .getRelatedNodes(NewsletterUtil.NEWSLETTER);
       Node newsletterNode = newsletterNodeList.getNode(0);
+
+      renamePublication(publicationNode);
+
       int newsletterNumber = newsletterNode.getNumber();
-      List<String> subscribers = 
NewsletterSubscriptionUtil.getSubscribersForNewsletter(newsletterNumber);
+      List<String> subscribers = NewsletterSubscriptionUtil
+            .getSubscribersForNewsletter(newsletterNumber);
 
       if (subscribers != null) {
          createConfirmationList(subscribers);
-         for (int subscribersIterator = 0; subscribersIterator < 
subscribers.size(); subscribersIterator++) {
+         for (int subscribersIterator = 0; subscribersIterator < subscribers
+               .size(); subscribersIterator++) {
             String userName = subscribers.get(subscribersIterator);
             sendNewsletter(publicationNode, userName);
          }
@@ -171,4 +195,22 @@
       NewsletterPublicationUtil.updatePublicationTitle(publicationNode);
    }
 
+   private void renamePublication(Node publicationNode) {
+      Date date = publicationNode.getDateValue("publishdate");
+      String zoneId = TimeZone.getDefault().getDisplayName();
+      TimeZone tz = TimeZone.getTimeZone(zoneId);
+
+      String locale = Locale.getDefault().getDisplayCountry();
+      Locale loc = new Locale(locale);
+
+      DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+            DateFormat.SHORT, loc);
+      formatter.setTimeZone(tz);
+      String currentDate = formatter.format(date);
+
+      String currentTitle = publicationNode.getStringValue("title");
+      String newTitle = currentTitle.concat(" - ").concat(currentDate);
+      publicationNode.setStringValue("title", newTitle);
+      publicationNode.commit();
+   }
 }
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to