com.opencms.defaults
Class CmsShowContent

java.lang.Object
  |
  +--com.opencms.template.A_CmsTemplate
        |
        +--com.opencms.template.CmsXmlTemplate
              |
              +--com.opencms.defaults.CmsShowContent
All Implemented Interfaces:
I_CmsConstants, I_CmsLogChannels, I_CmsTemplate, I_CmsXmlTemplate

public class CmsShowContent
extends CmsXmlTemplate

Generic class for showing information encapsulated by contentdefinition objects. There are mainly two user methods in this template class for this purpose: getEntry and getList. The getEntry method accepts an id or read it from the url parameters (it has to be named id to be found) if given and set datablocks inside the template with values returned by all public get-methods of the contentdefinition that returns a String and have no parameters. This method must be called in the template before acccessing any of this data with process tags. The getList method builds a list of contentdefinition entries. It invokes a filtermethod defined inside a datablock named <filtermethod>. The user parameter of type String passed to the filtermethod is taken from the url parameters or from a default value. The getList method accepts a name and a defaut value in a comma seperated String in this way : name, defaultvalue. The entrys for the list will be filled by appending a processed datablock with the name listentry. Every get-method will be invoked for every entry unless a tag named <method> is given where a commaseperated list of exactly typed get-method names can be given that results in invoking only this methods (for performance improvement if not all values are needed and many get-methods are given). The filtermethod is assumed to have the following signature: filtermehodname(CmsObject, String). If one wants to use filtermethods with other signatures he has to derive from this class and override the method invokeFilterMethod where the filtermethod is actually invoked. For both methods the fully qualified classname of the contentdefinition has to be stated in a datablock with the name <contentdefinition_class>. Note: the method getUniqueId(CmsObject) will be invoked for the contentdefinition class in any case, and the datablock uniqueid can be used in the template to refer to the id of an contentdefinition object

Author:
Michael Dernen changed: the tagcontent parameter for getList may only use filterparameter0 to filterparameter9.

Field Summary
protected static String C_CONSTRUCTOR_IS_NOT_SUBCLASS_OF_A_CMSCONTENTDEFINITION
          Error message in case the constructor is not a subclass of A_CmsContentDefinition.
protected static String C_CONSTRUCTOR_THROWED_EXCEPTION
          Error message if the constructor in case the contentdefinition class throws an exception.
protected static String C_CONTENTDEFINITION_CLASS_DATABLOCK
          The name of the datablock containing the contentdefinition's fully qualified classname.
protected static String C_ERROR_TEXT
          Error text that will be set inside the template if a get-method throws an exception.
protected static String C_FILTER_PARAMETERS_START
          replaces the tagcontent for usermethod "getList"
protected static String C_FILTERMETHOD_DATABLOCK
          The name of the datablock containing the name of the filtermethod to use.
protected static String C_ID_PARAMETER
          The name of the id parameter.
protected static String C_LISTENTRY_DATABLOCK
          The name of the datablock to define a listentry.
protected static String C_METHODS_TO_USE_DATABLOCK
          The name of the datablock to define which get-methods to invoke.
protected static String C_MISSING_ID_PARAMETER
          Error message for a missing id parameter.
protected static String C_NON_NUMERICAL_ID_PARAMETER
          Error message in case a non-numerical id parameter is given.
 
Fields inherited from class com.opencms.template.CmsXmlTemplate
C_BODY_ELEMENT, C_DEBUG, C_FRAME_SELECTOR, m_cache
 
