File Source: indexedtag.java
/*
P/P * Method: net.sourceforge.pebble.index.IndexedTag__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.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 public IndexedTag(String name, Blog blog) {
/*
P/P * Method: void net.sourceforge.pebble.index.IndexedTag(String, Blog)
*
* Postconditions:
* this.blog == blog
* init'ed(this.blog)
* this.blogEntries == &new ArrayList(IndexedTag#1)
* this.name != null
* new ArrayList(IndexedTag#1) num objects == 1
*/
59 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 public List<String> getBlogEntries() {
/*
P/P * Method: List getBlogEntries()
*
* Preconditions:
* init'ed(this.blogEntries)
*
* Postconditions:
* return_value == &new ArrayList(getBlogEntries#1)
* new ArrayList(getBlogEntries#1) num objects == 1
*/
68 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 public synchronized void addBlogEntry(String blogEntryId) {
/*
P/P * Method: void addBlogEntry(String)
*
* Preconditions:
* (soft) this.blogEntries != null
*
* Test Vectors:
* blogEntryId: Addr_Set{null}, Inverse{null}
* java.util.List:contains(...)@77: {1}, {0}
*/
77 if (blogEntryId != null && !blogEntries.contains(blogEntryId)) {
78 blogEntries.add(blogEntryId);
79 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 public synchronized void removeBlogEntry(String blogEntryId) {
/*
P/P * Method: void removeBlogEntry(String)
*
* Preconditions:
* (soft) this.blogEntries != null
*
* Test Vectors:
* blogEntryId: Addr_Set{null}, Inverse{null}
*/
89 if (blogEntryId != null) {
90 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 public int getNumberOfBlogEntries() {
/*
P/P * Method: int getNumberOfBlogEntries()
*
* Preconditions:
* this.blogEntries != null
*
* Postconditions:
* init'ed(return_value)
*/
100 return blogEntries.size();
101 }
102
103 /**
104 * Gets the rank for this tag.
105 *
106 * @return an int between 1 and 10;
107 */
108 public int getRank() {
/*
P/P * Method: int getRank()
*
* Preconditions:
* init'ed(this.rank)
*
* Postconditions:
* return_value == this.rank
* init'ed(return_value)
*/
109 return this.rank;
110 }
111
112 /**
113 * Sets the rank for this tag.
114 *
115 */
116 void calculateRank(int[] thresholds) {
/*
P/P * Method: void calculateRank(int[])
*
* Preconditions:
* thresholds != null
* (soft) this.blogEntries != null
* (soft) thresholds.length <= 232-1
* (soft) init'ed(thresholds[...])
*
* Postconditions:
* possibly_updated(this.rank)
*/
117 for (int i = 0; i < thresholds.length; i++) {
118 int numberOfBlogEntries = getNumberOfBlogEntries();
119 if (numberOfBlogEntries <= thresholds[i]) {
120 this.rank = i+1;
121 return;
122 }
123 }
124 }
125
126 }
SofCheck Inspector Build Version : 2.22510
| indexedtag.java |
2010-Jun-25 19:40:32 |
| indexedtag.class |
2010-Jul-19 20:23:38 |