Package org.ametys.cms.content
Class ContentHelper
- java.lang.Object
-
- org.ametys.runtime.plugin.component.AbstractLogEnabled
-
- org.ametys.cms.content.ContentHelper
-
- All Implemented Interfaces:
LogEnabled,Component,Contextualizable,Serviceable
public class ContentHelper extends AbstractLogEnabled implements Component, Serviceable, Contextualizable
Helper forContent
-
-
Constructor Summary
Constructors Constructor Description ContentHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Map<String,Object>addContentType(String contentId, String contentTypeId, int actionId)Add a content type to an existing contentMap<String,Object>addMixinType(String contentId, String mixinId, int actionId)Add a mixin type to an existing contentvoidcontextualize(Context context)Map<String,Object>getContentAttributeDefinitionsAsJSON(String contentId, boolean isEdition)Converts the content attribute definitions in a JSON MapMap<String,Object>getContentAttributeDefinitionsAsJSON(String contentId, List<String> attibutePaths, boolean isEdition)Converts the given content attribute definitions in a JSON MapMap<String,Object>getContentEditionInformation(String contentId)Get content edition information.Collection<ContentType>getContentTypes(Content content)Retrieves aCollectioncontaining all content types of the given contentCollection<ContentType>getContentTypes(Content content, boolean includeMixins)Retrieves aCollectioncontaining content types of the given contentMap<String,Object>getContentViewAsJSON(String contentId, String viewName, String fallbackViewName, boolean isEdition)Converts the content view with the given name in a JSON MapOptional<String>getDefaultWorkflowName(Content content)Get the default workflow name for the content.List<Pair<String,Content>>getReferencingContents(Content content)Returns all Contents referencing the given content with their value pathContentgetTargetContent(Content sourceContent, String fieldPath)Get the content from which to get the system property.List<Content>getTargetContents(Content sourceContent, String fieldPath)Get the contents from which to get the system property.StringgetTitle(Content content)Get the title of a content.<br> If the content is a multilingual content, the title will be retrieved for the current locale if exists, or for default locale 'en' if exists, or for the first found locale.Map<String,String>getTitleVariants(Content content)Get the title variants of a multilingual contentList<String>getUnknownContentTypeIds(Content content)Determines if the given content has some of its types that are unknown (the extension does not exist)List<String>getUnknownContentTypeIds(Content content, boolean checkMixins)Determines if the given content has some of its types that are unknown (the extension does not exist)ObjectgetValue(Content content, String fieldPath)Get the typed value(s) of a content at given path.booleanhasIndexingReferences(Content content)Test if the given content has indexing references, i.e.booleanhasReferencingContents(Content content, List<String> ignoreContentTypes, boolean includeSubTypes)Determines if the content has referencing contents other than whose type is in content types to ignore.booleanisArchivedContent(Content content)Determines if the content is archivedbooleanisMultilingual(Content content)Determines if a content is a multilingual contentbooleanisReferenceTable(Content content)Determines if the content is a reference table content typebooleanisSimple(Content content)Determines if the content is a simple content typeMap<String,Object>removeContentType(String contentId, String contentTypeId, int actionId)Remove a content type to an existing contentMap<String,Object>removeMixinType(String contentId, String mixinId, int actionId)Remove a mixin type to an existing contentvoidservice(ServiceManager smanager)-
Methods inherited from class org.ametys.runtime.plugin.component.AbstractLogEnabled
getLogger, setLogger
-
-
-
-
Constructor Detail
-
ContentHelper
public ContentHelper()
-
-
Method Detail
-
service
public void service(ServiceManager smanager) throws ServiceException
- Specified by:
servicein interfaceServiceable- Throws:
ServiceException
-
contextualize
public void contextualize(Context context) throws ContextException
- Specified by:
contextualizein interfaceContextualizable- Throws:
ContextException
-
addContentType
public Map<String,Object> addContentType(String contentId, String contentTypeId, int actionId) throws AmetysRepositoryException, com.opensymphony.workflow.WorkflowException
Add a content type to an existing content- Parameters:
contentId- The content idcontentTypeId- The content type to addactionId- The workflow action id- Returns:
- The result in a Map
- Throws:
com.opensymphony.workflow.WorkflowException- ifAmetysRepositoryException- if an error occurred
-
removeContentType
public Map<String,Object> removeContentType(String contentId, String contentTypeId, int actionId) throws AmetysRepositoryException, com.opensymphony.workflow.WorkflowException
Remove a content type to an existing content- Parameters:
contentId- The content idcontentTypeId- The content type to addactionId- The workflow action id- Returns:
- The result in a Map
- Throws:
com.opensymphony.workflow.WorkflowException- ifAmetysRepositoryException- if an error occurred
-
addMixinType
public Map<String,Object> addMixinType(String contentId, String mixinId, int actionId) throws AmetysRepositoryException, com.opensymphony.workflow.WorkflowException
Add a mixin type to an existing content- Parameters:
contentId- The content idmixinId- The mixin type to addactionId- The workflow action id- Returns:
- The result in a Map
- Throws:
com.opensymphony.workflow.WorkflowException- ifAmetysRepositoryException- if an error occurred
-
removeMixinType
public Map<String,Object> removeMixinType(String contentId, String mixinId, int actionId) throws AmetysRepositoryException, com.opensymphony.workflow.WorkflowException
Remove a mixin type to an existing content- Parameters:
contentId- The content idmixinId- The mixin type to addactionId- The workflow action id- Returns:
- The result in a Map
- Throws:
com.opensymphony.workflow.WorkflowException- ifAmetysRepositoryException- if an error occurred
-
getContentEditionInformation
public Map<String,Object> getContentEditionInformation(String contentId)
Get content edition information.- Parameters:
contentId- the content ID.- Returns:
- a Map containing content edition information.
-
hasIndexingReferences
public boolean hasIndexingReferences(Content content)
Test if the given content has indexing references, i.e. if modifying it potentially implies reindexing other contents.- Parameters:
content- the content to test.- Returns:
trueif one of the content types or mixins has indexing references,falseotherwise.
-
getContentAttributeDefinitionsAsJSON
public Map<String,Object> getContentAttributeDefinitionsAsJSON(String contentId, boolean isEdition) throws ProcessingException
Converts the content attribute definitions in a JSON Map- Parameters:
contentId- the content identifierisEdition-trueif the JSON result is used for edition purposes (configure a form panel, ...)falseotherwise- Returns:
- the content attribute definitions as a JSON Map
- Throws:
ProcessingException- if an error occurs when converting the definitions
-
getContentAttributeDefinitionsAsJSON
public Map<String,Object> getContentAttributeDefinitionsAsJSON(String contentId, List<String> attibutePaths, boolean isEdition) throws ProcessingException
Converts the given content attribute definitions in a JSON Map- Parameters:
contentId- the content identifierattibutePaths- the paths of the attribute definitions to convertisEdition-trueif the JSON result is used for edition purposes (configure a form panel, ...)falseotherwise- Returns:
- the content attribute definitions as a JSON Map
- Throws:
ProcessingException- if an error occurs when converting the definitions
-
getContentViewAsJSON
public Map<String,Object> getContentViewAsJSON(String contentId, String viewName, String fallbackViewName, boolean isEdition) throws ProcessingException
Converts the content view with the given name in a JSON Map- Parameters:
contentId- the content identifierviewName- the name of the view to convertfallbackViewName- the name of the view to convert if the initial was not found. Can be null.isEdition-trueif the JSON result is used for edition purposes (configure a form panel, ...)falseotherwise- Returns:
- the view as a JSON Map
- Throws:
ProcessingException- if an error occurs when converting the view
-
getContentTypes
public Collection<ContentType> getContentTypes(Content content)
Retrieves aCollectioncontaining all content types of the given content- Parameters:
content- the content- Returns:
- all content types of the content
-
getContentTypes
public Collection<ContentType> getContentTypes(Content content, boolean includeMixins)
Retrieves aCollectioncontaining content types of the given content- Parameters:
content- the contentincludeMixins-trueto retrieve the mixins the the collection,falseotherwise- Returns:
- content types of the content
-
getUnknownContentTypeIds
public List<String> getUnknownContentTypeIds(Content content)
Determines if the given content has some of its types that are unknown (the extension does not exist)- Parameters:
content- the content- Returns:
trueif at least one of the types of the content is unknown,falseotherwise
-
getUnknownContentTypeIds
public List<String> getUnknownContentTypeIds(Content content, boolean checkMixins)
Determines if the given content has some of its types that are unknown (the extension does not exist)- Parameters:
content- the contentcheckMixins-trueto check unknown content types in mixin types- Returns:
trueif at least one of the types of the content is unknown,falseotherwise
-
isReferenceTable
public boolean isReferenceTable(Content content)
Determines if the content is a reference table content type- Parameters:
content- The content- Returns:
- true if content is a reference table
-
isMultilingual
public boolean isMultilingual(Content content)
Determines if a content is a multilingual content- Parameters:
content- The content- Returns:
trueif the content is an instance of content type
-
isSimple
public boolean isSimple(Content content)
Determines if the content is a simple content type- Parameters:
content- The content- Returns:
- true if content is simple
-
isArchivedContent
public boolean isArchivedContent(Content content)
Determines if the content is archived- Parameters:
content- the content- Returns:
- true if the content is archived
-
getValue
public Object getValue(Content content, String fieldPath)
Get the typed value(s) of a content at given path. The path can represent a system property id or a path of an attribute into the content or an attribute on one or more linked contents, such as 'composite/linkedContent/secondContent/composite/attribute'. The returned value is typed.- Parameters:
content- The contentfieldPath- The field id or the path to the attribute, separated by '/'- Returns:
- The typed final value(s). If the final field is multiple, or contained into a repeater or multiple 'CONTENT' attribute, the returned value will be a Collection
-
getTargetContent
public Content getTargetContent(Content sourceContent, String fieldPath)
Get the content from which to get the system property.- Parameters:
sourceContent- The source content.fieldPath- The field path- Returns:
- The target content.
-
getTargetContents
public List<Content> getTargetContents(Content sourceContent, String fieldPath)
Get the contents from which to get the system property.- Parameters:
sourceContent- The source content.fieldPath- The field path- Returns:
- The target contents.
-
getTitle
public String getTitle(Content content)
Get the title of a content.<br> If the content is a multilingual content, the title will be retrieved for the current locale if exists, or for default locale 'en' if exists, or for the first found locale.- Parameters:
content- The content- Returns:
- The title of the content
-
getTitleVariants
public Map<String,String> getTitleVariants(Content content)
Get the title variants of a multilingual content- Parameters:
content- The multilingual content- Returns:
- the content's title for each locale
- Throws:
IllegalArgumentException- if the content is not a multilingual content
-
hasReferencingContents
public boolean hasReferencingContents(Content content, List<String> ignoreContentTypes, boolean includeSubTypes)
Determines if the content has referencing contents other than whose type is in content types to ignore.- Parameters:
content- The content to checkignoreContentTypes- The content types to ignore for referencing contentsincludeSubTypes- True if sub content types are take into account in ignore content types- Returns:
trueif there is at least one Content referencing the content
-
getReferencingContents
public List<Pair<String,Content>> getReferencingContents(Content content)
Returns all Contents referencing the given content with their value path- Parameters:
content- The content to get references- Returns:
- the list of pair path / contents
-
getDefaultWorkflowName
public Optional<String> getDefaultWorkflowName(Content content)
Get the default workflow name for the content. If several workflows are possible, an emptyOptionalis returned.- Parameters:
content- The content- Returns:
- The default workflow name or
Optional.empty()if it cannot be determine
-
-