Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

jreceiver.client.common.struts
Class JRecTableAction  view JRecTableAction download JRecTableAction.java

java.lang.Object
  extended byorg.apache.struts.action.Action
      extended byjreceiver.client.common.struts.JRecAction
          extended byjreceiver.client.common.struts.JRecTableAction

public abstract class JRecTableAction
extends JRecAction

A base Action class for all JReceiver Struts application actions Provides session-management, error-management and paging management. Pages are cached in a map in the session. That map is keyed by mapping.getType().

Version:
$Revision: 1.15 $ $Date: 2003/05/16 04:45:46 $

Field Summary
private static int ITEMS_PER_PAGE
           
protected static org.apache.commons.logging.Log log
          logging object
private static int PAGES_TO_CACHE
          cache at most this many pages per user on an LRU basis
 
Fields inherited from class jreceiver.client.common.struts.JRecAction
FORWARD_CANCEL, FORWARD_CONTINUE, FORWARD_EDIT, FORWARD_ERROR, FORWARD_SUCCESS
 
Fields inherited from class org.apache.struts.action.Action
defaultLocale, servlet
 
Constructor Summary
JRecTableAction()
           
 
Method Summary
private  java.lang.String buildEditPath(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, org.apache.struts.action.ActionMapping mapping, java.lang.Object rec_to_edit)
           
protected abstract  void deleteRecs(jreceiver.common.rec.security.User user, javax.servlet.http.HttpSession session, java.util.Vector keys)
          delete the record(s) for the specified key(s)