Fields inherited from interface com.opencms.core.I_CmsConstants
C_ACCESS_DEFAULT_FLAGS, C_ACCESS_GROUP, C_ACCESS_GROUP_READ, C_ACCESS_GROUP_VISIBLE, C_ACCESS_GROUP_WRITE, C_ACCESS_INTERNAL_READ, C_ACCESS_OWNER, C_ACCESS_OWNER_READ, C_ACCESS_OWNER_VISIBLE, C_ACCESS_OWNER_WRITE, C_ACCESS_PUBLIC, C_ACCESS_PUBLIC_READ, C_ACCESS_PUBLIC_VISIBLE, C_ACCESS_PUBLIC_WRITE, C_ACCESS_READ, C_ACCESS_VISIBLE, C_ACCESS_WRITE, C_ADDITIONAL_INFO_EXPLORERSETTINGS, C_ADDITIONAL_INFO_PREFERENCES, C_ADDITIONAL_INFO_STARTSETTINGS, C_ADDITIONAL_INFO_TASKSETTINGS, C_ADDITIONAL_INFO_TOWN, C_ADDITIONAL_INFO_ZIPCODE, C_AT_LEAST_ONCE, C_CLUSTERURL, C_CONFIGURATION_CACHE, C_CONFIGURATION_CLASS, C_CONFIGURATION_REGISTRY, C_CONFIGURATION_RESOURCEBROKER, C_COPYRIGHT, C_DEFAULT_SITE, C_DELETE_HISTORY, C_ENABLE_HISTORY, C_ERRPREFIX, C_ERRSPERATOR, C_EXPORT_TAG_ACCESS, C_EXPORT_TAG_ADDRESS, C_EXPORT_TAG_CREATOR, C_EXPORT_TAG_DATE, C_EXPORT_TAG_DEFAULTGROUP, C_EXPORT_TAG_DESCRIPTION, C_EXPORT_TAG_DESTINATION, C_EXPORT_TAG_EMAIL, C_EXPORT_TAG_EXPORT, C_EXPORT_TAG_FILE, C_EXPORT_TAG_FIRSTNAME, C_EXPORT_TAG_FLAGS, C_EXPORT_TAG_GROUP, C_EXPORT_TAG_GROUPDATA, C_EXPORT_TAG_GROUPNAME, C_EXPORT_TAG_INFO, C_EXPORT_TAG_LASTMODIFIED, C_EXPORT_TAG_LASTNAME, C_EXPORT_TAG_LAUNCHER_START_CLASS, C_EXPORT_TAG_MODULEXPORT, C_EXPORT_TAG_NAME, C_EXPORT_TAG_OC_VERSION, C_EXPORT_TAG_PARENTGROUP, C_EXPORT_TAG_PASSWORD, C_EXPORT_TAG_PROJECT, C_EXPORT_TAG_PROPERTIES, C_EXPORT_TAG_PROPERTY, C_EXPORT_TAG_RECOVERYPASSWORD, C_EXPORT_TAG_SECTION, C_EXPORT_TAG_SOURCE, C_EXPORT_TAG_TYPE, C_EXPORT_TAG_USER, C_EXPORT_TAG_USERDATA, C_EXPORT_TAG_USERGROUPDATA, C_EXPORT_TAG_USERGROUPS, C_EXPORT_TAG_USERINFO, C_EXPORT_TAG_VALUE, C_EXPORT_TAG_VERSION, C_EXPORT_VERSION, C_EXPORT_XMLFILENAME, C_EXPORTONLYFILES, C_EXPORTONLYUSERS, C_EXPORTPOINT, C_EXPORTPOINT_PATH, C_EXPORTUSERSFILES, C_FCONTENT, C_FELEMENT, C_FILE, C_FILECONTENT, C_FILES_IMPORTED, C_FLAG_DISABLED, C_FLAG_ENABLED, C_FLAG_GROUP_PROJECTCOWORKER, C_FLAG_GROUP_PROJECTMANAGER, C_FLAG_GROUP_ROLE, C_FOLDER, C_FOLDER_SEPARATOR, C_GROUP, C_GROUP_ADMIN, C_GROUP_GUEST, C_GROUP_PROJECTLEADER, C_GROUP_USERS, C_LINKCHECKTABLE_DATE, C_MAX_LENGTH_RESOURCE_NAME, C_MODULE_PROPERTY_ADDITIONAL_RESOURCES, C_MODULE_PROPERTY_ADDITIONAL_RESOURCES_SEPARATOR, C_MODUS_AUTO, C_MODUS_EXPORT, C_MODUS_EXTERN, C_MODUS_OFFLINE, C_MODUS_ONLINE, C_MOUNTPOINT_FILESYSTEM, C_MOUNTPOINT_MYSQL, C_NEVER, C_NO_FILES_IMPORTED, C_ORDER_AGENTUSER, C_ORDER_ENDTIME, C_ORDER_ID, C_ORDER_INITIATORUSER, C_ORDER_NAME, C_ORDER_ORIGINALUSER, C_ORDER_PERCENTAGE, C_ORDER_PRIORITY, C_ORDER_ROLE, C_ORDER_STARTTIME, C_ORDER_STATE, C_ORDER_TASKTYPE, C_ORDER_TIMEOUT, C_ORDER_WAKEUPTIME, C_PASSWORD_MINIMUMSIZE, C_PROJECT_ONLINE, C_PROJECT_ONLINE_ID, C_PROJECT_STATE_ARCHIVE, C_PROJECT_STATE_INVISIBLE, C_PROJECT_STATE_LOCKED, C_PROJECT_STATE_UNLOCKED, C_PROJECT_TYPE_INVISIBLE, C_PROJECT_TYPE_NORMAL, C_PROJECT_TYPE_TEMPORARY, C_PROPERTY_ACTIV, C_PROPERTY_CHANNELID, C_PROPERTY_CONTENT_ENCODING, C_PROPERTY_DEFAULT_FILE, C_PROPERTY_DESCRIPTION, C_PROPERTY_EXPORT, C_PROPERTY_EXPORTNAME, C_PROPERTY_KEYWORDS, C_PROPERTY_NAVPOS, C_PROPERTY_NAVTEXT, C_PROPERTY_RELATIVEROOT, C_PROPERTY_TEMPLATETYPE, C_PROPERTY_TITLE, C_PROPERTY_VISIBLE, C_PUBLISH_METHOD_LINK, C_REGISTRY_DESTINATION, C_REGISTRY_HISTORY, C_REGISTRY_KNOWNLAUNCHERS, C_REGISTRY_LAUNCHER, C_REGISTRY_SOURCE, C_REQUEST_CONSOLE, C_REQUEST_HTTP, C_RESPONSE_CONSOLE, C_RESPONSE_HTTP, C_ROOT, C_ROOT_TEMPLATE_NAME, C_ROOTNAME_COS, C_ROOTNAME_VFS, C_SESSION_ADMIN_POS, C_SESSION_BROADCASTMESSAGE, C_SESSION_CONTENT_ENCODING, C_SESSION_CURRENTGROUP, C_SESSION_DATA, C_SESSION_IS_DIRTY, C_SESSION_MESSAGEPENDING, C_SESSION_MODULE_VECTOR, C_SESSION_PROJECT, C_SESSION_THREAD_ERROR, C_SESSION_USERNAME, C_SORT_ASC, C_SORT_DESC, C_START_ACCESSFLAGS, C_START_DEFAULTGROUP, C_START_LANGUAGE, C_START_LOCKDIALOG, C_START_PROJECT, C_START_VIEW, C_STATE_CHANGED, C_STATE_DELETED, C_STATE_NEW, C_STATE_UNCHANGED, C_STATICEXPORT_PATH, C_STATICEXPORT_START, C_SYNCHRONISATION_PATH, C_SYNCHRONISATION_PROJECT, C_SYNCHRONISATION_RESOURCE, C_SYNCHRONISATION_RESOURCETAG, C_SYSTEMPROPERTY_CRONTABLE, C_SYSTEMPROPERTY_EXPORTPATH, C_SYSTEMPROPERTY_EXTENSIONS, C_SYSTEMPROPERTY_LINKCHECKTABLE, C_SYSTEMPROPERTY_MIMETYPES, C_SYSTEMPROPERTY_MOUNTPOINT, C_SYSTEMPROPERTY_RESOURCE_TYPE, C_TABLE_CHANNELID, C_TASK_FILTER, C_TASK_MESSAGES, C_TASK_MESSAGES_ACCEPTED, C_TASK_MESSAGES_COMPLETED, C_TASK_MESSAGES_FORWARDED, C_TASK_MESSAGES_MEMBERS, C_TASK_ORDER_BY_DATE, C_TASK_ORDER_BY_NAME, C_TASK_PRIORITY_HIGH, C_TASK_PRIORITY_LOW, C_TASK_PRIORITY_NORMAL, C_TASK_STATE_ENDED, C_TASK_STATE_HALTED, C_TASK_STATE_NOTENDED, C_TASK_STATE_PREPARE, C_TASK_STATE_START, C_TASK_STATE_STARTED, C_TASK_VIEW_ALL, C_TASKLOG_SYSTEM, C_TASKLOG_USER, C_TASKORDER_NONE, C_TASKORDER_STARTDATE, C_TASKORDER_TIMEOUT, C_TASKS_ACTIVE, C_TASKS_ALL, C_TASKS_DONE, C_TASKS_NEW, C_TASKS_OPEN, C_TASKSORDER_TASKNAME, C_TEMP_PREFIX, C_TFACCESS, C_TFGROUP, C_TFILEOBJ, C_TFILES, C_TFNAME, C_TFPROPERTYINFO, C_TFPROPERTYNAME, C_TFPROPERTYTYPE, C_TFPROPERTYVALUE, C_TFTYPE, C_TFTYPENAME, C_TFUSER, C_TGDESC, C_TGFLAG, C_TGNAME, C_TGPARENTGROUP, C_TGROUPOBJ, C_TGROUPS, C_TGROUPUSERS, C_TGUSER, C_TUADDINFO, C_TUDESC, C_TUDGROUP, C_TUDISABLED, C_TUEMAIL, C_TUFIRSTNAME, C_TUFLAG, C_TUGROUP, C_TUINFOKEY, C_TUINFOVALUE, C_TULOGIN, C_TUNAME, C_TUPASSWD, C_TUSERGROUPS, C_TUSEROBJ, C_TUSERS, C_TYPE_BODY_NAME, C_TYPE_COMPATIBLEPLAIN_NAME, C_TYPE_FOLDER, C_TYPE_FOLDER_NAME, C_TYPE_IMAGE_NAME, C_TYPE_LAST_INDEX, C_TYPE_PAGE_NAME, C_TYPE_PLAIN_NAME, C_UNKNOWN_ID, C_UNKNOWN_INT, C_UNKNOWN_LAUNCHER, C_UNKNOWN_LAUNCHER_ID, C_UNKNOWN_LONG, C_URL_PREFIX_EXPORT, C_URL_PREFIX_HTTP, C_URL_PREFIX_HTTPS, C_URL_PREFIX_SERVERNAME, C_USER, C_USER_ADMIN, C_USER_GUEST, C_USER_TYPE_SYSTEMANDWEBUSER, C_USER_TYPE_SYSTEMUSER, C_USER_TYPE_WEBUSER, C_WEB_APP_REPLACE_KEY, C_WEEKS_HISTORY, C_WHATEVER, C_XML_BODY_ELEMENT
 
