org.opencms.xml.content
Class CmsXmlContentPropertyHelper

java.lang.Object
  extended by org.opencms.xml.content.CmsXmlContentPropertyHelper
All Implemented Interfaces:
Cloneable

public final class CmsXmlContentPropertyHelper
extends Object
implements Cloneable

Provides common methods on XML property configuration.

Since:
8.0.0

Nested Class Summary
static class CmsXmlContentPropertyHelper.JsonProperty
          Element Property json property constants.
 
Method Summary
protected static void addFileListPropertyValue(CmsObject cms, Element valueElement, String propValue)
          Adds the XML for a property value of a property of type 'vfslist' to the DOM.
protected static String convertIdsToPaths(CmsObject cms, String value)
          Converts a string containing zero or more structure ids into a string containing the corresponding VFS paths.
protected static String convertPathsToIds(CmsObject cms, String value)
          Converts a string containing zero or more VFS paths into a string containing the corresponding structure ids.
protected static Map<String,String> convertProperties(CmsObject cms, Map<String,String> props, Map<String,CmsXmlContentProperty> propConfig, boolean toClient)
          Helper method for converting a map of properties from client format to server format or vice versa.
static Map<String,String> convertPropertiesToClientFormat(CmsObject cms, Map<String,String> props, Map<String,CmsXmlContentProperty> propConfig)
          Converts a map of properties from server format to client format.
static Map<String,String> convertPropertiesToServerFormat(CmsObject cms, Map<String,String> props, Map<String,CmsXmlContentProperty> propConfig)
          Converts a map of properties from client format to server format.
protected static String convertStringPropertyValue(CmsObject cms, String propValue, String type, boolean toClient)
          Converts a property value given as a string between server format and client format.
static Map<String,CmsXmlContentProperty> copyPropertyConfiguration(Map<String,CmsXmlContentProperty> propConfig)
          Creates a deep copy of a property configuration map.
protected static CmsVfsFileValueBean getFileValueForIdOrUri(CmsObject cms, String idOrUri)
          Given a string which might be a id or a (sitemap or VFS) URI, this method will return a bean containing the right (sitemap or vfs) root path and (sitemap entry or structure) id.
static CmsUUID getIdForUri(CmsObject cms, String uri)
          Looks up an URI in the sitemap and returns either a sitemap entry id (if the URI is a sitemap URI) or the structure id of a resource (if the URI is a VFS path).
static CmsMacroResolver getMacroResolverForProperties(CmsObject cms, I_CmsXmlContentHandler contentHandler)
          Creates and configures a new macro resolver for resolving macros which occur in property definitions.
protected static String getPropertyBaseName(String propName)
          Returns the base name of a given property name.
protected static CmsXmlContentProperty getPropertyConfig(Map<String,CmsXmlContentProperty> propertyConfig, String propName)
          Helper method for accessing the property configuration for a single property.
static Map<String,CmsXmlContentProperty> getPropertyInfo(CmsObject cms, CmsResource resource)
          Returns the property information for the given resource (type) AND the current user.
static String getPropValueIds(CmsObject cms, String type, String value)
          Returns a converted property value depending on the given type.
static String getPropValuePaths(CmsObject cms, String type, String value)
          Returns a converted property value depending on the given type.
static String getUriForId(CmsObject cms, CmsUUID id)
          Returns a sitemap or VFS path given a sitemap entry id or structure id.
static JSONObject getWidgetConfigurationAsJSON(String widgetConfiguration)
          Returns the widget configuration string parsed into a JSONObject.
static boolean isSpecialProperty(String name)
          Returns true if the property name passed as a parameter is the name of a special system property.
static Map<String,String> mergeDefaults(CmsObject cms, CmsResource resource, Map<String,String> properties)
          Extends the given properties with the default values from the resource's property configuration.
static Map<String,String> readProperties(CmsXmlContent xmlContent, Locale locale, Element element, String elemPath, CmsXmlContentDefinition elemDef)
          Reads the properties from property-enabled xml content values.
static Map<String,CmsXmlContentProperty> resolveMacrosInProperties(Map<String,CmsXmlContentProperty> properties, CmsMacroResolver resolver)
          Resolves macros in all properties in a map.
static CmsXmlContentProperty resolveMacrosInProperty(CmsXmlContentProperty property, CmsMacroResolver resolver)
          Resolves the macros in a single property.
static void saveProperties(CmsObject cms, Element parentElement, Map<String,String> properties, CmsResource resource, Map<String,CmsXmlContentProperty> propertiesConf)
          Saves the given properties to the given xml element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

convertPropertiesToClientFormat