protected  void deleteSelected(jreceiver.common.rec.security.User user, java.util.Vector recs, javax.servlet.http.HttpSession session, org.apache.struts.action.ActionErrors errors)
          attempt to delete all marked records
 org.apache.struts.action.ActionForward execute(org.apache.struts.action.ActionMapping mapping, org.apache.struts.action.ActionForm action_form, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Examine to request to determine how a form should be loaded or a submit to be processed.
protected abstract  int fetchKeyCount(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req)
          return an approximate total of keys for the current filter
protected abstract  java.util.Vector fetchKeys(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm form, int rec_offset, int rec_count)
          return a range of keys for the current filter
protected abstract  java.util.Vector fetchRecs(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm form, java.util.Vector keys)
          return recs for each key in the vector
protected  java.lang.String getEditForward(javax.servlet.http.HttpServletRequest req, java.lang.Object rec_to_edit)
          Default method to return the forward of the edit form; should be overridden if different edit pages are used based upon record type.
protected abstract  void getEditParams(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, java.lang.Object rec_to_edit, java.util.Map params)
          generate a parameter list used in the redirection to the edit screen
protected  java.lang.Object getFirstSelected(JRecTableForm form)
          return details of the first selected record only
protected abstract  java.lang.String getHandlerName()
          obtain the name of the handler that manages this table
protected static int getPageCount(java.util.Vector all_recs)
           
private  int getPageNo(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm form)
          obtain a valid page_no from the request, initializing view details as needed
private  java.util.Vector getRecsForPage(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm form, int page_no)
          Fetched cached list of recs for a single page from the session.
protected  java.util.Vector getSelected(JRecTableForm form, boolean only_first)
          Obtain a list of recs for the selected rows of the request.
private  java.lang.String getUrlPattern(javax.servlet.http.HttpServletRequest req)
          create a url template for the page navigation machinery
protected  void getUrlPatternParams(javax.servlet.http.HttpServletRequest req, java.util.Map params)
          subclasses can optionally override to include additional params beyond pageNo
private  void load(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm form)
           
protected  boolean onExport(jreceiver.common.rec.security.User user, JRecTableForm table_form, javax.servlet.http.HttpServletResponse resp, org.apache.struts.action.ActionErrors errors)
          default export handler - subclasses that support export should override
protected  void onImport(jreceiver.common.rec.security.User user, JRecTableForm table_form, org.apache.struts.action.ActionErrors errors)
          default import handler - subclasses that support import should override
protected abstract  void onLoad(jreceiver.common.rec.security.User user, javax.servlet.http.HttpServletRequest req, JRecTableForm table_form)
          initialize the form from data in the request (occurs prior to key fetching so that filter params can be specified by querying the form)
 
Methods inherited from class jreceiver.client.common.struts.JRecAction
getUser, getUser, reportDeleteError, reportDeleteError, reportError, reportError, reportError, reportError, reportError, reportExportError, reportImportError, reportImportFileNotFound, reportLoadError, reportSaveError
 
Methods inherited from class org.apache.struts.action.Action
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ITEMS_PER_PAGE

private static final int ITEMS_PER_PAGE
See Also:
Constant Field Values

PAGES_TO_CACHE

private static final int PAGES_TO_CACHE
cache at most this many pages per user on an LRU basis

See Also:
Constant Field Values

log

protected static org.apache.commons.logging.Log log
logging object

Constructor Detail

JRecTableAction

public JRecTableAction()
Method Detail

getHandlerName

protected abstract java.lang.String getHandlerName()
obtain the name of the handler that manages this table


onLoad

protected abstract void onLoad(jreceiver.common.rec.security.User user,
                               javax.servlet.http.HttpServletRequest req,
                               JRecTableForm table_form)
                        throws jreceiver.common.JRecException
initialize the form from data in the request (occurs prior to key fetching so that filter params can be specified by querying the form)


fetchKeys

protected abstract java.util.Vector fetchKeys(jreceiver.common.rec.security.User user,
                                              javax.servlet.http.HttpServletRequest req,
                                              JRecTableForm form,
                                              int rec_offset,
                                              int rec_count)
                                       throws jreceiver.common.JRecException
return a range of keys for the current filter


fetchRecs

protected abstract java.util.Vector fetchRecs(jreceiver.common.rec.security.User user,
                                              javax.servlet.http.HttpServletRequest req,
                                              JRecTableForm form,
                                              java.util.Vector keys)
                                       throws jreceiver.common.JRecException
return recs for each key in the vector

Note that keys can either be java.lang.Number, java.lang.String or jreceiver.common.rec.Key


fetchKeyCount

protected abstract int fetchKeyCount(jreceiver.common.rec.security.User user,
                                     javax.servlet.http.HttpServletRequest req)
                              throws jreceiver.common.JRecException
return an approximate total of keys for the current filter

Note that 'SELECT COUNT(*)' can be an expensive operation. Values are cached in session.


getEditParams

protected abstract void getEditParams(jreceiver.common.rec.security.User user,
                                      javax.servlet.http.HttpServletRequest req,
                                      java.lang.Object rec_to_edit,
                                      java.util.Map params)
                               throws jreceiver.common.JRecException
generate a parameter list used in the redirection to the edit screen


deleteRecs

protected abstract void deleteRecs(jreceiver.common.rec.security.User user,
                                   javax.servlet.http.HttpSession session,
                                   java.util.Vector keys)
                            throws jreceiver.common.JRecException
delete the record(s) for the specified key(s)


execute

public org.apache.struts.action.ActionForward execute(org.apache.struts.action.ActionMapping mapping,
                                                      org.apache.struts.action.ActionForm action_form,
                                                      javax.servlet.http.HttpServletRequest req,
                                                      javax.servlet.http.HttpServletResponse resp)
                                               throws java.io.IOException,
                                                      javax.servlet.ServletException
Examine to request to determine how a form should be loaded or a submit to be processed.


load

private void load(jreceiver.common.rec.security.User user,
                  javax.servlet.http.HttpServletRequest req,
                  JRecTableForm form)
           throws jreceiver.common.JRecException

getPageNo

private int getPageNo(jreceiver.common.rec.security.User user,
                      javax.servlet.http.HttpServletRequest req,
                      JRecTableForm form)
               throws jreceiver.common.JRecException
obtain a valid page_no from the request, initializing view details as needed


getEditForward

protected java.lang.String getEditForward(javax.servlet.http.HttpServletRequest req,
                                          java.lang.Object rec_to_edit)
                                   throws jreceiver.common.JRecException
Default method to return the forward of the edit form; should be overridden if different edit pages are used based upon record type.


buildEditPath

private java.lang.String buildEditPath(jreceiver.common.rec.security.User user,
                                       javax.servlet.http.HttpServletRequest req,
                                       org.apache.struts.action.ActionMapping mapping,
                                       java.lang.Object rec_to_edit)
                                throws jreceiver.common.JRecException

getSelected

protected java.util.Vector getSelected(JRecTableForm form,
                                       boolean only_first)
                                throws jreceiver.common.JRecException
Obtain a list of recs for the selected rows of the request.

Chances are that we're getting the cached records.

Note that because we're using a form with request scope, it doesn't retain the records prior to the submit. We must verify the keys are equivalent. If not, we'll have to get the recs again.


getFirstSelected

protected java.lang.Object getFirstSelected(JRecTableForm form)
                                     throws jreceiver.common.JRecException
return details of the first selected record only


deleteSelected

protected void deleteSelected(jreceiver.common.rec.security.User user,
                              java.util.Vector recs,
                              javax.servlet.http.HttpSession session,
                              org.apache.struts.action.ActionErrors errors)
attempt to delete all marked records


getRecsForPage

private java.util.Vector getRecsForPage(jreceiver.common.rec.security.User user,
                                        javax.servlet.http.HttpServletRequest req,
                                        JRecTableForm form,
                                        int page_no)
                                 throws jreceiver.common.JRecException
Fetched cached list of recs for a single page from the session.

The form's state will determine the filter used to obtain keys and ultimately recs to populate the page.

TODO: adapt for different page sizes

TODO: performance - get addl pages of keys whenever querying for keys to reduce roundtrips and db load


getUrlPatternParams

protected void getUrlPatternParams(javax.servlet.http.HttpServletRequest req,
                                   java.util.Map params)
                            throws jreceiver.common.JRecException
subclasses can optionally override to include additional params beyond pageNo

e.g. PlaylistsAction can append "&plMask=3"


getUrlPattern

private java.lang.String getUrlPattern(javax.servlet.http.HttpServletRequest req)
                                throws jreceiver.common.JRecException
create a url template for the page navigation machinery


getPageCount

protected static int getPageCount(java.util.Vector all_recs)

onImport

protected void onImport(jreceiver.common.rec.security.User user,
                        JRecTableForm table_form,
                        org.apache.struts.action.ActionErrors errors)
                 throws jreceiver.common.JRecException
default import handler - subclasses that support import should override


onExport

protected boolean onExport(jreceiver.common.rec.security.User user,
                           JRecTableForm table_form,
                           javax.servlet.http.HttpServletResponse resp,
                           org.apache.struts.action.ActionErrors errors)
                    throws jreceiver.common.JRecException
default export handler - subclasses that support export should override