File Source: log.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.logging.Log__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.*;
    37  
    38  /**
    39   * Represents a log, containing log entries.
    40   *
    41   * @author    Simon Brown
    42   */
    43  public class Log {
    44  
    45    /** the blog that this instance is associated with */
    46    protected Blog blog;
    47  
    48    /** the collection of log entries */
    49    private Collection<LogEntry> logEntries;
    50  
    51    /**
    52     * Creates a new log associated with the given blog.
    53     *
    54     * @param blog          a Blog instance
    55     * @param entries       a Collection of LogEntry objects
    56     */
           /* 
    P/P     *  Method: void net.sourceforge.pebble.logging.Log(Blog, Collection)
            * 
            *  Postconditions:
            *    this.blog == blog
            *    init'ed(this.blog)
            *    this.logEntries == One-of{entries, &new ArrayList(Log#1)}
            *    this.logEntries != null
            *    new ArrayList(Log#1) num objects <= 1
            * 
            *  Test Vectors:
            *    entries: Inverse{null}, Addr_Set{null}
            */
    57    Log(Blog blog, Collection<LogEntry> entries) {
    58      this.blog = blog;
    59      this.logEntries = entries;
    60  
    61      if (logEntries == null) {
    62        logEntries = new ArrayList<LogEntry>();
    63      }
    64    }
    65  
    66    /**
    67     * Gets all log entries..
    68     *
    69     * @return    a collection of LogEntry instances
    70     */
    71    public Collection<LogEntry> getLogEntries() {
             /* 
    P/P       *  Method: Collection getLogEntries()
              * 
              *  Preconditions:
              *    init'ed(this.logEntries)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
    72      return Collections.unmodifiableCollection(logEntries);
    73    }
    74  
    75    /**
    76     * Gets a list of referers.
    77     *
    78     * @return    a Collection of Referer instances
    79     */
    80    public Collection<Referer> getReferers() {
             /* 
    P/P       *  Method: Collection getReferers()
              * 
              *  Preconditions:
              *    this.logEntries != null
              * 
              *  Presumptions:
              *    java.util.Iterator:next(...)@82 != null
              *    referer.logEntries@83 != null
              *    referer.logEntries@86 != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    java.util.Iterator:hasNext(...)@82: {1}, {0}
              *    java.util.Map:get(...)@83: Inverse{null}, Addr_Set{null}
              */
    81      Map<String,Referer> refererMap = new HashMap<String,Referer>();
    82      for (LogEntry logEntry : logEntries) {
    83        Referer referer = refererMap.get(logEntry.getReferer());
    84        if (referer == null) {
    85          referer = new Referer(logEntry.getReferer());
    86          refererMap.put(referer.getName(), referer);
    87        }
    88  
    89        referer.addLogEntry(logEntry);
    90      }
    91      return refererMap.values();
    92    }
    93  
    94    /**
    95     * Gets a list of referers.
    96     *
    97     * @return    a Collection of Request instances
    98     */
    99    public Collection<Request> getRequests() {
             /* 
    P/P       *  Method: Collection getRequests()
              * 
              *  Preconditions:
              *    this.logEntries != null
              *    (soft) init'ed(this.blog)
              * 
              *  Presumptions:
              *    java.util.Iterator:next(...)@101 != null
              *    logEntry.request@101 != null
              *    logEntry.request@102 != null
              *    logEntry.request@104 != null
              *    request.logEntries@102 != null
              *    ...
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    java.util.Iterator:hasNext(...)@101: {1}, {0}
              *    java.util.Map:get(...)@102: Inverse{null}, Addr_Set{null}
              */
   100      Map<String,Request> requestMap = new HashMap<String,Request>();
   101      for (LogEntry logEntry : logEntries) {
   102        Request request = requestMap.get(logEntry.getRequestUri());
   103        if (request == null) {
   104          request = new Request(logEntry.getRequestUri(), blog);
   105          requestMap.put(logEntry.getRequestUri(), request);
   106        }
   107        request.addLogEntry(logEntry);
   108      }
   109      return requestMap.values();
   110    }
   111  
   112    /**
   113     * Gets the total number of entries.
   114     *
   115     * @return  the total number as an int
   116     */
   117    public int getTotalLogEntries() {
             /* 
    P/P       *  Method: int getTotalLogEntries()
              * 
              *  Preconditions:
              *    this.logEntries != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
   118      return logEntries.size();
   119    }
   120  
   121    /**
   122     * Adds an entry to this log.
   123     *
   124     * @param logEntry    a LogEntry instance
   125     */
   126    void addLogEntry(LogEntry logEntry) {
             /* 
    P/P       *  Method: void addLogEntry(LogEntry)
              * 
              *  Preconditions:
              *    this.logEntries != null
              */
   127      logEntries.add(logEntry);
   128    }
   129  
   130    /**
   131     * Adds a collection of entries to this log.
   132     *
   133     * @param entries   a Collection of LogEntry instances
   134     */
   135    void addLogEntries(Collection<LogEntry> entries) {
             /* 
    P/P       *  Method: void addLogEntries(Collection)
              * 
              *  Preconditions:
              *    this.logEntries != null
              */
   136      logEntries.addAll(entries);
   137    }
   138  
   139  }








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