File Source: emailnotificationlistener.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.event.blogentry.EmailNotificationListener__static_init
          */
     1  /*
     2   * Copyright (c) 2003-2006, Simon Brown
     3   * All rights reserved.
     4   *
     5   * Redistribution and use in source and binary forms, with or without
     6   * modification, are permitted provided that the following conditions are met:
     7   *
     8   *   - Redistributions of source code must retain the above copyright
     9   *     notice, this list of conditions and the following disclaimer.
    10   *
    11   *   - Redistributions in binary form must reproduce the above copyright
    12   *     notice, this list of conditions and the following disclaimer in
    13   *     the documentation and/or other materials provided with the
    14   *     distribution.
    15   *
    16   *   - Neither the name of Pebble nor the names of its contributors may
    17   *     be used to endorse or promote products derived from this software
    18   *     without specific prior written permission.
    19   *
    20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    30   * POSSIBILITY OF SUCH DAMAGE.
    31   */
    32  package net.sourceforge.pebble.event.blogentry;
    33  
    34  import net.sourceforge.pebble.domain.BlogEntry;
    35  import net.sourceforge.pebble.domain.Blog;
    36  import net.sourceforge.pebble.api.decorator.ContentDecoratorContext;
    37  import net.sourceforge.pebble.api.event.blogentry.BlogEntryEvent;
    38  import net.sourceforge.pebble.util.MailUtils;
    39  
    40  import java.text.SimpleDateFormat;
    41  import java.util.HashSet;
    42  
    43  /**
    44   * Sends an e-mail notification when new blog entries are added.
    45   *
    46   * @author Simon Brown
    47   */
         /* 
    P/P   *  Method: void net.sourceforge.pebble.event.blogentry.EmailNotificationListener()
          */
    48  public class EmailNotificationListener extends BlogEntryListenerSupport {
    49  
    50    /**
    51     * Called when a blog entry has been added.
    52     *
    53     * @param event   a BlogEntryEvent instance
    54     */
    55    public void blogEntryAdded(BlogEntryEvent event) {
             /* 
    P/P       *  Method: void blogEntryAdded(BlogEntryEvent)
              * 
              *  Preconditions:
              *    event != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name != null
              *    (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
              *    (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
              * 
              *  Presumptions:
              *    blogEntry.blog.decoratorChain.decorators@56 != null
              *    blogEntry.blog.decoratorChain@56 != null
              *    blogEntry.blog.permalinkProvider@56 != null
              *    blogEntry.blog.properties@56 != null
              *    blogEntry.blog@56 != null
              *    ...
              */
    56      BlogEntry blogEntry = event.getBlogEntry();
    57      sendNotification(blogEntry);
    58    }
    59  
    60    /**
    61     * Called when a blog entry has been changed.
    62     *
    63     * @param event a BlogEntryEvent instance
    64     */
    65    public void blogEntryChanged(BlogEntryEvent event) {
             /* 
    P/P       *  Method: void blogEntryChanged(BlogEntryEvent)
              * 
              *  Preconditions:
              *    event != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name != null
              *    (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
              *    (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
              * 
              *  Presumptions:
              *    blogEntry.blog.decoratorChain.decorators@66 != null
              *    blogEntry.blog.decoratorChain@66 != null
              *    blogEntry.blog.permalinkProvider@66 != null
              *    blogEntry.blog.properties@66 != null
              *    blogEntry.blog@66 != null
              *    ...
              */
    66      BlogEntry blogEntry = event.getBlogEntry();
    67      sendNotification(blogEntry);
    68    }
    69  
    70    /**
    71     * Called when a blog entry has been published.
    72     *
    73     * @param event a BlogEntryEvent instance
    74     */
    75    public void blogEntryPublished(BlogEntryEvent event) {
             /* 
    P/P       *  Method: void blogEntryPublished(BlogEntryEvent)
              * 
              *  Preconditions:
              *    event != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name != null
              *    (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
              *    (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
              * 
              *  Presumptions:
              *    blogEntry.blog.decoratorChain.decorators@76 != null
              *    blogEntry.blog.decoratorChain@76 != null
              *    blogEntry.blog.permalinkProvider@76 != null
              *    blogEntry.blog.properties@76 != null
              *    blogEntry.blog@76 != null
              *    ...
              */
    76      BlogEntry blogEntry = event.getBlogEntry();
    77      sendNotification(blogEntry);
    78    }
    79  
    80    private void sendNotification(BlogEntry blogEntry) {
             /* 
    P/P       *  Method: void sendNotification(BlogEntry)
              * 
              *  Preconditions:
              *    blogEntry != null
              *    blogEntry.blog != null
              *    blogEntry.blog.decoratorChain != null
              *    blogEntry.blog.decoratorChain.decorators != null
              *    blogEntry.blog.properties != null
              *    init'ed(blogEntry.body)
              *    init'ed(blogEntry.date)
              *    blogEntry.state != null
              *    init'ed(blogEntry.state.name)
              *    init'ed(blogEntry.title)
              *    ...
              * 
              *  Postconditions:
              *    init'ed(blogEntry.permalink)
              *    init'ed(blogEntry.user)
              */
    81      Blog blog = blogEntry.getBlog();
    82  
    83      // first of all decorate the blog entry, as if it was being rendered
    84      // via a HTML page or XML feed
    85      ContentDecoratorContext context = new ContentDecoratorContext();
    86      context.setView(ContentDecoratorContext.SUMMARY_VIEW);
    87      context.setMedia(ContentDecoratorContext.EMAIL);
    88      blog.getContentDecoratorChain().decorate(context, blogEntry);
    89  
    90      SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
    91      sdf.setTimeZone(blog.getTimeZone());
    92  
    93      String subject = "[Blog entry-" + blogEntry.getState().getName() + "] " + blogEntry.getTitle();
    94  
+   95      String message = "Blog entry posted by " + (blogEntry.getUser() != null ? blogEntry.getUser().getName() : blogEntry.getAuthor()) + " on " + sdf.format(blogEntry.getDate());
    96      message += "\n<br>";
    97      message += blogEntry.getBody();
    98      message += "\n<br>";
    99      message += "<a href=\"" + blogEntry.getLocalPermalink() + "\">Permalink</a>";
   100  
   101      if (blogEntry.isUnpublished()) {
   102        message += " | ";
   103        message += "<a href=\"" + blog.getUrl() + "manageBlogEntry.secureaction?entry=" + blogEntry.getId() + "&submit=Publish&confirm=true\">Publish</a>";
   104      }
   105  
   106      // and send the e-mail
   107      try {
   108        MailUtils.sendMail(MailUtils.createSession(), blog, blog.getEmailAddresses(), new HashSet(), subject, message);
   109      } catch (Exception e) {
   110        e.printStackTrace();
   111      }
   112    }
   113  
   114  }








SofCheck Inspector Build Version : 2.22510
emailnotificationlistener.java 2010-Jun-25 19:40:32
emailnotificationlistener.class 2010-Jul-19 20:23:40