|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This report was generated with an evaluation server license. Purchase Clover or configure your license. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ResponseIndex | Line # 22 | 96 | 0% | 36 | 46 | 68,9% |
0.6891892
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
(54) | |||
Result | |||
0.527027
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testMultipleSubCategory
![]() |
1 PASS | |
0.527027
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testComment
![]() |
1 PASS | |
0.527027
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testComment
![]() |
1 PASS | |
0.527027
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testMultipleSubCategory
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testPublished
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testUTF8
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoPrimaryCategory
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testPublished
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoExcerpt
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoExcerpt
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoExcerptNoExtendedBody
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoPrimaryCategory
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testNoExcerptNoExtendedBody
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testImport
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testImport
![]() |
1 PASS | |
0.4256757
|
net.sourceforge.pebble.util.importer.MovableTypeImporterTest.testUTF8
![]() |
1 PASS | |
0.29054055
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentRejected
![]() |
1 PASS | |
0.29054055
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackRejected
![]() |
1 PASS | |
0.29054055
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentRejected
![]() |
1 PASS | |
0.29054055
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackRejected
![]() |
1 PASS | |
0.27702704
|
net.sourceforge.pebble.web.action.ViewResponsesActionTest.testActionCalledWithDefaultParametersAndLessThanAPageOfResponses
![]() |
1 PASS | |
0.27702704
|
net.sourceforge.pebble.web.action.ViewResponsesActionTest.testActionCalledWithDefaultParametersAndLessThanAPageOfResponses
![]() |
1 PASS | |
0.2635135
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentApproved
![]() |
1 PASS | |
0.2635135
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentApproved
![]() |
1 PASS | |
0.2635135
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackApproved
![]() |
1 PASS | |
0.2635135
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackApproved
![]() |
1 PASS | |
0.25
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToComment
![]() |
1 PASS | |
0.25
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToComment
![]() |
1 PASS | |
0.22972973
|
net.sourceforge.pebble.domain.CommentTest.testNestedCommentsAreUnindexedWhenParentDeleted
![]() |
1 PASS | |
0.22972973
|
net.sourceforge.pebble.domain.CommentTest.testNestedCommentsAreUnindexedWhenParentDeleted
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredForCommentsWhenBlogEntryRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredForTrackBacksWhenBlogEntryRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredForCommentsWhenBlogEntryRemoved
![]() |
1 PASS | |
0.21621622
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredForTrackBacksWhenBlogEntryRemoved
![]() |
1 PASS | |
0.1891892
|
net.sourceforge.pebble.web.action.PublishBlogEntryActionTest.testPublishBlogEntryNowAndCheckCommentsReindexed
![]() |
1 PASS | |
0.1891892
|
net.sourceforge.pebble.web.action.PublishBlogEntryActionTest.testPublishBlogEntryNowAndCheckCommentsReindexed
![]() |
1 PASS | |
0.18243243
|
net.sourceforge.pebble.domain.BlogTest.testApprovedCommentsForUnpublishedBlogEntriesDontShowUp
![]() |
1 PASS | |
0.18243243
|
net.sourceforge.pebble.domain.BlogTest.testApprovedCommentsForUnpublishedBlogEntriesDontShowUp
![]() |
1 PASS | |
0.17567568
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToCommentThatDoesntExist
![]() |
1 PASS | |
0.17567568
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToBlogEntry
![]() |
1 PASS | |
0.17567568
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToCommentThatDoesntExist
![]() |
1 PASS | |
0.17567568
|
net.sourceforge.pebble.web.action.SaveCommentActionTest.testProcessAsBlogContributorWhenReplyingToBlogEntry
![]() |
1 PASS | |
0.16891892
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentAdded
![]() |
1 PASS | |
0.16891892
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackAdded
![]() |
1 PASS | |
0.16891892
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenCommentAdded
![]() |
1 PASS | |
0.16891892
|
net.sourceforge.pebble.domain.BlogServiceTest.testListenersFiredWhenTrackBackAdded
![]() |
1 PASS | |
0.1554054
|
net.sourceforge.pebble.web.action.PublishBlogEntryActionTest.testPublishBlogEntryAsIsAndCheckCommentsStaysIndexed
![]() |
1 PASS | |
0.1554054
|
net.sourceforge.pebble.web.action.PublishBlogEntryActionTest.testPublishBlogEntryAsIsAndCheckCommentsStaysIndexed
![]() |
1 PASS | |
0.013513514
|
net.sourceforge.pebble.web.action.ViewResponsesActionTest.testActionCalledWithDefaultParameters
![]() |
1 PASS | |
0.013513514
|
net.sourceforge.pebble.web.action.ViewResponsesActionTest.testActionCalledWithDefaultParameters
![]() |
1 PASS | |
1 | package net.sourceforge.pebble.index; | |
2 | ||
3 | import net.sourceforge.pebble.comparator.ReverseResponseIdComparator; | |
4 | import net.sourceforge.pebble.domain.Blog; | |
5 | import net.sourceforge.pebble.domain.BlogEntry; | |
6 | import net.sourceforge.pebble.domain.Response; | |
7 | import net.sourceforge.pebble.domain.State; | |
8 | import org.apache.commons.logging.Log; | |
9 | import org.apache.commons.logging.LogFactory; | |
10 | ||
11 | import java.io.*; | |
12 | import java.util.ArrayList; | |
13 | import java.util.Collections; | |
14 | import java.util.List; | |
15 | import java.util.Collection; | |
16 | ||
17 | /** | |
18 | * Keeps an index of all responses. | |
19 | * | |
20 | * @author Simon Brown | |
21 | */ | |
22 | public class ResponseIndex { | |
23 | ||
24 | private static final Log log = LogFactory.getLog(ResponseIndex.class); | |
25 | ||
26 | private Blog blog; | |
27 | ||
28 | private List<String> approvedResponses = new ArrayList<String>(); | |
29 | private List<String> pendingResponses = new ArrayList<String>(); | |
30 | private List<String> rejectedResponses = new ArrayList<String>(); | |
31 | ||
32 | 1334 |
![]() |
33 | 1334 | this.blog = blog; |
34 | ||
35 | 1334 | approvedResponses = readIndex(State.APPROVED); |
36 | 1334 | pendingResponses = readIndex(State.PENDING); |
37 | 1334 | rejectedResponses = readIndex(State.REJECTED); |
38 | } | |
39 | ||
40 | /** | |
41 | * Clears the index. | |
42 | */ | |
43 | 18 |
![]() |
44 | 18 | approvedResponses = new ArrayList<String>(); |
45 | 18 | writeIndex(State.APPROVED); |
46 | ||
47 | 18 | pendingResponses = new ArrayList<String>(); |
48 | 18 | writeIndex(State.PENDING); |
49 | ||
50 | 18 | rejectedResponses = new ArrayList<String>(); |
51 | 18 | writeIndex(State.REJECTED); |
52 | } | |
53 | ||
54 | /** | |
55 | * Indexes one or more blog entries. | |
56 | * | |
57 | * @param blogEntries a List of BlogEntry instances | |
58 | */ | |
59 | 18 |
![]() |
60 | 18 | for (BlogEntry blogEntry : blogEntries) { |
61 | 18 | for (Response response : blogEntry.getResponses()) { |
62 | 6 | if (response.isApproved()) { |
63 | 0 | approvedResponses.add(response.getGuid()); |
64 | 6 | } else if (response.isPending()) { |
65 | 6 | pendingResponses.add(response.getGuid()); |
66 | 0 | } else if (response.isRejected()) { |
67 | 0 | rejectedResponses.add(response.getGuid()); |
68 | } | |
69 | } | |
70 | } | |
71 | ||
72 | 18 | Collections.sort(approvedResponses, new ReverseResponseIdComparator()); |
73 | 18 | Collections.sort(pendingResponses, new ReverseResponseIdComparator()); |
74 | 18 | Collections.sort(rejectedResponses, new ReverseResponseIdComparator()); |
75 | 18 | writeIndex(State.APPROVED); |
76 | 18 | writeIndex(State.PENDING); |
77 | 18 | writeIndex(State.REJECTED); |
78 | } | |
79 | ||
80 | /** | |
81 | * Indexes a single response. | |
82 | * | |
83 | * @param response a Response instance | |
84 | */ | |
85 | 144 |
![]() |
86 | 144 | if (response.isApproved()) { |
87 | 60 | approvedResponses.add(response.getGuid()); |
88 | 60 | Collections.sort(approvedResponses, new ReverseResponseIdComparator()); |
89 | 60 | writeIndex(State.APPROVED); |
90 | 84 | } else if (response.isPending()) { |
91 | 80 | pendingResponses.add(response.getGuid()); |
92 | 80 | Collections.sort(pendingResponses, new ReverseResponseIdComparator()); |
93 | 80 | writeIndex(State.PENDING); |
94 | 4 | } else if (response.isRejected()) { |
95 | 4 | rejectedResponses.add(response.getGuid()); |
96 | 4 | Collections.sort(rejectedResponses, new ReverseResponseIdComparator()); |
97 | 4 | writeIndex(State.REJECTED); |
98 | } | |
99 | } | |
100 | ||
101 | /** | |
102 | * Unindexes a single response. | |
103 | * | |
104 | * @param response a Response instance | |
105 | */ | |
106 | 76 |
![]() |
107 | 76 | if (approvedResponses.contains(response.getGuid())) { |
108 | 8 | approvedResponses.remove(response.getGuid()); |
109 | 8 | writeIndex(State.APPROVED); |
110 | 68 | } else if (pendingResponses.contains(response.getGuid())) { |
111 | 68 | pendingResponses.remove(response.getGuid()); |
112 | 68 | writeIndex(State.PENDING); |
113 | 0 | } else if (rejectedResponses.contains(response.getGuid())) { |
114 | 0 | rejectedResponses.remove(response.getGuid()); |
115 | 0 | writeIndex(State.REJECTED); |
116 | } | |
117 | } | |
118 | ||
119 | /** | |
120 | * Helper method to load the index. | |
121 | */ | |
122 | 4002 |
![]() |
123 | 4002 | String filename = null; |
124 | 4002 | List<String> responses = new ArrayList<String>(); |
125 | 4002 | if (state == State.APPROVED) { |
126 | 1334 | filename = "responses-approved.index"; |
127 | 2668 | } else if (state == State.PENDING) { |
128 | 1334 | filename = "responses-pending.index"; |
129 | 1334 | } else if (state == State.REJECTED) { |
130 | 1334 | filename = "responses-rejected.index"; |
131 | } | |
132 | ||
133 | 4002 | File indexFile = new File(blog.getIndexesDirectory(), filename); |
134 | 4002 | if (indexFile.exists()) { |
135 | 0 | try { |
136 | 0 | BufferedReader reader = new BufferedReader(new FileReader(indexFile)); |
137 | 0 | String response = reader.readLine(); |
138 | 0 | while (response != null) { |
139 | 0 | responses.add(response); |
140 | 0 | response = reader.readLine(); |
141 | } | |
142 | ||
143 | 0 | reader.close(); |
144 | } catch (Exception e) { | |
145 | 0 | log.error("Error while reading index", e); |
146 | } | |
147 | } | |
148 | ||
149 | 4002 | Collections.sort(responses, new ReverseResponseIdComparator()); |
150 | ||
151 | 4002 | return responses; |
152 | } | |
153 | ||
154 | /** | |
155 | * Helper method to write out the index to disk. | |
156 | */ | |
157 | 328 |
![]() |
158 | 328 | String filename = null; |
159 | 328 | List<String> responses = null; |
160 | 328 | if (state == State.APPROVED) { |
161 | 104 | filename = "responses-approved.index"; |
162 | 104 | responses = approvedResponses; |
163 | 224 | } else if (state == State.PENDING) { |
164 | 184 | filename = "responses-pending.index"; |
165 | 184 | responses = pendingResponses; |
166 | 40 | } else if (state == State.REJECTED) { |
167 | 40 | filename = "responses-rejected.index"; |
168 | 40 | responses = rejectedResponses; |
169 | } | |
170 | ||
171 | 328 | try { |
172 | 328 | File indexFile = new File(blog.getIndexesDirectory(), filename); |
173 | 328 | BufferedWriter writer = new BufferedWriter(new FileWriter(indexFile)); |
174 | ||
175 | 328 | for (String response : responses) { |
176 | 1212 | writer.write(response); |
177 | 1212 | writer.newLine(); |
178 | } | |
179 | ||
180 | 328 | writer.flush(); |
181 | 328 | writer.close(); |
182 | } catch (Exception e) { | |
183 | 0 | log.error("Error while writing index", e); |
184 | } | |
185 | } | |
186 | ||
187 | /** | |
188 | * Gets the number of approved responses for this blog. | |
189 | * | |
190 | * @return an int | |
191 | */ | |
192 | 0 |
![]() |
193 | 0 | return approvedResponses.size(); |
194 | } | |
195 | ||
196 | /** | |
197 | * Gets the number of pending responses for this blog. | |
198 | * | |
199 | * @return an int | |
200 | */ | |
201 | 0 |
![]() |
202 | 0 | return pendingResponses.size(); |
203 | } | |
204 | ||
205 | /** | |
206 | * Gets the number of rejected responses for this blog. | |
207 | * | |
208 | * @return an int | |
209 | */ | |
210 | 0 |
![]() |
211 | 0 | return rejectedResponses.size(); |
212 | } | |
213 | ||
214 | /** | |
215 | * Gets the number of responses for this blog. | |
216 | * | |
217 | * @return an int | |
218 | */ | |
219 | 0 |
![]() |
220 | 0 | return getNumberOfApprovedResponses() + getNumberOfPendingResponses() + getNumberOfRejectedResponses(); |
221 | } | |
222 | ||
223 | /** | |
224 | * Gets the most recent N approved responses. | |
225 | * | |
226 | * @return a List of response IDs | |
227 | */ | |
228 | 0 |
![]() |
229 | 0 | return getRecentApprovedResponses(number); |
230 | } | |
231 | ||
232 | /** | |
233 | * Gets the most recent N approved responses. | |
234 | * | |
235 | * @return a List of response IDs | |
236 | */ | |
237 | 0 |
![]() |
238 | 0 | if (approvedResponses.size() >= number) { |
239 | 0 | return approvedResponses.subList(0, number); |
240 | } else { | |
241 | 0 | return approvedResponses; |
242 | } | |
243 | } | |
244 | ||
245 | /** | |
246 | * Gets the list of approved responses. | |
247 | * | |
248 | * @return a List of response IDs | |
249 | */ | |
250 | 16 |
![]() |
251 | 16 | return new ArrayList<String>(approvedResponses); |
252 | } | |
253 | ||
254 | /** | |
255 | * Gets the list of pending responses. | |
256 | * | |
257 | * @return a List of response IDs | |
258 | */ | |
259 | 12 |
![]() |
260 | 12 | return new ArrayList<String>(pendingResponses); |
261 | } | |
262 | ||
263 | /** | |
264 | * Gets the list of rejected responses. | |
265 | * | |
266 | * @return a List of response IDs | |
267 | */ | |
268 | 0 |
![]() |
269 | 0 | return new ArrayList<String>(rejectedResponses); |
270 | } | |
271 | ||
272 | } |
|