Class ContentDataHelper

    • Field Detail

      • ROLE

        public static final String ROLE
        Avalon role
    • Method Detail

      • isMultipleContentDataEmpty

        public static boolean isMultipleContentDataEmpty​(ModelAwareDataHolder dataHolder,
                                                         String dataPath)
                                                  throws BadItemTypeException
        Retrieves the content identifiers in an array from a multiple content data
        Parameters:
        dataHolder - data holder that contains the multiple content data
        dataPath - path to the multiple content data
        Returns:
        an array containing the content identifiers
        Throws:
        BadItemTypeException - if the data at the given path is not a content data
      • isMultipleContentDataEmpty

        public static boolean isMultipleContentDataEmpty​(ModelAwareDataHolder dataHolder,
                                                         String dataPath,
                                                         ValueContext context)
                                                  throws BadItemTypeException
        Retrieves the content identifiers in an array from a multiple content data
        Parameters:
        dataHolder - data holder that contains the multiple content data
        dataPath - path to the multiple content data
        context - the context of the value to retrieve
        Returns:
        an array containing the content identifiers
        Throws:
        BadItemTypeException - if the data at the given path is not a content data
      • checkBrokenReferences

        public static Map<String,​List<String>> checkBrokenReferences​(ModelAwareDataHolder dataHolder,
                                                                           boolean fix)
        Find any broken reference in data holder's content attributes. A reference is considered as broken if the referenced content does not exist
        Parameters:
        dataHolder - the ModelAwareDataHolder to inspect.
        fix - if true, and the dataHolder is modifiable, broken references will be removed Warning: if modifications are made on the given data holder, the modifications won't be saved and the workflow won't change
        Returns:
        all broken references, by attribute path
      • checkBrokenInvertRelations

        public static Collection<ReferencedContentscheckBrokenInvertRelations​(Content content,
                                                                                boolean fix)
        Find any broken invert relation in a content attributes. The invert relation is considered as broken if the referenced content does not reference the first one by the attribute with the invert relation path This check does not take nonexistent referenced contents into account. First call the checkBrokenReferences(ModelAwareDataHolder, boolean) method
        Parameters:
        content - the content to inspect.
        fix - if true, and the referenced contents are modifiable, broken invert relations will be fixed by adding the relation on the referenced content if the referenced content is referencing another content and the attribute is single (and not in a repeater), the third content will be modified too, to remove the relation to the second content. Warning: if modifications are made on some contents, the modifications won't be saved and the workflows won't change
        Returns:
        All broken invert relations in a collection of ReferencedContents. Call ReferencedContents.getAddedContents() to get all contents referenced by the given content that does not reference it in return Call ReferencedContents.getThirdPartyContents() to get contents referenced by content in added contents that reference it in return
      • manageInvertRelations

        public static Map<String,​ModifiableContentmanageInvertRelations​(String invertRelationPath,
                                                                                Set<ContentValue> referencedContents,
                                                                                String referencingContentId,
                                                                                ContentDataHelper.InvertRelationManager invertRelationManager,
                                                                                Map<String,​ModifiableContent> alreadyModifiedContents,
                                                                                Map<String,​Object> externalizableDataContext)
        Manages the invert relations concerned by the given path, through the given ContentDataHelper.InvertRelationManager
        Parameters:
        invertRelationPath - the concerned invert relation path
        referencedContents - a Set containing the referenced contents to manage (add or remove the relation)
        referencingContentId - the id of the content referencing the given contents
        invertRelationManager - the ContentDataHelper.InvertRelationManager to use (to add or remove the invert relations)
        alreadyModifiedContents - a Map of contents (indexed by their identifiers) that have already been modified. This map will be used to initialize the returned map and to search for contents that have already been resolved (to resolve each content only once, even if there are several modifications on a same content)
        externalizableDataContext - the context Map that is used to determine if a data is externalizable
        Returns:
        a Map containing the contents (indexed by their identifiers) that have been modified by this call and the ones that have already been modified
      • manageInvertRelations

        public static Map<String,​ModifiableContentmanageInvertRelations​(String invertRelationPath,
                                                                                Map<ContentValue,​Collection<String>> referencedContents,
                                                                                ContentDataHelper.InvertRelationManager invertRelationManager,
                                                                                Map<String,​ModifiableContent> alreadyModifiedContents,
                                                                                Map<String,​Object> externalizableDataContext)
        Manages the invert relations concerned by the given path, through the given ContentDataHelper.InvertRelationManager
        Parameters:
        invertRelationPath - the concerned invert relation path
        referencedContents - a Map containing the referenced contents to manage (add or remove the relation) and the id of the content referencing this content
        invertRelationManager - the ContentDataHelper.InvertRelationManager to use (to add or remove the invert relations)
        alreadyModifiedContents - a Map of contents (indexed by their identifiers) that have already been modified. This map will be used to initialize the returned map and to search for contents that have already been resolved (to resolve each content only once, even if there are several modifications on a same content)
        externalizableDataContext - the context Map that is used to determine if a data is externalizable
        Returns:
        a Map containing the contents (indexed by their identifiers) that have been modified by this call and the ones that have already been modified
      • addInvertRelation

        public static boolean addInvertRelation​(ModifiableModelAwareDataHolder dataHolder,
                                                String invertRelationPath,
                                                Collection<String> referencingContentIds,
                                                ValueContext context)
        Adds the invert relation to the given DataHolder
        Parameters:
        dataHolder - the data holder where to add the invert relation
        invertRelationPath - the path of the invert relation
        referencingContentIds - the id of the contents that reference the data holder
        context - the value's context
        Returns:
        true if the given data holder has been modified, false otherwise
      • removeInvertRelation

        public static boolean removeInvertRelation​(ModifiableContent referencedContent,
                                                   String invertRelationPath,
                                                   Collection<String> referencingContentIds,
                                                   ValueContext context)
        Removes the invert relation to the given DataHolder
        Parameters:
        referencedContent - the content where to remove the invert relation
        invertRelationPath - the path of the invert relation
        referencingContentIds - the id of the contents that do not reference the given content anymore
        context - the value's context
        Returns:
        true if the referenced content has been modified, false otherwise