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

Helper for manipulating ContentTypes
  • Field Details

  • Constructor Details

  • Method Details

    • service

      public void service(ServiceManager smanager) throws ServiceException
      Specified by:
      service in interface Serviceable
      Throws:
      ServiceException
    • initialize

      public void initialize()
      Initialize
      Specified by:
      initialize in interface Initializable
    • _createCaches

      protected void _createCaches()
      Creates the caches
    • dispose

      public void dispose()
      Specified by:
      dispose in interface Disposable
    • _getContentTypeEP

      Returns:
      the content type extension point
    • isInstanceOf

      public boolean isInstanceOf(Content content, String cTypeId)
      Determines if a content is a instance of given content type id
      Parameters:
      content - The content
      cTypeId - The id of content type or mixin
      Returns:
      true if the content is an instance of content type
    • getCommonAncestors

      public Set<String> getCommonAncestors(Collection<String> contentTypeIds)
      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

      protected Set<String> removeAncestors(Set<String> contentTypes)
      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

      public Set<String> getAncestors(String contentTypeId)
      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

      public Pair<String[],String[]> 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 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

      public String getPluginName(String contentTypeId)
      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

      public List<Set<String>> buildReverseHierarchies(String contentTypeId)
      Builds the reverse hierarchies of ancestors of a content type
      Parameters:
      contentTypeId - The content type's id
      Returns:
      the reverse hierarchies with ancestors
    • getViews

      public Map<String,View> getViews(String[] contentTypeIds, String[] mixinIds)
      Get all views resulting of the concatenation of views of given content types and mixins.
      Parameters:
      contentTypeIds - the identifiers of the content types
      mixinIds - 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 types
      mixinIds - the identifiers of the mixins
      viewNamesToAvoid - names of views that should not be managed
      Returns:
      The views
    • getView

      public View getView(String viewName, Content content)
      Get the view for view resulting of the concatenation of views of the given content.
      Parameters:
      viewName - the name of the view to retrieve
      content - the given content
      Returns:
      The view or null if none matches.
    • getView

      public View getView(String viewName, 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
      contentTypeIds - the identifiers of the content types
      mixinIds - the identifiers of the mixins
      Returns:
      The view or null if none matches.
    • getViewWithFallback

      public View getViewWithFallback(String viewName, String fallbackViewName, Content content)
      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 types
      mixinIds - 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 identifier
      viewName - the name of the view to convert
      isEdition - 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 identifier
      isEdition - 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

      public View joinViews(List<View> views)
      Creates a view that is a jointure between all the given views
      Parameters:
      views - the views to join
      Returns:
      the joined view
    • getViewConfigurations

      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 types
      mixinIds - the identifiers of the mixins
      Returns:
      The views' configurations, indexed by view names and content type containing the configuration
    • getViewConfigurationsByType

      Get all configurations of the given view resulting of the concatenation of given content types and mixins.
      Parameters:
      viewName - the name of the view
      contentTypeIds - the identifiers of the content types
      mixinIds - the identifiers of the mixins
      Returns:
      The views' configurations, indexed by content type containing the configuration
    • getViewsInfo

      public List<Map<String,Object>> getViewsInfo(String contentTypeId, boolean includeInternals)
      Get the views of a content type
      Parameters:
      contentTypeId - the content type id
      includeInternals - Set to true to include internal views.
      Returns:
      the views' info
    • getModelItem

      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 item
      mixins - identifiers of the mixins where to search the model item
      Returns:
      the model item
      Throws:
      IllegalArgumentException - if the given path is null or empty
      UndefinedItemPathException - 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 empty
      UndefinedItemPathException - 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)
      content - the content
      Returns:
      the list of successive model items
      Throws:
      IllegalArgumentException - if the given path is null or empty
      UndefinedItemPathException - if there is no item defined at the given path in given item containers
    • getModelItemsPaths

      public Map<String,List<ModelItem>> getModelItemsPaths(Set<String> paths, ContentType contentType)
      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 empty
      UndefinedItemPathException - if there is no item defined at one of the given paths in given item containers
    • getModelItemPath

      public List<ModelItem> getModelItemPath(String path, ContentType contentType)
      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 empty
      UndefinedItemPathException - if there is no item defined at the given path in given item containers
    • isCompatibleContentType

      public boolean isCompatibleContentType(Content content, String cTypeId)
      Determines if the given content type can be added to content
      Parameters:
      content - The content
      cTypeId - The id of content type
      Returns:
      true if the content type is compatible with content
    • getModelItemsIndexedByName

      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 consider
      viewName - 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 items
      viewItemContainer - the view item container of the content
      prefix - 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 ids
      withRight - 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 retrieve
      inherited - If true, the sub-types will be also returned.
      checkRights - If true, only content types allowed for creation will be returned
      includePrivate - 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

      public boolean hasRight(String contentTypeId)
      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

      protected boolean _hasRight(ContentType contentType)
      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

      public String getDynamicContentTypeId(String[] contentTypes, String[] mixinTypes)
      Get the id of the dynamic content type matching to given ones
      Parameters:
      contentTypes - The content types
      mixinTypes - 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

      public String getDynamicContentTypePlugin(String[] contentTypes, String[] mixinTypes)
      Get the plugin name of the dynamic content type matching to given ones
      Parameters:
      contentTypes - The content types
      mixinTypes - 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

      public String getIconGlyph(Content content)
      Retrieves the CSS class to use as glyph icon of the content
      Parameters:
      content - The content
      Returns:
      the glyph
    • getIconDecorator

      public String getIconDecorator(Content content)
      Retrieves the CSS class to use as decorator above the main icon
      Parameters:
      content - The content
      Returns:
      the decorator CSS class name
    • getSmallIcon

      public String getSmallIcon(Content content)
      Retrieves the URL of the icon without the context path.
      Parameters:
      content - The content
      Returns:
      the icon URL for the small image 16x16.
    • getMediumIcon

      public String getMediumIcon(Content content)
      Retrieves the URL of the icon without the context path.
      Parameters:
      content - The content
      Returns:
      the icon URL for the medium image 32x32.
    • getLargeIcon

      public String getLargeIcon(Content content)
      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

      public boolean isArchivedContentType(String cTypeId)
      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