Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
../../../../img/srcFileCovDistChart6.png 36% of files have more coverage
24   139   10   3,43
6   49   0,42   7
7     1,43  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  Log       Line # 43 24 0% 10 15 59,5% 0.5945946
 
  (6)
 
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    */
 
57  6 toggle Log(Blog blog, Collection<LogEntry> entries) {
58  6 this.blog = blog;
59  6 this.logEntries = entries;
60   
61  6 if (logEntries == null) {
62  6 logEntries = new ArrayList<LogEntry>();
63    }
64    }
65   
66    /**
67    * Gets all log entries..
68    *
69    * @return a collection of LogEntry instances
70    */
 
71  10 toggle public Collection<LogEntry> getLogEntries() {
72  10 return Collections.unmodifiableCollection(logEntries);
73    }
74   
75    /**
76    * Gets a list of referers.
77    *
78    * @return a Collection of Referer instances
79    */
 
80  2 toggle public Collection<Referer> getReferers() {
81  2 Map<String,Referer> refererMap = new HashMap<String,Referer>();
82  2 for (LogEntry logEntry : logEntries) {
83  0 Referer referer = refererMap.get(logEntry.getReferer());
84  0 if (referer == null) {
85  0 referer = new Referer(logEntry.getReferer());
86  0 refererMap.put(referer.getName(), referer);
87    }
88   
89  0 referer.addLogEntry(logEntry);
90    }
91  2 return refererMap.values();
92    }
93   
94    /**
95    * Gets a list of referers.
96    *
97    * @return a Collection of Request instances
98    */
 
99  2 toggle public Collection<Request> getRequests() {
100  2 Map<String,Request> requestMap = new HashMap<String,Request>();
101  2 for (LogEntry logEntry : logEntries) {
102  0 Request request = requestMap.get(logEntry.getRequestUri());
103  0 if (request == null) {
104  0 request = new Request(logEntry.getRequestUri(), blog);
105  0 requestMap.put(logEntry.getRequestUri(), request);
106    }
107  0 request.addLogEntry(logEntry);
108    }
109  2 return requestMap.values();
110    }
111   
112    /**
113    * Gets the total number of entries.
114    *
115    * @return the total number as an int
116    */
 
117  6 toggle public int getTotalLogEntries() {
118  6 return logEntries.size();
119    }
120   
121    /**
122    * Adds an entry to this log.
123    *
124    * @param logEntry a LogEntry instance
125    */
 
126  2 toggle void addLogEntry(LogEntry logEntry) {
127  2 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  2 toggle void addLogEntries(Collection<LogEntry> entries) {
136  2 logEntries.addAll(entries);
137    }
138   
139    }