File Source: shortpermalinkprovider.java
/*
P/P * Method: net.sourceforge.pebble.permalink.ShortPermalinkProvider__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.permalink;
33
34 import net.sourceforge.pebble.domain.BlogEntry;
35 import net.sourceforge.pebble.domain.Blog;
36 import net.sourceforge.pebble.domain.BlogService;
37 import net.sourceforge.pebble.domain.BlogServiceException;
38
39
40 /**
41 * Generates permalinks using the pattern <time-in-millis>.
42 *
43 * @author Simon Brown
44 */
/*
P/P * Method: void net.sourceforge.pebble.permalink.ShortPermalinkProvider()
*/
45 public class ShortPermalinkProvider extends PermalinkProviderSupport {
46
47 /** the regex used to check for a blog entry permalink */
48 private static final String BLOG_ENTRY_PERMALINK_REGEX = "/\\d*.html";
49
50 /**
51 * Gets the permalink for a blog entry.
52 *
53 * @return a URI as a String
54 */
55 public String getPermalink(BlogEntry blogEntry) {
/*
P/P * Method: String getPermalink(BlogEntry)
*
* Preconditions:
* blogEntry != null
*
* Postconditions:
* return_value != null
*/
56 return "/" + blogEntry.getId() + ".html";
57 }
58
59 /**
60 * Determines whether the specified URI is a blog entry permalink.
61 *
62 * @param uri a relative URI
63 * @return true if the URI represents a permalink to a blog entry,
64 * false otherwise
65 */
66 public boolean isBlogEntryPermalink(String uri) {
/*
P/P * Method: bool isBlogEntryPermalink(String)
*
* Postconditions:
* init'ed(return_value)
*
* Test Vectors:
* uri: Addr_Set{null}, Inverse{null}
*/
67 if (uri != null) {
68 return uri.matches(BLOG_ENTRY_PERMALINK_REGEX);
69 } else {
70 return false;
71 }
72 }
73
74 /**
75 * Gets the blog entry referred to by the specified URI.
76 *
77 * @param uri a relative URI
78 * @return a BlogEntry instance, or null if one can't be found
79 */
80 public BlogEntry getBlogEntry(String uri) {
81 // uri is of the form /1234567890123.html, so extract the 13-digit ID
82 // and use it to find the correct blog entry
/*
P/P * Method: BlogEntry getBlogEntry(String)
*
* Preconditions:
* init'ed(this.blog)
* (soft) uri != null
*
* Postconditions:
* init'ed(return_value)
*/
83 Blog blog = getBlog();
84 BlogService service = new BlogService();
85 try {
86 return service.getBlogEntry(blog, uri.substring(1, 14));
87 } catch (BlogServiceException e) {
88 return null;
89 }
90 }
91
92 }
SofCheck Inspector Build Version : 2.22510
| shortpermalinkprovider.java |
2010-Jun-25 19:40:32 |
| shortpermalinkprovider.class |
2010-Jul-19 20:23:38 |