File Source: socialbookmarksdecorator.java
1 package net.sourceforge.pebble.decorator;
2
3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
5 import java.util.ResourceBundle;
6
7 import net.sourceforge.pebble.api.decorator.ContentDecoratorContext;
8 import net.sourceforge.pebble.domain.Blog;
9 import net.sourceforge.pebble.domain.BlogEntry;
10 import net.sourceforge.pebble.util.I18n;
11
12 /**
13 * Adds links to the social bookmarking sites to add current blog entry
14 *
15 * @author Alexander Zagniotov
16 */
/*
P/P * Method: void net.sourceforge.pebble.decorator.SocialBookmarksDecorator()
*/
17 public class SocialBookmarksDecorator extends ContentDecoratorSupport {
18
19 private static final String TITLE = "&title=";
20 private static final String TITLE_FURL_YAHOO = "&t=";
21
22 private static final String SLASHDOT_URL = "http://slashdot.org/bookmark.pl?url=";
23 private static final String DIGG_URL = "http://digg.com/submit?url=";
24 private static final String REDDIT_URL = "http://reddit.com/submit?url=";
25 private static final String DELICIOUS_URL = "http://del.icio.us/post?url=";
26 private static final String STUMBLEUPON_URL = "http://www.stumbleupon.com/submit?url=";
27 private static final String GOOGLE_URL = "http://www.google.com/bookmarks/mark?op=edit&bkmk=";
28 private static final String TECHNORATI_URL = "http://technorati.com/faves?add=";
29 private static final String BLOGLINES_URL = "http://www.bloglines.com/sub/";
30 private static final String FACEBOOK_URL = "http://www.facebook.com/share.php?u=";
31 private static final String FURL_URL = "http://www.furl.net/storeIt.jsp?u=";
32 private static final String WINDOWSLIVE_URL = "https://favorites.live.com/quickadd.aspx?mkt=en-us&url=";
33 private static final String YAHOO_URL = "http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&u=";
34
35 private static final String SLASHDOT_IMG = "<img src=\"common/images/slashdot.png\" alt=\"Add this post to Slashdot\" border=\"0\" />";
36 private static final String DIGG_IMG = "<img src=\"common/images/digg.png\" alt=\"Add this post to Digg\" border=\"0\" />";
37 private static final String REDDIT_IMG = "<img src=\"common/images/reddit.png\" alt=\"Add this post to Reddit\" border=\"0\" />";
38 private static final String DELICIOUS_IMG = "<img src=\"common/images/delicious.png\" alt=\"Add this post to Delicious\" border=\"0\" />";
39 private static final String STUMBLEUPON_IMG = "<img src=\"common/images/stumbleupon.png\" alt=\"Add this post to Stumble it\" border=\"0\" />";
40 private static final String GOOGLE_IMG = "<img src=\"common/images/google.png\" alt=\"Add this post to Google\" border=\"0\" />";
41 private static final String TECHNORATI_IMG = "<img src=\"common/images/technorati.png\" alt=\"Add this post to Technorati\" border=\"0\" />";
42 private static final String BLOGLINES_IMG = "<img src=\"common/images/bloglines.png\" alt=\"Add this post to Bloglines\" border=\"0\" />";
43 private static final String FACEBOOK_IMG = "<img src=\"common/images/facebook.png\" alt=\"Add this post to Facebook\" border=\"0\" />";
44 private static final String FURL_IMG = "<img src=\"common/images/furl.png\" alt=\"Add this post to Furl\" border=\"0\" />";
45 private static final String WINDOWSLIVE_IMG = "<img src=\"common/images/windowslive.png\" alt=\"Add this post to Windows Live\" border=\"0\" />";
46 private static final String YAHOO_IMG = "<img src=\"common/images/yahoo.png\" alt=\"Add this post to Yahoo!\" border=\"0\" />";
47
48 private static final String SLASHDOT_ALT = "socialbookmark.addToSlashdot";
49 private static final String DIGG_ALT = "socialbookmark.addToDigg";
50 private static final String REDDIT_ALT = "socialbookmark.addToReddit";
51 private static final String DELICIOUS_ALT = "socialbookmark.addToDelicious";
52 private static final String STUMBLEUPON_ALT = "socialbookmark.addToStumbleupon";
53 private static final String GOOGLE_ALT = "socialbookmark.addToGoogle";
54 private static final String TECHNORATI_ALT = "socialbookmark.addToTechnorati";
55 private static final String BLOGLINES_ALT = "socialbookmark.addToBloglines";
56 private static final String FACEBOOK_ALT = "socialbookmark.addToFacebook";
57 private static final String FURL_ALT = "socialbookmark.addToFurl";
58 private static final String WINDOWSLIVE_ALT = "socialbookmark.addToWindowsLive";
59 private static final String YAHOO_ALT = "socialbookmark.addToYahoo";
60
/*
P/P * Method: net.sourceforge.pebble.decorator.SocialBookmarksDecorator__static_init
*
* Postconditions:
* bookmarkingAltText == &new String[](SocialBookmarksDecorator__static_init#3)
* bookmarkingNames == &new String[](SocialBookmarksDecorator__static_init#2)
* bookmarkingSites == &new String[](SocialBookmarksDecorator__static_init#1)
* new String[](SocialBookmarksDecorator__static_init#1) num objects == 1
* new String[](SocialBookmarksDecorator__static_init#2) num objects == 1
* new String[](SocialBookmarksDecorator__static_init#3) num objects == 1
* bookmarkingSites.length == 12
* bookmarkingNames.length == 12
* bookmarkingAltText.length == 12
* bookmarkingSites[...] in Addr_Set{&"http:..slashdot.org.bookmark.pl?url=",&"http:..digg.com.submit?url=",&"http:..reddit.com.submit?url=",&"http:..del.icio.us.post?url=",&"http:..www.stumbleupon.com.submit?url=",&"http:..www.google.com.bookmarks.mark?op=edit&amp;bkmk=",&"http:..technorati.com.faves?add=",&"http:..www.bloglines.com.sub.",&"http:..www.facebook.com.share.php?u=",&"http:..www.furl.net.storeIt.jsp?u=",&"https:..favorites.live.com.quickadd.aspx?mkt=en-us&amp;url=",&"http:..bookmarks.yahoo.com.toolbar.savebm?opener=tb&amp;u="}
* ...
*/
61 private static final String[] bookmarkingSites = { SLASHDOT_URL, DIGG_URL,
62 REDDIT_URL, DELICIOUS_URL, STUMBLEUPON_URL, GOOGLE_URL, TECHNORATI_URL, BLOGLINES_URL, FACEBOOK_URL,
63 FURL_URL, WINDOWSLIVE_URL, YAHOO_URL};
64
65 private static final String[] bookmarkingNames = { SLASHDOT_IMG, DIGG_IMG,
66 REDDIT_IMG, DELICIOUS_IMG, STUMBLEUPON_IMG, GOOGLE_IMG, TECHNORATI_IMG, BLOGLINES_IMG, FACEBOOK_IMG,
67 FURL_IMG, WINDOWSLIVE_IMG, YAHOO_IMG};
68
69 private static final String[] bookmarkingAltText = { SLASHDOT_ALT, DIGG_ALT,
70 REDDIT_ALT, DELICIOUS_ALT, STUMBLEUPON_ALT, GOOGLE_ALT, TECHNORATI_ALT, BLOGLINES_ALT, FACEBOOK_ALT,
71 FURL_ALT, WINDOWSLIVE_ALT, YAHOO_ALT};
72
73 /**
74 * Decorates the specified blog entry.
75 *
76 * @param context
77 * the context in which the decoration is running
78 * @param blogEntry
79 * the blog entry to be decorated
80 */
81 public void decorate(ContentDecoratorContext context, BlogEntry blogEntry) {
/*
P/P * Method: void decorate(ContentDecoratorContext, BlogEntry)
*
* Preconditions:
* blogEntry != null
* (soft) init'ed(bookmarkingSites[...])
* (soft) init'ed(bookmarkingNames[...])
* (soft) init'ed(bookmarkingAltText[...])
*
* Presumptions:
* net.sourceforge.pebble.util.I18n:getBundle(...)@83 != null
*
* Test Vectors:
* java.lang.String:length(...)@86: {0}, {1..232-1}
* java.lang.String:length(...)@93: {0}, {1..232-1}
*
* Preconditions:
* blogEntry.blog != null
* init'ed(blogEntry.body)
* init'ed(blogEntry.excerpt)
* (soft) init'ed(blogEntry.originalPermalink)
* (soft) blogEntry.propertyChangeSupport != null
* (soft) init'ed(blogEntry.title)
*
* Postconditions:
* init'ed(blogEntry.body)
* init'ed(blogEntry.excerpt)
* possibly_updated(blogEntry.permalink)
*
* Preconditions:
* blogEntry.blog.properties != null
* (soft) init'ed(blogEntry.blog.id)
* (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
* (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
*
* Test Vectors:
* blogEntry.body: Addr_Set{null}, Inverse{null}
* blogEntry.excerpt: Addr_Set{null}, Inverse{null}
*/
82 Blog blog = blogEntry.getBlog();
83 ResourceBundle bundle = I18n.getBundle(blog.getLocale());
84
85 String body = blogEntry.getBody();
86 if (body != null && body.trim().length() > 0) {
87
88 String html = generateDecorationHtml(bundle, blogEntry);
89 blogEntry.setBody(body + html);
90 }
91
92 String excerpt = blogEntry.getExcerpt();
93 if (excerpt != null && excerpt.trim().length() > 0) {
94
95 String html = generateDecorationHtml(bundle, blogEntry);
96 blogEntry.setExcerpt(excerpt + html);
97 }
98 }
99
100
101
102 private String generateDecorationHtml(ResourceBundle bundle,
103 BlogEntry blogEntry) {
/*
P/P * Method: String generateDecorationHtml(ResourceBundle, BlogEntry)
*
* Preconditions:
* blogEntry != null
* bundle != null
* (soft) init'ed(bookmarkingSites[...])
* (soft) init'ed(bookmarkingNames[...])
* (soft) init'ed(bookmarkingAltText[...])
*
* Postconditions:
* return_value != null
*
* Test Vectors:
* bookmarkingSites[...]: Addr_Set{&"http:..technorati.com.faves?add="}, Addr_Set{&"http:..www.bloglines.com.sub."}, Addr_Set{&"http:..www.facebook.com.share.php?u="}, Addr_Set{&"http:..www.furl.net.storeIt.jsp?u="}, Addr_Set{&"http:..bookmarks.yahoo.com.toolbar.savebm?opener=tb&amp;u="}, Inverse{&"http:..technorati.com.faves?add=",&"http:..www.bloglines.com.sub.",&"http:..www.facebook.com.share.php?u=",&"http:..www.furl.net.storeIt.jsp?u=",&"http:..bookmarks.yahoo.com.toolbar.savebm?opener=tb&amp;u="}
*
* Preconditions:
* (soft) init'ed(blogEntry.blog.id)
* (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
* (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
* init'ed(blogEntry.title)
* (soft) blogEntry.blog != null
* (soft) init'ed(blogEntry.originalPermalink)
*
* Postconditions:
* possibly_updated(blogEntry.permalink)
*/
104 StringBuffer buf = new StringBuffer();
105 String permLink = blogEntry.getPermalink();
106 String title = "";
107 try {
108 title = URLEncoder.encode(blogEntry.getTitle(), "UTF-8");
109 }
110 catch(UnsupportedEncodingException e) {
111 title = blogEntry.getTitle();
112 }
113 buf.append("<div class=\"tags\"><span>");
114 buf.append(bundle.getString("common.bookmarks"));
115 buf.append(" : </span> ");
116
117 for (int i = 0; i < bookmarkingSites.length; i++) {
118 buf.append("<a href=\"");
119 buf.append(bookmarkingSites[i] + permLink);
120
121
122 if (bookmarkingSites[i] != TECHNORATI_URL &&
123 bookmarkingSites[i] != BLOGLINES_URL &&
124 bookmarkingSites[i] != FACEBOOK_URL &&
125 bookmarkingSites[i] != FURL_URL &&
126 bookmarkingSites[i] != YAHOO_URL) {
127 buf.append(TITLE + title + "\"");
128 }
129
130 else if (bookmarkingSites[i] == FURL_URL || bookmarkingSites[i] == YAHOO_URL) {
131 buf.append(TITLE_FURL_YAHOO + title + "\"");
132 }
133
134 else {
135 buf.append("\"");
136 }
137
138 buf.append(" target=\"_blank\"");
139 buf.append(" title=\"" + bundle.getString(bookmarkingAltText[i]) + "\">");
140 buf.append(bookmarkingNames[i]);
141 buf.append("</a>");
142
143 if (i < bookmarkingSites.length - 1) {
144 buf.append(" ");
145 }
146 }
147
148 buf.append("</div>");
149 return buf.toString();
150 }
151
152 }
SofCheck Inspector Build Version : 2.22510
| socialbookmarksdecorator.java |
2010-Jun-25 19:40:32 |
| socialbookmarksdecorator.class |
2010-Jul-19 20:23:40 |