shortpermalinkprovider.java

### 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