public static Map<String,String> convertPropertiesToClientFormat(CmsObject cms,
                                                                 Map<String,String> props,
                                                                 Map<String,CmsXmlContentProperty> propConfig)
Converts a map of properties from server format to client format.

Parameters:
cms - the CmsObject to use for VFS operations
props - the map of properties
propConfig - the property configuration
Returns:
the converted property map

convertPropertiesToServerFormat

public static Map<String,String> convertPropertiesToServerFormat(CmsObject cms,
                                                                 Map<String,String> props,
                                                                 Map<String,CmsXmlContentProperty> propConfig)
Converts a map of properties from client format to server format.

Parameters:
cms - the CmsObject to use for VFS operations
props - the map of properties
propConfig - the property configuration
Returns:
the converted property map

copyPropertyConfiguration

public static Map<String,CmsXmlContentProperty> copyPropertyConfiguration(Map<String,CmsXmlContentProperty> propConfig)
Creates a deep copy of a property configuration map.

Parameters:
propConfig - the property configuration which should be copied
Returns:
a copy of the property configuration

getIdForUri

public static CmsUUID getIdForUri(CmsObject cms,
                                  String uri)
                           throws CmsException
Looks up an URI in the sitemap and returns either a sitemap entry id (if the URI is a sitemap URI) or the structure id of a resource (if the URI is a VFS path).

Parameters:
cms - the current CMS context
uri - the URI to look up
Returns:
a sitemap entry id or a structure id
Throws:
CmsException - if something goes wrong

getMacroResolverForProperties

public static CmsMacroResolver getMacroResolverForProperties(CmsObject cms,
                                                             I_CmsXmlContentHandler contentHandler)
Creates and configures a new macro resolver for resolving macros which occur in property definitions.

Parameters:
cms - the CMS context
contentHandler - the content handler which contains the message bundle that should be available in the macro resolver
Returns:
a new macro resolver

getPropertyInfo

public static Map<String,CmsXmlContentProperty> getPropertyInfo(CmsObject cms,
                                                                CmsResource resource)
                                                         throws CmsException
Returns the property information for the given resource (type) AND the current user.

Parameters:
cms - the current CMS context
resource - the resource
Returns:
the property information
Throws:
CmsException - if something goes wrong

getPropValueIds

public static String getPropValueIds(CmsObject cms,
                                     String type,
                                     String value)
Returns a converted property value depending on the given type.

If the type is CmsXmlContentProperty.PropType.vfslist, the value is parsed as a list of paths and converted to a list of IDs.

Parameters:
cms - the current CMS context
type - the property type
value - the raw property value
Returns:
a converted property value depending on the given type

getPropValuePaths

public static String getPropValuePaths(CmsObject cms,
                                       String type,
                                       String value)
Returns a converted property value depending on the given type.

If the type is CmsXmlContentProperty.PropType.vfslist, the value is parsed as a list of IDs and converted to a list of paths.

Parameters:
cms - the current CMS context
type - the property type
value - the raw property value
Returns:
a converted property value depending on the given type

getUriForId

public static String getUriForId(CmsObject cms,
                                 CmsUUID id)
                          throws CmsException
Returns a sitemap or VFS path given a sitemap entry id or structure id.

This method first tries to read a sitemap entry with the given id. If this succeeds, the sitemap entry's sitemap path will be returned. If it fails, the method interprets the id as a structure id and tries to read the corresponding resource, and then returns its VFS path.

Parameters:
cms - the CMS context
id - a sitemap entry id or structure id
Returns:
a sitemap or VFS uri
Throws:
CmsException - if something goes wrong

getWidgetConfigurationAsJSON

public static JSONObject getWidgetConfigurationAsJSON(String widgetConfiguration)
Returns the widget configuration string parsed into a JSONObject.

The configuration string should be a map of key value pairs separated by ':' and '|': KEY_1:VALUE_1|KEY_2:VALUE_2 ...

Parameters:
widgetConfiguration - the configuration to parse
Returns:
the configuration JSON

isSpecialProperty

public static boolean isSpecialProperty(String name)
Returns true if the property name passed as a parameter is the name of a special system property.

Parameters:
name - the property name
Returns:
true if the property name is the name of a special property

mergeDefaults

public static Map<String,String> mergeDefaults(CmsObject cms,
                                               CmsResource resource,
                                               Map<String,String> properties)
Extends the given properties with the default values from the resource's property configuration.

Parameters:
cms - the current CMS context
resource - the resource to get the property configuration from
properties - the properties to extend
Returns:
a merged map of properties

readProperties

