org.randomcoder.article
Class AbstractArticleListController<PageCommand extends ArticlePageCommand>

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
      extended by org.springframework.web.context.support.WebApplicationObjectSupport
          extended by org.springframework.web.servlet.support.WebContentGenerator
              extended by org.springframework.web.servlet.mvc.AbstractController
                  extended by org.springframework.web.servlet.mvc.BaseCommandController
                      extended by org.springframework.web.servlet.mvc.AbstractCommandController
                          extended by org.randomcoder.article.AbstractArticleListController<PageCommand>
All Implemented Interfaces:
ApplicationContextAware, ServletContextAware, Controller
Direct Known Subclasses:
ArticleTagListController, HomeController

public abstract class AbstractArticleListController<PageCommand extends ArticlePageCommand>
extends AbstractCommandController

Abstract base class for controllers which generate article lists.

 Copyright (c) 2006, Craig Condit. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
 
   * Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
     
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
 


Field Summary
protected  ArticleDao articleDao
          Article DAO.
protected  ContentFilter contentFilter
          Content Filter.
protected  int defaultPageSize
          Default page size.
protected  int maximumPageSize
          Maximum page size.
protected  TagBusiness tagBusiness
          Tag Business.
protected  String viewName
          View name.
 
Fields inherited from class org.springframework.web.servlet.mvc.BaseCommandController
DEFAULT_COMMAND_NAME
 
Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator
METHOD_GET, METHOD_HEAD, METHOD_POST
 
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
 
Constructor Summary
AbstractArticleListController()
           
 
Method Summary
protected abstract  int countArticlesBeforeDate(PageCommand command, Date cutoffDate)
          Counts articles before a given cutoff date.
protected abstract  String getSubTitle(PageCommand command)
          Gets the subtitle to add to the page.
protected  ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)
          Populates the model.
protected abstract  List<Article> listArticlesBeforeDateInRange(PageCommand command, Date cutoffDate, int start, int limit)
          Lists articles before a given cutoff date.
protected abstract  List<Article> listArticlesBetweenDates(PageCommand command, Date startDate, Date endDate)
          Lists articles between start and end dates.
 void setArticleDao(ArticleDao articleDao)
          Sets the ArticleDao implementation to use.
 void setContentFilter(ContentFilter contentFilter)
          Sets the content filter to use for decorating articles.
 void setDefaultPageSize(int defaultPageSize)
          Sets the default number of items to display per page (defaults to 10).
 void setMaximumPageSize(int maximumPageSize)
          Sets the maximum number of items to allow per page (defaults to 50).
 void setTagBusiness(TagBusiness tagBusiness)
          Sets the TagBusiness implementation to use.
 void setViewName(String viewName)
          Sets the name of the view to forward to once processing is complete.
 
Methods inherited from class org.springframework.web.servlet.mvc.AbstractCommandController
handleRequestInternal
 
Methods inherited from class org.springframework.web.servlet.mvc.BaseCommandController
bindAndValidate, checkCommand, createBinder, createCommand, getBindingErrorProcessor, getCommand, getCommandClass, getCommandName, getMessageCodesResolver, getPropertyEditorRegistrars, getValidator, getValidators, initApplicationContext, initBinder, isValidateOnBinding, onBind, onBind, onBindAndValidate, prepareBinder, setBindingErrorProcessor, setCommandClass, setCommandName, setMessageCodesResolver, setPropertyEditorRegistrar, setPropertyEditorRegistrars, setValidateOnBinding, setValidator, setValidators, suppressBinding, suppressValidation, suppressValidation, suppressValidation, useDirectFieldAccess
 
Methods inherited from class org.springframework.web.servlet.mvc.AbstractController
handleRequest, isSynchronizeOnSession, setSynchronizeOnSession
 
Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator
applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isRequireSession, isUseCacheControlHeader, isUseExpiresHeader, preventCaching, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseExpiresHeader
 
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, isContextRequired, setServletContext
 
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

articleDao

protected ArticleDao articleDao
Article DAO.


tagBusiness

protected TagBusiness tagBusiness
Tag Business.


contentFilter

protected ContentFilter contentFilter
Content Filter.


viewName

protected String viewName
View name.


defaultPageSize

protected int defaultPageSize
Default page size.


maximumPageSize

protected int maximumPageSize
Maximum page size.

Constructor Detail

AbstractArticleListController

public AbstractArticleListController()
Method Detail

setArticleDao

public void setArticleDao(ArticleDao articleDao)
Sets the ArticleDao implementation to use.

Parameters:
articleDao - ArticleDao implementation

setTagBusiness

public void setTagBusiness(TagBusiness tagBusiness)
Sets the TagBusiness implementation to use.

Parameters:
tagBusiness - TagBusiness implementation

setDefaultPageSize

public void setDefaultPageSize(int defaultPageSize)
Sets the default number of items to display per page (defaults to 10).

Parameters:
defaultPageSize - default number of items per page

setMaximumPageSize

public void setMaximumPageSize(int maximumPageSize)
Sets the maximum number of items to allow per page (defaults to 50).

Parameters:
maximumPageSize - maximum number of items per page

setContentFilter

public void setContentFilter(ContentFilter contentFilter)
Sets the content filter to use for decorating articles.

Parameters:
contentFilter - ContentFilter implementation

setViewName

public void setViewName(String viewName)
Sets the name of the view to forward to once processing is complete.

Parameters:
viewName - view name

listArticlesBetweenDates

protected abstract List<Article> listArticlesBetweenDates(PageCommand command,
                                                          Date startDate,
                                                          Date endDate)
Lists articles between start and end dates.

Parameters:
command - page command
startDate - start date
endDate - end date
Returns:
list of Articles

listArticlesBeforeDateInRange

protected abstract List<Article> listArticlesBeforeDateInRange(PageCommand command,
                                                               Date cutoffDate,
                                                               int start,
                                                               int limit)
Lists articles before a given cutoff date.

Parameters:
command - page command
cutoffDate - cutoff date
start - starting result
limit - limit on number of results
Returns:
list of Articles

countArticlesBeforeDate

protected abstract int countArticlesBeforeDate(PageCommand command,
                                               Date cutoffDate)
Counts articles before a given cutoff date.

Parameters:
command - page command
cutoffDate - cutoff date
Returns:
number of articles which match

getSubTitle

protected abstract String getSubTitle(PageCommand command)
Gets the subtitle to add to the page.

Returns:
subtitle or null if none

handle

protected ModelAndView handle(HttpServletRequest request,
                              HttpServletResponse response,
                              Object command,
                              BindException errors)
Populates the model.

Specified by:
handle in class AbstractCommandController


Copyright © 2006-2010 Craig Condit. All Rights Reserved.