Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
../../../../img/srcFileCovDistChart9.png 23% of files have more coverage
14   126   12   2
8   42   0,86   7
7     1,71  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  IndexedTag       Line # 47 14 0% 12 5 82,8% 0.82758623
 
  (8)
 
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.index;
33   
34    import net.sourceforge.pebble.domain.Blog;
35    import net.sourceforge.pebble.domain.Tag;
36    import net.sourceforge.pebble.comparator.ReverseBlogEntryIdComparator;
37   
38    import java.util.ArrayList;
39    import java.util.List;
40    import java.util.Collections;
41   
42    /**
43    * Represents a tag.
44    *
45    * @author Simon Brown
46    */
 
47    public class IndexedTag extends Tag {
48   
49    /** the blog entries associated with this tag */
50    private List<String> blogEntries = new ArrayList<String>();
51   
52    /**
53    * Creates a new tag with the specified properties.
54    *
55    * @param name the name
56    * @param blog a Blog instance
57    */
 
58  8 toggle public IndexedTag(String name, Blog blog) {
59  8 super(name, blog);
60    }
61   
62    /**
63    * Gets the blog entries associated with this tag.
64    *
65    * @return a Collection of BlogEntry instances
66    */
 
67  10 toggle public List<String> getBlogEntries() {
68  10 return new ArrayList<String>(blogEntries);
69    }
70   
71    /**
72    * Adds a blog entry to this tag.
73    *
74    * @param blogEntryId a blog entry ID
75    */
 
76  6 toggle public synchronized void addBlogEntry(String blogEntryId) {
77  6 if (blogEntryId != null && !blogEntries.contains(blogEntryId)) {
78  6 blogEntries.add(blogEntryId);
79  6 Collections.sort(blogEntries, new ReverseBlogEntryIdComparator());
80    }
81    }
82   
83    /**
84    * Removes a blog entry to this tag.
85    *
86    * @param blogEntryId a blog entry ID
87    */
 
88  2 toggle public synchronized void removeBlogEntry(String blogEntryId) {
89  2 if (blogEntryId != null) {
90  2 blogEntries.remove(blogEntryId);
91    }
92    }
93   
94    /**
95    * Gets the number of blog entries associated with this tag.
96    *
97    * @return an int
98    */
 
99  28 toggle public int getNumberOfBlogEntries() {
100  28 return blogEntries.size();
101    }
102   
103    /**
104    * Gets the rank for this tag.
105    *
106    * @return an int between 1 and 10;
107    */
 
108  0 toggle public int getRank() {
109  0 return this.rank;
110    }
111   
112    /**
113    * Sets the rank for this tag.
114    *
115    */
 
116  2 toggle void calculateRank(int[] thresholds) {
117  10 for (int i = 0; i < thresholds.length; i++) {
118  10 int numberOfBlogEntries = getNumberOfBlogEntries();
119  10 if (numberOfBlogEntries <= thresholds[i]) {
120  2 this.rank = i+1;
121  2 return;
122    }
123    }
124    }
125   
126    }