public static Map<String,String> readProperties(CmsXmlContent xmlContent,
                                                Locale locale,
                                                Element element,
                                                String elemPath,
                                                CmsXmlContentDefinition elemDef)
Reads the properties from property-enabled xml content values.

Parameters:
xmlContent - the xml content
locale - the current locale
element - the xml element
elemPath - the xpath
elemDef - the element definition
Returns:
the read property map
See Also:
CmsXmlContainerPage.XmlNode.Elements

resolveMacrosInProperties

public static Map<String,CmsXmlContentProperty> resolveMacrosInProperties(Map<String,CmsXmlContentProperty> properties,
                                                                          CmsMacroResolver resolver)
Resolves macros in all properties in a map.

Parameters:
properties - the map of properties in which macros should be resolved
resolver - the macro resolver to use
Returns:
a new map of properties with resolved macros

resolveMacrosInProperty

public static CmsXmlContentProperty resolveMacrosInProperty(CmsXmlContentProperty property,
                                                            CmsMacroResolver resolver)
Resolves the macros in a single property.

Parameters:
property - the property in which macros should be resolved
resolver - the macro resolver to use
Returns:
a new property with resolved macros

saveProperties

public static void saveProperties(CmsObject cms,
                                  Element parentElement,
                                  Map<String,String> properties,
                                  CmsResource resource,
                                  Map<String,CmsXmlContentProperty> propertiesConf)
Saves the given properties to the given xml element.

Parameters:
cms - the current CMS context
parentElement - the parent xml element
properties - the properties to save, if there is a list of resources, every entry can be a site path or a UUID
resource - the resource to get the property configuration from
propertiesConf - the configuration of the properties

addFileListPropertyValue

protected static void addFileListPropertyValue(CmsObject cms,
                                               Element valueElement,
                                               String propValue)
Adds the XML for a property value of a property of type 'vfslist' to the DOM.

Parameters:
cms - the current CMS context
valueElement - the element to which the vfslist property value should be added
propValue - the property value which should be saved

convertIdsToPaths

protected static String convertIdsToPaths(CmsObject cms,
                                          String value)
Converts a string containing zero or more structure ids into a string containing the corresponding VFS paths.

Parameters:
cms - the CmsObject to use for the VFS operations
value - a string representation of a list of ids
Returns:
a string representation of a list of paths

convertPathsToIds

protected static String convertPathsToIds(CmsObject cms,
                                          String value)
Converts a string containing zero or more VFS paths into a string containing the corresponding structure ids.

Parameters:
cms - the CmsObject to use for the VFS operations
value - a string representation of a list of paths
Returns:
a string representation of a list of ids

convertProperties

protected static Map<String,String> convertProperties(CmsObject cms,
                                                      Map<String,String> props,
                                                      Map<String,CmsXmlContentProperty> propConfig,
                                                      boolean toClient)
Helper method for converting a map of properties from client format to server format or vice versa.

Parameters:
cms - the CmsObject to use for VFS operations
props - the map of properties
propConfig - the property configuration
toClient - if true, convert from server to client, else from client to server
Returns:
the converted property map

convertStringPropertyValue

protected static String convertStringPropertyValue(CmsObject cms,
                                                   String propValue,
                                                   String type,
                                                   boolean toClient)
Converts a property value given as a string between server format and client format.

Parameters:
cms - the current CMS context
propValue - the property value to convert
type - the type of the property
toClient - if true, convert to client format, else convert to server format
Returns:
the converted property value

getFileValueForIdOrUri

protected static CmsVfsFileValueBean getFileValueForIdOrUri(CmsObject cms,
                                                            String idOrUri)
                                                     throws CmsException
Given a string which might be a id or a (sitemap or VFS) URI, this method will return a bean containing the right (sitemap or vfs) root path and (sitemap entry or structure) id.

Parameters:
cms - the current CMS context
idOrUri - a string containing an id or an URI
Returns:
a bean containing a root path and an id
Throws:
CmsException - if something goes wrong

getPropertyBaseName

protected static String getPropertyBaseName(String propName)
Returns the base name of a given property name.

If propName starts with a '#' character, the base name equals the part after the '#', otherwise the base name is identical to propName.

Parameters:
propName - a property name
Returns:
the base name of the property name

getPropertyConfig

protected static CmsXmlContentProperty getPropertyConfig(Map<String,CmsXmlContentProperty> propertyConfig,
                                                         String propName)
Helper method for accessing the property configuration for a single property.

This method uses the base name of the property to access the property configuration, i.e. if propName starts with a '#', the part after the '#' will be used as the key for the property configuration.

Parameters:
propertyConfig - the property configuration map
propName - the name of a property
Returns:
the property configuration for the given property name