File Source: countedurl.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.logging.CountedUrl__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.logging;
    33  
    34  import net.sourceforge.pebble.domain.Blog;
    35  
    36  import java.util.List;
    37  import java.util.LinkedList;
    38  import java.util.Collections;
    39  
    40  /**
    41   * Represents a visited or referer URL along with a count of how many times
    42   * that URL has been accessed/referred from.
    43   *
    44   * @author    Simon Brown
    45   */
    46  public abstract class CountedUrl {
    47  
    48    /** the maximum length of the name */
    49    public static final int NAME_LENGTH_LIMIT = 60;
    50  
    51    /** the URL as a String */
    52    private String url;
    53  
    54    /** the displayable name for the URL */
    55    private String name;
    56  
    57    /** the collection of log entries that relate to this url */
    58    private List<LogEntry> logEntries = new LinkedList<LogEntry>();
    59  
    60    private boolean newsFeed = false;
    61    private boolean pageView = false;
    62    private boolean fileDownload = false;
    63  
    64    protected Blog blog;
    65  
    66    /**
    67     * Creates a new CountedUrl representing the specified url.
    68     *
    69     * @param url   the url as a String
    70     */
           /* 
    P/P     *  Method: void net.sourceforge.pebble.logging.CountedUrl(String)
            * 
            *  Postconditions:
            *    init'ed(this.blog)
            *    init'ed(this.fileDownload)
            *    this.logEntries == &new LinkedList(CountedUrl#1)
            *    possibly_updated(this.name)
            *    init'ed(this.newsFeed)
            *    init'ed(this.pageView)
            *    init'ed(this.url)
            *    new LinkedList(CountedUrl#1) num objects == 1
            */
    71    public CountedUrl(String url) {
    72      setUrl(url);
    73    }
    74  
    75    /**
    76     * Creates a new CountedUrl representing the specified url.
    77     *
    78     * @param url   the url as a String
    79     */
           /* 
    P/P     *  Method: void net.sourceforge.pebble.logging.CountedUrl(String, Blog)
            * 
            *  Postconditions:
            *    this.blog == blog
            *    init'ed(this.blog)
            *    init'ed(this.fileDownload)
            *    this.logEntries == &new LinkedList(CountedUrl#1)
            *    possibly_updated(this.name)
            *    init'ed(this.newsFeed)
            *    init'ed(this.pageView)
            *    init'ed(this.url)
            *    new LinkedList(CountedUrl#1) num objects == 1
            */
    80    public CountedUrl(String url, Blog blog) {
    81      this.blog = blog;
    82      setUrl(url);
    83    }
    84  
    85    /**
    86     * Gets the underlying url.
    87     *
    88     * @return    the url as a String
    89     */
    90    public String getUrl() {
             /* 
    P/P       *  Method: String getUrl()
              * 
              *  Preconditions:
              *    init'ed(this.url)
              * 
              *  Postconditions:
              *    return_value == this.url
              *    init'ed(return_value)
              */
    91      return url;
    92    }
    93  
    94    /**
    95     * Sets the underlying url.
    96     *
    97     * @param url   the url as a String
    98     */
    99    protected void setUrl(String url) {
             /* 
    P/P       *  Method: void setUrl(String)
              * 
              *  Postconditions:
              *    this.url == url
              *    init'ed(this.url)
              */
   100      this.url = url;
   101    }
   102  
   103    /**
   104     * Gets a name representation of the url. This is just the url, but truncated
   105     * to a maximum number of characters.
   106     *
   107     * @return    a String
   108     */
   109    public String getName() {
             /* 
    P/P       *  Method: String getName()
              * 
              *  Preconditions:
              *    init'ed(this.name)
              * 
              *  Postconditions:
              *    return_value == this.name
              *    init'ed(return_value)
              */
   110      return this.name;
   111    }
   112  
   113    /**
   114     * Sets the name.
   115     *
   116     * @param name    the name as a String
   117     */
   118    protected void setName(String name) {
             /* 
    P/P       *  Method: void setName(String)
              * 
              *  Postconditions:
              *    this.name == name
              *    init'ed(this.name)
              */
   119      this.name = name;
   120    }
   121  
   122    /**
   123     * Gets a name representation of the url. This is just the url, but truncated
   124     * to a maximum number of characters.
   125     *
   126     * @return    a String
   127     */
   128    public String getTruncatedName() {
             /* 
    P/P       *  Method: String getTruncatedName()
              * 
              *  Preconditions:
              *    this.name != null
              * 
              *  Postconditions:
              *    return_value != null
              * 
              *  Test Vectors:
              *    java.lang.String:length(...)@130: {61..232-1}, {0..60}
              */
   129      String s = getName();
   130      if (s.length() <= NAME_LENGTH_LIMIT) {
   131        return s;
   132      } else {
   133        return s.substring(0, NAME_LENGTH_LIMIT - 3) + "...";
   134      }
   135    }
   136  
   137    /**
   138     * Adds a LogEntry.
   139     *
   140     * @param logEntry    a LogEntry instance
   141     */
   142    public void addLogEntry(LogEntry logEntry) {
             /* 
    P/P       *  Method: void addLogEntry(LogEntry)
              * 
              *  Preconditions:
              *    this.logEntries != null
              */
   143      logEntries.add(logEntry);
   144    }
   145  
   146    /**
   147     * Gets the list of log entries associated with this URL
   148     *
   149     * @return  a List of LogEntry instances
   150     */
   151    public List<LogEntry> getLogEntries() {
             /* 
    P/P       *  Method: List getLogEntries()
              * 
              *  Preconditions:
              *    init'ed(this.logEntries)
              * 
              *  Postconditions:
              *    return_value == &new LinkedList(getLogEntries#1)
              *    new LinkedList(getLogEntries#1) num objects == 1
              */
   152      return new LinkedList<LogEntry>(logEntries);
   153    }
   154  
   155    /**
   156     * Gets the count associated with this url.
   157     *
   158     * @return    the count as an int
   159     */
   160    public int getCount() {
             /* 
    P/P       *  Method: int getCount()
              * 
              *  Preconditions:
              *    this.logEntries != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   161      return logEntries.size();
   162    }
   163  
   164    /**
   165     * Implementation of the hashCode() method.
   166     *
   167     * @return  the hashcode of the underlying url
   168     */
   169    public int hashCode() {
             /* 
    P/P       *  Method: int hashCode()
              * 
              *  Preconditions:
              *    init'ed(this.url)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   170      return url == null ? 0 : url.hashCode();
   171    }
   172  
   173    /**
   174     * Determines whether this object is equal to another.
   175     *
   176     * @param o   the object to test against
   177     * @return  true if the specified object is the same as this one (i.e. the
   178     *          underlying urls match, false otherwise
   179     */
   180    public boolean equals(Object o) {
             /* 
    P/P       *  Method: bool equals(Object)
              * 
              *  Preconditions:
              *    (soft) init'ed(o.url)
              *    (soft) init'ed(this.url)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    o.url: Inverse{null}, Addr_Set{null}
              *    this == o: {0}, {1}
              *    this.url: Inverse{null}, Addr_Set{null}
              *    java.lang.String:equals(...)@189: {0}, {1}
              */
   181      if (this == o) return true;
   182      if (!(o instanceof CountedUrl)) return false;
   183  
   184      CountedUrl cUrl = (CountedUrl)o;
   185  
   186      if (url == null && cUrl.getUrl() == null) {
   187        return true;
   188      } else {
   189        return (url != null && url.equals(cUrl.getUrl()));
   190      }
   191    }
   192  
   193    public boolean isNewsFeed() {
             /* 
    P/P       *  Method: bool isNewsFeed()
              * 
              *  Preconditions:
              *    init'ed(this.newsFeed)
              * 
              *  Postconditions:
              *    return_value == this.newsFeed
              *    init'ed(return_value)
              */
   194      return newsFeed;
   195    }
   196  
   197    public void setNewsFeed(boolean newsFeed) {
             /* 
    P/P       *  Method: void setNewsFeed(bool)
              * 
              *  Postconditions:
              *    this.newsFeed == newsFeed
              *    init'ed(this.newsFeed)
              */
   198      this.newsFeed = newsFeed;
   199    }
   200  
   201    public boolean isPageView() {
             /* 
    P/P       *  Method: bool isPageView()
              * 
              *  Preconditions:
              *    init'ed(this.pageView)
              * 
              *  Postconditions:
              *    return_value == this.pageView
              *    init'ed(return_value)
              */
   202      return pageView;
   203    }
   204  
   205    public void setPageView(boolean pageView) {
             /* 
    P/P       *  Method: void setPageView(bool)
              * 
              *  Postconditions:
              *    this.pageView == pageView
              *    init'ed(this.pageView)
              */
   206      this.pageView = pageView;
   207    }
   208  
   209    public boolean isFileDownload() {
             /* 
    P/P       *  Method: bool isFileDownload()
              * 
              *  Preconditions:
              *    init'ed(this.fileDownload)
              * 
              *  Postconditions:
              *    return_value == this.fileDownload
              *    init'ed(return_value)
              */
   210      return fileDownload;
   211    }
   212  
   213    public void setFileDownload(boolean fileDownload) {
             /* 
    P/P       *  Method: void setFileDownload(bool)
              * 
              *  Postconditions:
              *    this.fileDownload == fileDownload
              *    init'ed(this.fileDownload)
              */
   214      this.fileDownload = fileDownload;
   215    }
   216    
   217  }








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