File Source: defaultpermalinkprovider.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.permalink.DefaultPermalinkProvider__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.Blog;
    35  import net.sourceforge.pebble.domain.BlogEntry;
    36  import net.sourceforge.pebble.domain.BlogService;
    37  import net.sourceforge.pebble.domain.BlogServiceException;
    38  
    39  import java.text.DateFormat;
    40  import java.text.SimpleDateFormat;
    41  import java.util.Date;
    42  
    43  /**
    44   * Generates permalinks using the pattern /YYYY/MM/DD/<time-in-millis>.
    45   *
    46   * @author Simon Brown
    47   */
         /* 
    P/P   *  Method: void net.sourceforge.pebble.permalink.DefaultPermalinkProvider()
          */
    48  public class DefaultPermalinkProvider extends PermalinkProviderSupport {
    49  
    50    /** the regex used to check for a blog entry permalink : /yyyy/mm/dd/blogentryid.html */
    51    private static final String BLOG_ENTRY_PERMALINK_REGEX = "/\\d\\d\\d\\d/\\d\\d/\\d\\d/\\d*.html";
    52  
    53    /**
    54     * Gets the permalink for a blog entry.
    55     *
    56     * @return  a URI as a String
    57     */
    58    public String getPermalink(BlogEntry blogEntry) {
             /* 
    P/P       *  Method: String getPermalink(BlogEntry)
              * 
              *  Presumptions:
              *    net.sourceforge.pebble.domain.BlogEntry:getBlog(...)@59 != null
              * 
              *  Preconditions:
              *    blogEntry != null
              * 
              *  Postconditions:
              *    return_value != null
              */
    59      Blog blog = blogEntry.getBlog();
    60      Date date = blogEntry.getDate();
    61      DateFormat year = new SimpleDateFormat("yyyy");
    62      year.setTimeZone(blog.getTimeZone());
    63      DateFormat month = new SimpleDateFormat("MM");
    64      month.setTimeZone(blog.getTimeZone());
    65      DateFormat day = new SimpleDateFormat("dd");
    66      day.setTimeZone(blog.getTimeZone());
    67  
    68      StringBuffer buf = new StringBuffer();
    69      buf.append("/");
    70      buf.append(year.format(date));
    71      buf.append("/");
    72      buf.append(month.format(date));
    73      buf.append("/");
    74      buf.append(day.format(date));
    75      buf.append("/");
    76      buf.append(blogEntry.getId());
    77      buf.append(".html");
    78  
    79      return buf.toString();
    80    }
    81  
    82    /**
    83     * Determines whether the specified URI is a blog entry permalink.
    84     *
    85     * @param uri   a relative URI
    86     * @return      true if the URI represents a permalink to a blog entry,
    87     *              false otherwise
    88     */
    89    public boolean isBlogEntryPermalink(String uri) {
             /* 
    P/P       *  Method: bool isBlogEntryPermalink(String)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    uri: Addr_Set{null}, Inverse{null}
              */
    90      if (uri != null) {
    91        return uri.matches(BLOG_ENTRY_PERMALINK_REGEX);
    92      } else {
    93        return false;
    94      }
    95    }
    96  
    97    /**
    98     * Gets the blog entry referred to by the specified URI.
    99     *
   100     * @param uri   a relative URI
   101     * @return  a BlogEntry instance, or null if one can't be found
   102     */
   103    public BlogEntry getBlogEntry(String uri) {
             /* 
    P/P       *  Method: BlogEntry getBlogEntry(String)
              * 
              *  Preconditions:
              *    init'ed(this.blog)
              *    (soft) uri != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   104      Blog blog = getBlog();
   105      BlogService service = new BlogService();
   106      try {
   107        return service.getBlogEntry(blog, uri.substring(12, uri.lastIndexOf(".")));
   108      } catch (BlogServiceException e) {
   109        return null;
   110      }
   111    }
   112  
   113  }








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