Fields inherited from interface com.opencms.boot.I_CmsLogChannels
C_FLEX_CACHE, C_FLEX_LOADER, C_LOGGING, C_MODULE_CRITICAL, C_MODULE_DEBUG, C_MODULE_INFO, C_OPENCMS_CACHE, C_OPENCMS_CRITICAL, C_OPENCMS_CRONSCHEDULER, C_OPENCMS_DEBUG, C_OPENCMS_ELEMENTCACHE, C_OPENCMS_INFO, C_OPENCMS_INIT, C_OPENCMS_POOL, C_OPENCMS_STATICEXPORT, C_OPENCMS_STREAMING, C_PREPROCESSOR_IS_LOGGING
 
Constructor Summary
CmsShowContent()
           
 
Method Summary
 CmsCacheDirectives getCacheDirectives(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector)
          Gets the caching information from the current template class.
 Object getEntry(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
          Usermethod to fill template datablocks with values of a contentdefinition's get-methods.
protected  ArrayList getGetMethods(Class cdClass)
          This methods collects all "getXYZ" methods of the contentdefinition.
protected  ArrayList getGetMethodsByName(Class cdClass, String[] names)
          This methods collects all get-methods with the names specified in the String array names.
 Object getList(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
          User-method to build a list of contentdefinition entries.
protected  String getUserParameter(Hashtable parameters, String tagcontent)
          Gets the userparameter from tagcontent of the getList method-tag or from url parameters.
protected  Vector invokeFilterMethod(CmsObject cms, Class cdClass, String name, String userparameter)
          Invokes the filtermethod and returns a Vector of contentdefinition objects returned by the filtermethod.
protected  void setDatablocks(CmsXmlTemplateFile template, A_CmsContentDefinition contentDefinition, ArrayList methods)
          This method automatically fills all datablocks in the template that fit to a special name scheme.
 
Methods inherited from class com.opencms.template.CmsXmlTemplate
collectCacheDirectives, counter, createElement, getClassName, getContent, getContent, getDescription, getEncoding, getFileUri, getFrameQueryString, getFrameTarget, getKey, getKeywords, getMethodCacheDirectives, getOwnTemplateFile, getPathUri, getProperty, getQueryString, getRequestIp, getServletPath, getSessionId, getStylesheet, getTemplateClassName, getTemplateFileName, getTemplateSelector, getTitle, getTitleEscaped, getUri, getUriWithParameter, isStreamable, isTemplateCacheSet, mergeAbsolutePath, mergeAbsoluteUrl, parameters, registerVariantDeps, setEncoding, setTemplateCache, shouldReload, startProcessing, templateElement, throwException, throwException, throwException
 
Methods inherited from class com.opencms.template.A_CmsTemplate
debugPrint, isCacheable, isExportable, isProxyPrivateCacheable, isProxyPublicCacheable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.opencms.template.I_CmsTemplate
isCacheable, isExportable, isProxyPrivateCacheable, isProxyPublicCacheable
 

Field Detail

C_CONTENTDEFINITION_CLASS_DATABLOCK

protected static final String C_CONTENTDEFINITION_CLASS_DATABLOCK
The name of the datablock containing the contentdefinition's fully qualified classname.

See Also:
Constant Field Values

C_FILTERMETHOD_DATABLOCK

protected static final String C_FILTERMETHOD_DATABLOCK
The name of the datablock containing the name of the filtermethod to use.

See Also:
Constant Field Values

C_FILTER_PARAMETERS_START

protected static final String C_FILTER_PARAMETERS_START
replaces the tagcontent for usermethod "getList"

See Also:
Constant Field Values

C_METHODS_TO_USE_DATABLOCK

protected static final String C_METHODS_TO_USE_DATABLOCK
The name of the datablock to define which get-methods to invoke. If a datablock with this name is not given all get-methods will be invoked.

See Also:
Constant Field Values

C_LISTENTRY_DATABLOCK

protected static final String C_LISTENTRY_DATABLOCK
The name of the datablock to define a listentry.

See Also:
Constant Field Values

C_MISSING_ID_PARAMETER

protected static final String C_MISSING_ID_PARAMETER
Error message for a missing id parameter.

See Also:
Constant Field Values

C_CONSTRUCTOR_THROWED_EXCEPTION

protected static final String C_CONSTRUCTOR_THROWED_EXCEPTION
Error message if the constructor in case the contentdefinition class throws an exception.

See Also:
Constant Field Values

C_CONSTRUCTOR_IS_NOT_SUBCLASS_OF_A_CMSCONTENTDEFINITION

protected static final String C_CONSTRUCTOR_IS_NOT_SUBCLASS_OF_A_CMSCONTENTDEFINITION
Error message in case the constructor is not a subclass of A_CmsContentDefinition.

See Also:
Constant Field Values

C_NON_NUMERICAL_ID_PARAMETER

protected static final String C_NON_NUMERICAL_ID_PARAMETER
Error message in case a non-numerical id parameter is given.

See Also:
Constant Field Values

C_ERROR_TEXT

protected static final String C_ERROR_TEXT
Error text that will be set inside the template if a get-method throws an exception.

See Also:
Constant Field Values

C_ID_PARAMETER

protected static final String C_ID_PARAMETER
The name of the id parameter.

See Also:
Constant Field Values
Constructor Detail

CmsShowContent

public CmsShowContent()
Method Detail

getEntry

public Object getEntry(CmsObject cms,
                       String tagcontent,
                       A_CmsXmlContent doc,
                       Object userObject)
                throws CmsException
Usermethod to fill template datablocks with values of a contentdefinition's get-methods.

Parameters:
cms - CmsObject Object for accessing system resources.
tagcontent - the tagcontent passed to the method. This can be an id value which will be used if the parameter id is not found parameters passed with the request (url parameters).
doc - reference to the A_CmsXmlContent object of the initiating XLM document
Returns:
String or byte[] with the content of this subelement
Throws:
CmsException - in case of unrecoverable errors

getList

public Object getList(CmsObject cms,
                      String tagcontent,
                      A_CmsXmlContent doc,
                      Object userObject)
               throws CmsException
User-method to build a list of contentdefinition entries.

Parameters:
cms - CmsObject Object for accessing system resources.
tagcontent - comma separated name, default value pair. The name is the name of an url parameter which value will be passed to the filtermethod if given. If the url parameter is not found the default value will be used as a userparameter for the filtermethod.
doc - reference to the A_CmsXmlContent object of the initiating XLM document.
Returns:
String or byte[] with the content of this subelement.
Throws:
CmsException - in case of unrecoverable errors

getUserParameter

protected String getUserParameter(Hashtable parameters,
                                  String tagcontent)
                           throws CmsException
Gets the userparameter from tagcontent of the getList method-tag or from url parameters. The tagcontent should contain the name of an url parameter and a default value for this parameter. For example: name,B. If the url parameter can be fetched from the parameters Hashtable this value will be returned otherwise the default value (in this example B). If the tagcontent contains a String without any commas this value will be taken as the userparameter.

Parameters:
parameters - Hashtable with the url parameters
tagcontent - String with the content of the method tag
Returns:
String with the value of the userparameter
CmsException

getGetMethods

protected ArrayList getGetMethods(Class cdClass)
This methods collects all "getXYZ" methods of the contentdefinition.

Parameters:
cdClass - the class object of the contentdefinition class
Returns:
ArrayList of java.lang.reflect.Method objects

getGetMethodsByName

protected ArrayList getGetMethodsByName(Class cdClass,
                                        String[] names)
                                 throws NoSuchMethodException
This methods collects all get-methods with the names specified in the String array names. All these methods has to be without parameters and should return a String (if they don't return a String there might be thrown an exception, when the return value will be casted to a String in the method setDatablocks which will result in setting an error text instead of the output of the method inside the template).

Parameters:
cdClass - the class object of the contentdefinition class
Returns:
ArrayList of java.lang.reflect.Method objects
Throws:
CmsException - in case of unrecoverable errors
NoSuchMethodException

setDatablocks

protected void setDatablocks(CmsXmlTemplateFile template,
                             A_CmsContentDefinition contentDefinition,
                             ArrayList methods)
                      throws CmsException
This method automatically fills all datablocks in the template that fit to a special name scheme. A datablock named "xyz" is filled with the value of a "getXYZ" method form the content defintion.

Parameters:
template - The template file of this template
contentDefinition - The actual content defintion object
Throws:
CmsException - in case of unrecoverable erros

invokeFilterMethod

protected Vector invokeFilterMethod(CmsObject cms,
                                    Class cdClass,
                                    String name,
                                    String userparameter)
                             throws NoSuchMethodException,
                                    InvocationTargetException,
                                    IllegalAccessException
Invokes the filtermethod and returns a Vector of contentdefinition objects returned by the filtermethod. If you want to use filtermethods with other sinatures you have to override this method in your own derived subclass.

Parameters:
userparameter - the value of the userparameetr which will be passed to the filtermethod
Returns:
Vector of contentdefinition objects
Throws:
NoSuchMethodException - if the filtermethod doesn't exist
InvocationTargetException - if the invoked filtermethod throws an exception itself
IllegalAccessException - if the filtermethod is inaccessible

getCacheDirectives

public CmsCacheDirectives getCacheDirectives(CmsObject cms,
                                             String templateFile,
                                             String elementName,
                                             Hashtable parameters,
                                             String templateSelector)
Gets the caching information from the current template class.

Overrides:
getCacheDirectives in class CmsXmlTemplate
Parameters:
cms - CmsObject Object for accessing system resources
templateFile - Filename of the template file
elementName - Element name of this template in our parent template
parameters - Hashtable with all template class parameters
templateSelector - template section that should be processed
Returns:
object with caching information