Package org.ametys.cms.contenttype
Class ContentTypesHelper
java.lang.Object
org.apache.avalon.framework.logger.AbstractLogEnabled
org.ametys.cms.contenttype.ContentTypesHelper
- All Implemented Interfaces:
Disposable
,Initializable
,Component
,LogEnabled
,Serviceable
,ThreadSafe
public class ContentTypesHelper
extends AbstractLogEnabled
implements Component, Serviceable, ThreadSafe, Disposable, Initializable
Helper for manipulating
ContentType
s-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final record
Stores all the configurations of the current content type for a viewstatic final record
Stores all the configurations for a view, by the content types in which the configuration is declared -
Field Summary
Modifier and TypeFieldDescriptionprotected ModelItemTypeExtensionPoint
The extension point with the available types for contentsprotected ContentTypeExtensionPoint
The content types extension pointprotected RightManager
The rights managerprotected RootContentHelper
Helper for root contentprotected CurrentUserProvider
The current user providerstatic final String
Archived content typestatic final String
The Avalon role -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Creates the cachesprotected ContentTypeExtensionPoint
Lazy lookup ofContentTypeExtensionPoint
protected boolean
_hasRight
(ContentType contentType) Test if the current user has the right needed by the content type to create a content.protected void
_populateModelItemsAccumulator
(Map<String, ModelItem> internalAcc, ViewItemContainer viewItemContainer, String prefix) Populates the accumulator with the model itemsbuildReverseHierarchies
(String contentTypeId) Builds the reverse hierarchies of ancestors of a content typevoid
dispose()
getAncestors
(String contentTypeId) Get all ancestors for the given content typegetCommonAncestors
(Collection<String> contentTypeIds) Get the identifiers of the content types common ancestorsgetCommonModelItems
(Collection<String> contentTypeIds, String viewName) Retrieves the common model items for a list of content typesgetContentTypeCategory
(Content content) Retrieves the category of the content type.getContentTypeDefaultTitle
(Content content) Retrieves the default title of the content type.getContentTypeDescription
(Content content) Retrieves the description of the content type.getContentTypeIdForRendering
(Content content) Get the id of content type to use for renderinggetContentTypeLabel
(Content content) Retrieves the label of the content type.getContentTypePluginForRendering
(Content content) Get the plugin name of content type to use for renderinggetContentTypeProperties
(ContentType contentType) Get the content type propertiesGet information on content types.getContentTypesInformations
(List<String> contentTypeIds, boolean withRight) Get the content types information as JSONgetContentTypesList
(List<String> ids, boolean inherited, boolean checkRights, boolean includePrivate, boolean includeMixins, boolean includeAbstract) Get information on content types.getDynamicContentTypeId
(String[] contentTypes, String[] mixinTypes) Get the id of the dynamic content type matching to given onesgetDynamicContentTypePlugin
(String[] contentTypes, String[] mixinTypes) Get the plugin name of the dynamic content type matching to given onesgetFirstContentType
(Content content) Get the content type which determines the content icons and renderinggetIconDecorator
(Content content) Retrieves the CSS class to use as decorator above the main icongetIconGlyph
(Content content) Retrieves the CSS class to use as glyph icon of the contentgetLargeIcon
(Content content) Retrieves the URL of the icon without the context path.getMediumIcon
(Content content) Retrieves the URL of the icon without the context path.getModelItem
(String path, String[] cTypes, String[] mixins) Retrieves the model item at the given pathgetModelItemPath
(String path, ContentType contentType) Retrieve the list of successive model items represented by the given path.getModelItemPath
(String path, Content content) Retrieve the list of successive model items represented by the given path.Collection<? extends ModelItem>
getModelItems
(String[] contentTypeIds) Retrieves all model items of given content types.getModelItemsIndexedByName
(String[] contentTypeIds) Retrieves all model items of given content types, indexed by their names.getModelItemsPaths
(Set<String> paths, ContentType contentType) Retrieve the list of successive model items represented by the given paths, indexed by path.getModelItemsPaths
(Set<String> paths, Content content) Retrieve the list of successive model items represented by the given paths, indexed by path.getPluginName
(String contentTypeId) Get plugin name for the given content typegetSmallIcon
(Content content) Retrieves the URL of the icon without the context path.getSupertypeIds
(String contentTypeId) Get super type's ids for the given content type The first entry contains super content types, the second one contains super mixin typesRetrieves the definition for the standard "title" attribute.getTitleViewAsJSON
(String contentTypeId, boolean isEdition) Converts the title view in a JSON MapGet the view for view resulting of the concatenation of views of the given content types and mixins.Get the view for view resulting of the concatenation of views of the given content.getViewAsJSON
(String contentTypeId, String viewName, boolean isEdition) Converts the view with the given name in a JSON MapgetViewConfigurations
(String[] contentTypeIds, String[] mixinIds) Get all configurations of the views resulting of the concatenation of views of given content types and mixins.getViewConfigurationsByType
(String viewName, String[] contentTypeIds, String[] mixinIds) Get all configurations of the given view resulting of the concatenation of given content types and mixins.Get all views resulting of the concatenation of views of given content types and mixins.Get all views resulting of the concatenation of views of given content types and mixins.getViewsInfo
(String contentTypeId, boolean includeInternals) Get the views of a content typegetViewWithFallback
(String viewName, String fallbackViewName, String[] contentTypeIds, String[] mixinIds) Get the view for view resulting of the concatenation of views of the given content types and mixins.getViewWithFallback
(String viewName, String fallbackViewName, Content content) Get the view for view resulting for a given contentboolean
Test if the current user has the right needed by the content type to create a content.void
Initializeboolean
isArchivedContentType
(String cTypeId) Determines if the content type is an archived content typeboolean
isCompatibleContentType
(Content content, String cTypeId) Determines if the given content type can be added to contentboolean
isInstanceOf
(Content content, String cTypeId) Determines if a content is a instance of given content type idCreates a view that is a jointure between all the given viewsremoveAncestors
(Set<String> contentTypes) Remove all content types in the set that are ancestors of other content types in the set.void
service
(ServiceManager smanager) Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
-
Field Details
-
ROLE
The Avalon role -
ARCHIVED_CONTENT_TYPE
Archived content type- See Also:
-
_cTypeEP
The content types extension point -
_userProvider
The current user provider -
_rightManager
The rights manager -
_rootContentHelper
Helper for root content -
_contentAttributeTypeExtensionPoint
The extension point with the available types for contents
-
-
Constructor Details
-
ContentTypesHelper
public ContentTypesHelper()
-
-
Method Details
-
service
- Specified by:
service
in interfaceServiceable
- Throws:
ServiceException
-
initialize
Initialize- Specified by:
initialize
in interfaceInitializable
-
_createCaches
Creates the caches -
dispose
- Specified by:
dispose
in interfaceDisposable
-
_getContentTypeEP
Lazy lookup ofContentTypeExtensionPoint
- Returns:
- the content type extension point
-
isInstanceOf
Determines if a content is a instance of given content type id- Parameters:
content
- The contentcTypeId
- The id of content type or mixin- Returns:
true
if the content is an instance of content type
-
getCommonAncestors
Get the identifiers of the content types common ancestors- Parameters:
contentTypeIds
- The identifiers of the content types to compare- Returns:
- The identifiers of common ancestors
-
removeAncestors
Remove all content types in the set that are ancestors of other content types in the set.- Parameters:
contentTypes
- a Set of content type IDs.- Returns:
- a Set of content type IDs without ancestors.
-
getAncestors
Get all ancestors for the given content type- Parameters:
contentTypeId
- The content type id to test- Returns:
- A non-null set of all ancestors. Does not contains the contentTypeId itself.
- Throws:
IllegalArgumentException
- if the content type does not exist.
-
getSupertypeIds
Get super type's ids for the given content type The first entry contains super content types, the second one contains super mixin types- Parameters:
contentTypeId
- The content type id to test- Returns:
- An array of super type's ids.
- Throws:
IllegalArgumentException
- if the content type does not exist.
-
getPluginName
Get plugin name for the given content type- Parameters:
contentTypeId
- The content type id to test- Returns:
- the plugin name
- Throws:
IllegalArgumentException
- if the content type does not exist.
-
buildReverseHierarchies
Builds the reverse hierarchies of ancestors of a content type- Parameters:
contentTypeId
- The content type's id- Returns:
- the reverse hierarchies with ancestors
-
getViews
Get all views resulting of the concatenation of views of given content types and mixins.- Parameters:
contentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixins- Returns:
- The views
-
getViews
public Map<String,View> getViews(String[] contentTypeIds, String[] mixinIds, Set<String> viewNamesToAvoid) Get all views resulting of the concatenation of views of given content types and mixins.- Parameters:
contentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixinsviewNamesToAvoid
- names of views that should not be managed- Returns:
- The views
-
getView
Get the view for view resulting of the concatenation of views of the given content.- Parameters:
viewName
- the name of the view to retrievecontent
- the given content- Returns:
- The view or null if none matches.
-
getView
Get the view for view resulting of the concatenation of views of the given content types and mixins.- Parameters:
viewName
- the name of the view to retrievecontentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixins- Returns:
- The view or null if none matches.
-
getViewWithFallback
Get the view for view resulting for a given content- Parameters:
viewName
- the name of the view to retrieve. If null or empty, fallback view will be used.fallbackViewName
- the name of the view to retrieve if the initial was not found. If null or empty, "main" view view will be used as fallback view.content
- the content- Returns:
- The view or null if none matches.
-
getViewWithFallback
public View getViewWithFallback(String viewName, String fallbackViewName, String[] contentTypeIds, String[] mixinIds) Get the view for view resulting of the concatenation of views of the given content types and mixins.- Parameters:
viewName
- the name of the view to retrieve. If null or empty, fallback view will be used.fallbackViewName
- the name of the view to retrieve if the initial was not found. If null or empty, "main" view view will be used as fallback view.contentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixins- Returns:
- The view or null if none matches.
-
getViewAsJSON
public Map<String,Object> getViewAsJSON(String contentTypeId, String viewName, boolean isEdition) throws ProcessingException Converts the view with the given name in a JSON Map- Parameters:
contentTypeId
- the content type identifierviewName
- the name of the view to convertisEdition
-true
if the JSON result is used for edition purposes (configure a form panel, ...)false
otherwise- Returns:
- the view as a JSON Map
- Throws:
ProcessingException
- if an error occurs when converting the view
-
getTitleViewAsJSON
public Map<String,Object> getTitleViewAsJSON(String contentTypeId, boolean isEdition) throws ProcessingException Converts the title view in a JSON Map- Parameters:
contentTypeId
- the content type identifierisEdition
-true
if the JSON result is used for edition purposes (configure a form panel, ...)false
otherwise- Returns:
- the view as a JSON Map
- Throws:
ProcessingException
- if an error occurs when converting the view
-
joinViews
Creates a view that is a jointure between all the given views- Parameters:
views
- the views to join- Returns:
- the joined view
-
getViewConfigurations
public Map<String,ContentTypesHelper.ViewConfigurationsByType> getViewConfigurations(String[] contentTypeIds, String[] mixinIds) Get all configurations of the views resulting of the concatenation of views of given content types and mixins.- Parameters:
contentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixins- Returns:
- The views' configurations, indexed by view names and content type containing the configuration
-
getViewConfigurationsByType
public Optional<ContentTypesHelper.ViewConfigurationsByType> getViewConfigurationsByType(String viewName, String[] contentTypeIds, String[] mixinIds) Get all configurations of the given view resulting of the concatenation of given content types and mixins.- Parameters:
viewName
- the name of the viewcontentTypeIds
- the identifiers of the content typesmixinIds
- the identifiers of the mixins- Returns:
- The views' configurations, indexed by content type containing the configuration
-
getViewsInfo
Get the views of a content type- Parameters:
contentTypeId
- the content type idincludeInternals
- Set to true to include internal views.- Returns:
- the views' info
-
getModelItem
public ModelItem getModelItem(String path, String[] cTypes, String[] mixins) throws IllegalArgumentException, UndefinedItemPathException Retrieves the model item at the given path- Parameters:
path
- path of the model item to retrieve. No matter if it is a definition or data path (with repeater entry positions)cTypes
- identifiers of the content types where to search the model itemmixins
- identifiers of the mixins where to search the model item- Returns:
- the model item
- Throws:
IllegalArgumentException
- if the given path is null or emptyUndefinedItemPathException
- if there is no item defined at the given path in given item containers
-
getModelItemsPaths
Retrieve the list of successive model items represented by the given paths, indexed by path.- Parameters:
paths
- paths of the model items to retrieve. These paths are relative to the given containers. No matter if they are definition or data paths (with repeater entry positions)content
- the content- Returns:
- the list of successive model items, indexed by path
- Throws:
IllegalArgumentException
- if one of the given paths is null or emptyUndefinedItemPathException
- if there is no item defined at one of the given paths in given item containers
-
getModelItemPath
public List<ModelItem> getModelItemPath(String path, Content content) throws IllegalArgumentException, UndefinedItemPathException Retrieve the list of successive model items represented by the given path.- Parameters:
path
- path of the model items to retrieve. This path is relative to the given containers. No matter if it is a definition or data path (with repeater entry positions)content
- the content- Returns:
- the list of successive model items
- Throws:
IllegalArgumentException
- if the given path is null or emptyUndefinedItemPathException
- if there is no item defined at the given path in given item containers
-
getModelItemsPaths
Retrieve the list of successive model items represented by the given paths, indexed by path.- Parameters:
paths
- paths of the model items to retrieve. These paths are relative to the given containers. No matter if they are definition or data paths (with repeater entry positions)contentType
- the content type- Returns:
- the list of successive model items, indexed by path
- Throws:
IllegalArgumentException
- if one of the given paths is null or emptyUndefinedItemPathException
- if there is no item defined at one of the given paths in given item containers
-
getModelItemPath
Retrieve the list of successive model items represented by the given path.- Parameters:
path
- path of the model items to retrieve. This path is relative to the given containers. No matter if it is a definition or data path (with repeater entry positions)contentType
- the content type- Returns:
- the list of successive model items
- Throws:
IllegalArgumentException
- if the given path is null or emptyUndefinedItemPathException
- if there is no item defined at the given path in given item containers
-
isCompatibleContentType
Determines if the given content type can be added to content- Parameters:
content
- The contentcTypeId
- The id of content type- Returns:
true
if the content type is compatible with content
-
getModelItemsIndexedByName
public Map<String,ModelItem> getModelItemsIndexedByName(String[] contentTypeIds) throws IllegalArgumentException Retrieves all model items of given content types, indexed by their names.- Parameters:
contentTypeIds
- The identifier of the content types- Returns:
- the model items
- Throws:
IllegalArgumentException
- if some content types define a model item with the same name and this model item does not come from a common ancestor
-
getModelItems
public Collection<? extends ModelItem> getModelItems(String[] contentTypeIds) throws IllegalArgumentException Retrieves all model items of given content types.- Parameters:
contentTypeIds
- The identifier of the content types- Returns:
- the model items
- Throws:
IllegalArgumentException
- if some content types define a model item with the same name and this model item does not come from a common ancestor
-
getCommonModelItems
public Map<String,ModelItem> getCommonModelItems(Collection<String> contentTypeIds, String viewName) Retrieves the common model items for a list of content types- Parameters:
contentTypeIds
- The list of content types to considerviewName
- The view name to list model items- Returns:
- The map of model items. Key are the model item's path in the content type
-
_populateModelItemsAccumulator
protected void _populateModelItemsAccumulator(Map<String, ModelItem> internalAcc, ViewItemContainer viewItemContainer, String prefix) Populates the accumulator with the model items- Parameters:
internalAcc
- the accumulator of model itemsviewItemContainer
- the view item container of the contentprefix
- the view item accessor path prefix
-
getContentTypesInformations
Get information on content types.- Returns:
- A Map with content types
-
getContentTypesInformations
public Set<Map<String,Object>> getContentTypesInformations(List<String> contentTypeIds, boolean withRight) Get the content types information as JSON- Parameters:
contentTypeIds
- the list of content type idswithRight
- true to add rights to results- Returns:
- the list of content types information as JSON
-
getContentTypesList
public Map<String,Object> getContentTypesList(List<String> ids, boolean inherited, boolean checkRights, boolean includePrivate, boolean includeMixins, boolean includeAbstract) Get information on content types.- Parameters:
ids
- The id of content types to retrieveinherited
- If true, the sub-types will be also returned.checkRights
- If true, only content types allowed for creation will be returnedincludePrivate
- If true, the list will include the private content types. By default the list is restricted to the public content types.includeMixins
- If true the list will include the mixins content types.includeAbstract
- If true the list will include the abstract content types.- Returns:
- A Map with retrieved, unknown, not-allowed and private content types
-
getContentTypeProperties
Get the content type properties- Parameters:
contentType
- The content type- Returns:
- The content type properties
-
hasRight
Test if the current user has the right needed by the content type to create a content.- Parameters:
contentTypeId
- The content type id- Returns:
- true if the user has the right needed, false otherwise.
-
_hasRight
Test if the current user has the right needed by the content type to create a content.- Parameters:
contentType
- The content type- Returns:
- true if the user has the right needed, false otherwise.
-
getContentTypeIdForRendering
Get the id of content type to use for rendering- Parameters:
content
- The content- Returns:
- the id of dynamic or standard content type
-
getDynamicContentTypeId
Get the id of the dynamic content type matching to given ones- Parameters:
contentTypes
- The content typesmixinTypes
- The mixins- Returns:
- the id of dynamic content type or null if no dynamic content type was found
-
getContentTypePluginForRendering
Get the plugin name of content type to use for rendering- Parameters:
content
- The content- Returns:
- the plugin name of dynamic or standard content type
-
getDynamicContentTypePlugin
Get the plugin name of the dynamic content type matching to given ones- Parameters:
contentTypes
- The content typesmixinTypes
- The mixins- Returns:
- the plugin name of dynamic content type or null if no dynamic content type was found
-
getContentTypeLabel
Retrieves the label of the content type.- Parameters:
content
- The content- Returns:
- the label.
-
getContentTypeDescription
Retrieves the description of the content type.- Parameters:
content
- The content- Returns:
- the label.
-
getContentTypeDefaultTitle
Retrieves the default title of the content type.- Parameters:
content
- The content- Returns:
- the label.
-
getContentTypeCategory
Retrieves the category of the content type.- Parameters:
content
- The content- Returns:
- the label.
-
getIconGlyph
Retrieves the CSS class to use as glyph icon of the content- Parameters:
content
- The content- Returns:
- the glyph
-
getIconDecorator
Retrieves the CSS class to use as decorator above the main icon- Parameters:
content
- The content- Returns:
- the decorator CSS class name
-
getSmallIcon
Retrieves the URL of the icon without the context path.- Parameters:
content
- The content- Returns:
- the icon URL for the small image 16x16.
-
getMediumIcon
Retrieves the URL of the icon without the context path.- Parameters:
content
- The content- Returns:
- the icon URL for the medium image 32x32.
-
getLargeIcon
Retrieves the URL of the icon without the context path.- Parameters:
content
- The content- Returns:
- the icon URL for the large image 48x48.
-
getFirstContentType
Get the content type which determines the content icons and rendering- Parameters:
content
- The content- Returns:
- The main content type
-
getTitleAttributeDefinition
Retrieves the definition for the standard "title" attribute.- Returns:
- the standard "title" attribute.
-
isArchivedContentType
Determines if the content type is an archived content type- Parameters:
cTypeId
- The id of content type- Returns:
- true if the content type is an org.ametys.cms.ArchivedContent
-