File Source: abstractemailnotificationlistener.java
/*
P/P * Method: net.sourceforge.pebble.event.trackback.AbstractEmailNotificationListener__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.trackback;
33
34 import net.sourceforge.pebble.domain.Blog;
35 import net.sourceforge.pebble.domain.TrackBack;
36 import net.sourceforge.pebble.util.MailUtils;
37 import net.sourceforge.pebble.api.event.trackback.TrackBackEvent;
38
39 import java.text.SimpleDateFormat;
40 import java.util.Collection;
41
42 /**
43 * Base class for listeners that send an e-mail notification when new
44 * TrackBacks are added.
45 *
46 * @author Simon Brown
47 */
/*
P/P * Method: void net.sourceforge.pebble.event.trackback.AbstractEmailNotificationListener()
*/
48 public abstract class AbstractEmailNotificationListener extends TrackBackListenerSupport {
49
50 /**
51 * Called when a TrackBack has been added.
52 *
53 * @param event a TrackBackEvent instance
54 */
55 public void trackBackAdded(TrackBackEvent event) {
/*
P/P * Method: void trackBackAdded(TrackBackEvent)
*
* Preconditions:
* event != null
* (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3).name != null
* (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
* (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
*
* Presumptions:
* getTrackBack(...).blogEntry.blog.permalinkProvider@56 != null
* getTrackBack(...).blogEntry.blog.properties@56 != null
* getTrackBack(...).blogEntry.blog@56 != null
* getTrackBack(...).blogEntry@56 != null
* getTrackBack(...).date@56 != null
* ...
*/
56 sendNotification(event.getTrackBack());
57 }
58
59 private void sendNotification(TrackBack trackBack) {
/*
P/P * Method: void sendNotification(TrackBack)
*
* Preconditions:
* trackBack != null
* trackBack.blogEntry != null
* trackBack.blogEntry.blog != null
* trackBack.blogEntry.blog.properties != null
* init'ed(trackBack.blogEntry.title)
* init'ed(trackBack.blogName)
* init'ed(trackBack.excerpt)
* trackBack.state != null
* init'ed(trackBack.state.name)
* init'ed(trackBack.title)
* ...
*
* Postconditions:
* init'ed(trackBack.blogEntry.permalink)
* possibly_updated(trackBack.blogEntry.user)
*/
60 Blog blog = trackBack.getBlogEntry().getBlog();
61
62 SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
63 sdf.setTimeZone(blog.getTimeZone());
64
65 String subject = "[TrackBack-" + trackBack.getState().getName() + "] " + trackBack.getTitle();
66
67 String message = "TrackBack from <a href=\"" + trackBack.getUrl() + "\">" + trackBack.getBlogName() + "</a> on " + sdf.format(trackBack.getDate());
68 message += " in response to " + trackBack.getBlogEntry().getTitle();
69 message += "\n\n<br><br>";
70 message += trackBack.getExcerpt();
71 message += "\n\n<br><br>";
72 message += "<a href=\"" + trackBack.getPermalink() + "\">Permalink</a>";
73
74 if (trackBack.isPending()) {
75 message += " | ";
76 message += "<a href=\"" + blog.getUrl() + "manageResponses.secureaction?response=" + trackBack.getGuid() + "&submit=Approve" + "\">Approve</a>";
77 message += " | ";
78 message += "<a href=\"" + blog.getUrl() + "manageResponses.secureaction?response=" + trackBack.getGuid() + "&submit=Reject" + "\">Reject</a>";
79 }
80
81 message += " | ";
82 message += "<a href=\"" + blog.getUrl() + "manageResponses.secureaction?response=" + trackBack.getGuid() + "&submit=Remove" + "\">Remove</a>";
83
84 Collection to = getEmailAddresses(trackBack);
85
86 try {
87 MailUtils.sendMail(MailUtils.createSession(), blog, to, subject, message);
88 } catch (Exception e) {
89 e.printStackTrace();
90 }
91 }
92
93 /**
94 * Returns the collection of recipients.
95 *
96 * @param trackBack the TrackBack from the event
97 * @return a Collection of e-mail addresses (Strings)
98 */
99 protected abstract Collection getEmailAddresses(TrackBack trackBack);
100
101 }
SofCheck Inspector Build Version : 2.22510
| abstractemailnotificationlistener.java |
2010-Jun-25 19:40:32 |
| abstractemailnotificationlistener.class |
2010-Jul-19 20:23:38 |
| abstractemailnotificationlistener.class |
2010-Jul-16 19:33:50 |
| abstractemailnotificationlistener.class |
2010-Jul-16 19:33:50 |