Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
../../../../../img/srcFileCovDistChart7.png 33% of files have more coverage
30   114   6   30
8   57   0,2   1
1     6  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  ViewBlogEntriesByPageAction       Line # 53 30 0% 6 13 66,7% 0.6666667
 
  (2)
 
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.web.action;
33   
34    import net.sourceforge.pebble.Constants;
35    import net.sourceforge.pebble.domain.*;
36    import net.sourceforge.pebble.util.SecurityUtils;
37    import net.sourceforge.pebble.util.Pageable;
38    import net.sourceforge.pebble.web.view.RedirectView;
39    import net.sourceforge.pebble.web.view.View;
40    import net.sourceforge.pebble.web.view.impl.BlogEntriesView;
41   
42    import javax.servlet.ServletException;
43    import javax.servlet.http.HttpServletRequest;
44    import javax.servlet.http.HttpServletResponse;
45    import java.util.List;
46   
47    /**
48    * Views blog entries page by page. The page size is the same as the "number of
49    * blog entries shown on the home page".
50    *
51    * @author Simon Brown
52    */
 
53    public class ViewBlogEntriesByPageAction extends Action {
54   
55    /**
56    * Peforms the processing associated with this action.
57    *
58    * @param request the HttpServletRequest instance.
59    * @param response the HttpServletResponse instance.
60    * @return the next View
61    */
 
62  2 toggle public View process(HttpServletRequest request,
63    HttpServletResponse response)
64    throws ServletException {
65   
66  2 AbstractBlog abstractBlog = (AbstractBlog)getModel().get(Constants.BLOG_KEY);
67   
68  2 if (abstractBlog instanceof MultiBlog) {
69  0 List publicBlogs = BlogManager.getInstance().getPublicBlogs();
70  0 if (publicBlogs.size() == 1) {
71  0 Blog blog = (Blog)publicBlogs.get(0);
72  0 return new RedirectView(blog.getUrl());
73    } else {
74  0 getModel().put(Constants.BLOG_ENTRIES, abstractBlog.getRecentBlogEntries());
75   
76  0 return new BlogEntriesView();
77    }
78    } else {
79  2 Blog blog = (Blog)abstractBlog;
80  2 int page = 1;
81  2 try {
82  2 page = Integer.parseInt(request.getParameter("page"));
83    } catch (NumberFormatException nfe) {
84  2 page = 1;
85    }
86  2 boolean publishedOnly = true;
87  2 if (SecurityUtils.isUserAuthorisedForBlog(blog)) {
88  0 publishedOnly = false;
89    }
90   
91  2 getModel().put(Constants.MONTHLY_BLOG, blog.getBlogForThisMonth());
92  2 getModel().put("displayMode", "page");
93  2 getModel().put("page", page);
94   
95  2 Pageable<String> pageable;
96  2 if (publishedOnly) {
97  2 pageable = new Pageable<String>(blog.getBlogEntryIndex().getPublishedBlogEntries());
98    } else {
99  0 pageable = new Pageable<String>(blog.getBlogEntryIndex().getBlogEntries());
100    }
101   
102  2 pageable.setPageSize(blog.getRecentBlogEntriesOnHomePage());
103  2 pageable.setPage(page);
104  2 List<String> blogEntryIds = pageable.getListForPage();
105  2 List<BlogEntry> blogEntries = blog.getBlogEntries(blogEntryIds);
106   
107  2 getModel().put(Constants.BLOG_ENTRIES, blogEntries);
108  2 getModel().put("pageable", pageable);
109   
110  2 return new BlogEntriesView();
111    }
112    }
113   
114    }