File Source: response.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.domain.Response__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.domain;
    33  
    34  import java.util.Calendar;
    35  import java.util.Date;
    36  
    37  import net.sourceforge.pebble.util.StringUtils;
    38  
    39  /**
    40   * Represents a response to a blog entry - either a comment or a TrackBack.
    41   *
    42   * @author    Simon Brown
    43   */
    44  public abstract class Response extends Content {
    45  
    46    /** the title */
    47    protected String title;
    48  
    49    /** the ip address of the author */
    50    protected String ipAddress;
    51  
    52    /** the date that the trackback was received */
    53    protected Date date;
    54  
    55    /** the parent blog entry */
    56    protected BlogEntry blogEntry;
    57  
    58    /** a score used to help identify spam when repsonses are added */
    59    private int spamScore = 0;
    60  
    61    /**
    62     * Default, no args constructor.
    63     */
           /* 
    P/P     *  Method: void net.sourceforge.pebble.domain.Response()
            * 
            *  Postconditions:
            *    this.events == &new ArrayList(Content#1)
            *    init'ed(this.eventsEnabled)
            *    this.propertyChangeEvents == &new ArrayList(Content#3)
            *    this.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
            *    this.spamScore == 0
            *    new ArrayList(Content#1) num objects == 1
            *    new ArrayList(Content#3) num objects == 1
            *    new PropertyChangeSupport(Content#2) num objects == 1
            */
    64    public Response() {
    65    }
    66  
    67    /**
    68     * Creates a new instance with the specified properties.
    69     *
    70     * @param title       the title of the entry
    71     * @param ipAddress   the IP address of the author
    72     * @param date        the date that this comment was left
    73     * @param state       the state of the comment
    74     * @param blogEntry   the owning blog entry
    75     */
           /* 
    P/P     *  Method: void net.sourceforge.pebble.domain.Response(String, String, Date, State, BlogEntry)
            * 
            *  Preconditions:
            *    blogEntry != null
            * 
            *  Postconditions:
            *    this.blogEntry == blogEntry
            *    this.blogEntry != null
            *    init'ed(this.date)
            *    this.events == &new ArrayList(Content#1)
            *    init'ed(this.eventsEnabled)
            *    this.ipAddress == One-of{null, ipAddress}
            *    init'ed(this.ipAddress)
            *    this.propertyChangeEvents == &new ArrayList(Content#3)
            *    this.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
            *    init'ed(this.spamScore)
            *    ...
            */
    76    Response(String title, String ipAddress, Date date, State state, BlogEntry blogEntry) {
    77      this.blogEntry = blogEntry;
    78  
    79      setTitle(title);
    80      setIpAddress(ipAddress);
    81      setDate(date);
    82      setState(state);
    83    }
    84  
    85    /**
    86     * Gets the id of this comment.
    87     *
    88     * @return    the id as a primitive long
    89     */
    90    public long getId() {
             /* 
    P/P       *  Method: long getId()
              * 
              *  Preconditions:
              *    this.date != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
    91      return date.getTime();
    92    }
    93  
    94    /**
    95     * Gets the globally unique id of this response.
    96     *
    97     * @return  a String of the form type/blogEntryId/responseId
    98     */
    99    public String getGuid() {
             /* 
    P/P       *  Method: String getGuid()
              * 
              *  Preconditions:
              *    this.blogEntry != null
              *    this.date != null
              * 
              *  Postconditions:
              *    return_value != null
              */
   100      String s = "";
   101      if (this instanceof Comment) {
   102        s = "c/";
   103      } else if (this instanceof TrackBack) {
   104        s = "t/";
   105      }
   106  
   107      s+= getBlogEntry().getId() + "/" + getId();
   108  
   109      return s;
   110    }
   111  
   112    /**
   113     * Gets the title.
   114     *
   115     * @return  the title as a String
   116     */
   117    public String getTitle() {
             /* 
    P/P       *  Method: String getTitle()
              * 
              *  Preconditions:
              *    init'ed(this.title)
              * 
              *  Postconditions:
              *    return_value == this.title
              *    init'ed(return_value)
              */
   118      return this.title;
   119    }
   120  
   121    /**
   122     * Sets the title of the blog entry for this trackback.
   123     *
   124     * @param   title   the title as a String
   125     */
   126    public void setTitle(String title) {
             /* 
    P/P       *  Method: void setTitle(String)
              * 
              *  Postconditions:
              *    init'ed(this.title)
              */
   127      this.title = StringUtils.transformHTML(title);
   128    }
   129  
   130    /**
   131     * Gets the name of the source of this response.
   132     *
   133     * @return  a String
   134     */
   135    public abstract String getSourceName();
   136  
   137    /**
   138     * Gets the link to the source of this response.
   139     *
   140     * @return  a String
   141     */
   142    public abstract String getSourceLink();
   143  
   144    /**
   145     * Gets the IP address.
   146     *
   147     * @return  the IP address as a String
   148     */
   149    public String getIpAddress() {
             /* 
    P/P       *  Method: String getIpAddress()
              * 
              *  Preconditions:
              *    init'ed(this.ipAddress)
              * 
              *  Postconditions:
              *    return_value == this.ipAddress
              *    init'ed(return_value)
              */
   150      return ipAddress;
   151    }
   152  
   153    /**
   154     * Sets the IP address.
   155     *
   156     * @param ipAddress   the IP address of the responder
   157     */
   158    public void setIpAddress(String ipAddress) {
             /* 
    P/P       *  Method: void setIpAddress(String)
              * 
              *  Postconditions:
              *    this.ipAddress == One-of{null, ipAddress}
              *    init'ed(this.ipAddress)
              * 
              *  Test Vectors:
              *    ipAddress: Addr_Set{null}, Inverse{null}
              *    java.lang.String:length(...)@159: {1..232-1}, {0}
              */
   159      if (ipAddress == null || ipAddress.length() == 0) {
   160        this.ipAddress = null;
   161      } else {
   162        this.ipAddress = ipAddress;
   163      }
   164    }
   165  
   166    /**
   167     * Gets the date that this response was received.
   168     *
   169     * @return    the date as a java.util.Date instance.
   170     */
   171    public Date getDate() {
             /* 
    P/P       *  Method: Date getDate()
              * 
              *  Preconditions:
              *    init'ed(this.date)
              * 
              *  Postconditions:
              *    return_value == this.date
              *    init'ed(return_value)
              */
   172      return date;
   173    }
   174  
   175    /**
   176     * Sets the date that this response was received.
   177     *
   178     * @param   date    the date as a java.util.Date instance.
   179     */
   180    public void setDate(Date date) {
             /* 
    P/P       *  Method: void setDate(Date)
              * 
              *  Preconditions:
              *    this.blogEntry != null
              * 
              *  Presumptions:
              *    net.sourceforge.pebble.domain.Blog:getCalendar(...)@185 != null
              *    net.sourceforge.pebble.domain.BlogEntry:getBlog(...)@185 != null
              * 
              *  Postconditions:
              *    init'ed(this.date)
              * 
              *  Test Vectors:
              *    date: Inverse{null}, Addr_Set{null}
              */
   181      if (date == null) {
   182        date = new Date();
   183      }
   184  
   185      Calendar cal = blogEntry.getBlog().getCalendar();
   186      cal.setTime(date);
   187      this.date = cal.getTime();
   188    }
   189  
   190    /**
   191     * Gets the owning blog entry.
   192     *
   193     * @return    the owning BlogEntry instance
   194     */
   195    public BlogEntry getBlogEntry() {
             /* 
    P/P       *  Method: BlogEntry getBlogEntry()
              * 
              *  Preconditions:
              *    init'ed(this.blogEntry)
              * 
              *  Postconditions:
              *    return_value == this.blogEntry
              *    init'ed(return_value)
              */
   196      return blogEntry;
   197    }
   198  
   199    /**
   200     * Sets the owning blog entry.
   201     *
   202     * @param blogEntry   the owning BlogEntry instance
   203     */
   204    void setBlogEntry(BlogEntry blogEntry) {
             /* 
    P/P       *  Method: void setBlogEntry(BlogEntry)
              * 
              *  Postconditions:
              *    this.blogEntry == blogEntry
              *    init'ed(this.blogEntry)
              */
   205      this.blogEntry = blogEntry;
   206    }
   207  
   208    /**
   209     * Gets the spam score.
   210     *
   211     * @return  an int
   212     */
   213    public int getSpamScore() {
             /* 
    P/P       *  Method: int getSpamScore()
              * 
              *  Preconditions:
              *    init'ed(this.spamScore)
              * 
              *  Postconditions:
              *    return_value == this.spamScore
              *    init'ed(return_value)
              */
   214      return this.spamScore;
   215    }
   216  
   217    /**
   218     * Increments the spam score by 1.
   219     */
   220    public void incrementSpamScore() {
             /* 
    P/P       *  Method: void incrementSpamScore()
              * 
              *  Preconditions:
              *    this.spamScore <= 232-2
              * 
              *  Postconditions:
              *    this.spamScore == old this.spamScore + 1
              *    this.spamScore >= -231+1
              */
   221      this.spamScore++;
   222    }
   223  
   224    /**
   225     * Sets the state of this response to rejected.
   226     */
   227    public void setRejected() {
             /* 
    P/P       *  Method: void setRejected()
              * 
              *  Postconditions:
              *    this.state == One-of{&net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2), old this.state}
              */
   228      setState(State.REJECTED);
   229    }
   230  
   231    /**
   232     * Determines whether this response is rejected.
   233     *
   234     * @return  true if the state is rejected, false otherwise
   235     */
   236    public boolean isRejected() {
             /* 
    P/P       *  Method: bool isRejected()
              * 
              *  Preconditions:
              *    this.state != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).name != null
              *    (soft) init'ed(this.state.name)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   237      return getState().equals(State.REJECTED);
   238    }
   239  
   240    /**
   241     * Sets the state of this response to approved.
   242     */
   243    public void setApproved() {
             /* 
    P/P       *  Method: void setApproved()
              * 
              *  Postconditions:
              *    this.state == One-of{&net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1), old this.state}
              */
   244      setState(State.APPROVED);
   245    }
   246  
   247    /**
   248     * Determines whether this response is approved.
   249     *
   250     * @return  true if the state is approved, false otherwise
   251     */
   252    public boolean isApproved() {
             /* 
    P/P       *  Method: bool isApproved()
              * 
              *  Preconditions:
              *    this.state != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name != null
              *    (soft) init'ed(this.state.name)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   253      return getState().equals(State.APPROVED);
   254    }
   255  
   256    /**
   257     * Sets the state of this response to pending.
   258     */
   259    public void setPending() {
             /* 
    P/P       *  Method: void setPending()
              * 
              *  Postconditions:
              *    this.state == One-of{&net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3), old this.state}
              */
   260      setState(State.PENDING);
   261    }
   262  
   263    /**
   264     * Determines whether this response is pending.
   265     *
   266     * @return  true if the state is pending, false otherwise
   267     */
   268    public boolean isPending() {
             /* 
    P/P       *  Method: bool isPending()
              * 
              *  Preconditions:
              *    this.state != null
              *    (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3).name != null
              *    (soft) init'ed(this.state.name)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   269      return getState().equals(State.PENDING);
   270    }
   271  
   272  }








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