blogcategoriesdecorator.java

### File Source: blogcategoriesdecorator.java

             /*
        P/P   *  Method: net.sourceforge.pebble.decorator.BlogCategoriesDecorator__static_init
              */
         1  package net.sourceforge.pebble.decorator;
         2
         3  import java.util.Iterator;
         4
         5  import net.sourceforge.pebble.api.decorator.ContentDecoratorContext;
         6  import net.sourceforge.pebble.domain.BlogEntry;
         7  import net.sourceforge.pebble.domain.Category;
         8  import net.sourceforge.pebble.util.I18n;
         9
        10  /**
        11   * Generates category links for inclusion in the body of blog entries,
        12   * when rendered as HTML.
        13   *
        14   * @author Simon Brown
        15   */
             /*
        P/P   *  Method: void net.sourceforge.pebble.decorator.BlogCategoriesDecorator()
              */
        16  public class BlogCategoriesDecorator extends ContentDecoratorSupport {
        17
        18    /**
        19     * Decorates the specified blog entry.
        20     *
        21     * @param context   the context in which the decoration is running
        22     * @param blogEntry the blog entry to be decorated
        23     */
        24    public void decorate(ContentDecoratorContext context, BlogEntry blogEntry) {
               /*
        P/P     *  Method: void decorate(ContentDecoratorContext, BlogEntry)
                *
                *  Preconditions:
                *    context != null
                *    (soft) blogEntry != null
                *
                *  Presumptions:
                *    java.util.Iterator:next(...)@35 != null
                *
                *  Test Vectors:
                *    java.lang.String:length(...)@50: {0}, {1..232-1}
                *    java.lang.String:length(...)@55: {0}, {1..232-1}
                *    java.util.Iterator:hasNext(...)@28: {0}, {1}
                *    java.util.Iterator:hasNext(...)@34: {1}, {0}
                *    java.util.Iterator:hasNext(...)@42: {0}, {1}
                *
                *  Preconditions:
                *    init'ed(context.media)
                *    (soft) init'ed(blogEntry.blog)
                *    (soft) init'ed(blogEntry.categories)
                *    (soft) blogEntry.propertyChangeSupport != null
                *    (soft) init'ed(blogEntry.body)
                *    (soft) init'ed(blogEntry.excerpt)
                *
                *  Presumptions:
                *    category.blog@35 != null
                *    category.id@35 != null
                *
                *  Postconditions:
                *    init'ed(blogEntry.body)
                *    init'ed(blogEntry.excerpt)
                *
                *  Preconditions:
                *    (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
                *    (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
                *
                *  Test Vectors:
                *    context.media: {-231..-1, 1..232-1}, {0}
                *    blogEntry.body: Addr_Set{null}, Inverse{null}
                *    blogEntry.excerpt: Addr_Set{null}, Inverse{null}
                */
        25    if (context.getMedia() == ContentDecoratorContext.HTML_PAGE) {
        26        Iterator categories = blogEntry.getCategories().iterator();
        27
        28        if (categories.hasNext()) {
        29          StringBuffer buf = new StringBuffer();
        30
        31          buf.append("<div class=\"categories\"><span>");
        32          buf.append(I18n.getMessage(blogEntry.getBlog(), "category.categories"));
        33          buf.append(" : </span>");
        34          while (categories.hasNext()) {
        35            Category category = (Category)categories.next();
        36            buf.append("<a href=\"");
        37            buf.append(category.getPermalink());
        38            buf.append("\">");
        39            buf.append(category.getName());
        40            buf.append("</a>");
        41
        42            if (categories.hasNext()) {
        43              buf.append(", ");
        44            }
        45          }
        46          buf.append("</div>");
        47
        48          // now add the HTML to the body and excerpt, if they aren't empty
        49          String body = blogEntry.getBody();
        50          if (body != null && body.trim().length() > 0) {
        51            blogEntry.setBody(body + buf.toString());
        52          }
        53
        54          String excerpt = blogEntry.getExcerpt();
        55          if (excerpt != null && excerpt.trim().length() > 0) {
        56            blogEntry.setExcerpt(excerpt + buf.toString());
        57          }
        58        }
        59      }
        60    }
        61
        62  }

SofCheck Inspector Build Version : 2.22510

blogcategoriesdecorator.java | 2010-Jun-25 19:40:32
blogcategoriesdecorator.class | 2010-Jul-19 20:23:40