Package com.day.cq.dam.commons.util
Class DamUtil
java.lang.Object
com.day.cq.dam.commons.util.DamUtil
This class provides various utility methods pertaining to DAM.
- Since:
- CQ 5.4.0
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringassetToBinaryPath(String path) Translates the path of an asset to its congruent DAM binary path, by replacing the /content/dam path prefix with /var/dam.static StringbinaryToAssetPath(String path) Translates the path of a DAM binary to its congruent asset path, by replacing the /var/dam path prefix with /content/dam.This method creates a Map containing list of asset paths pending in agent queuesThis method creates a Map containing list of asset paths pending in preview agent queuesstatic booleancheckforAIFile(Asset asset) static NodecreateEmptyArchiveNode(Resource configResource, String name, Session serviceSession) Deprecated.static booleanexpiryStatus(Asset asset) findExpiringAssets(Session session, Calendar lowerBound, Calendar upperBound) Find all dam assets which are getting expired between lowerBound and upperBound.static StringfindRelativePathOfAssetNode(Node assetNode, String assetsRoot) Obtain Asset's path relative to specified Asset's rootstatic NodegetApplicableProfile(Asset asset, String profileType, Session session) Get a specific Processing profile which may be applied to an assetstatic NodegetApplicableProfile(Resource resource, String profileType, Session session) Get a specific Processing profile which may be applied to an assetstatic StringDeprecated.static AssetCacheGet an instance ofAssetCachefor access to cached rendition contents and aggregatedInputStreamand temporaryFilecleanups.static AssetgetAssetFromID(ResourceResolver resolver, String id) ObtainAssetprovided thejcr:uuidstatic AssetgetAssetFromMetaRes(Resource resource) ReturnsAssetfor the dam:asset/jcr:content/metadata resource else returns null.Returns an iterator to all the assets contained in or represented by the resource.static RenditiongetBestFitFPORendition(Asset asset, String[] renditionPreferenceList) static RenditiongetBestFitRendition(int width, List<Rendition> renditions) It iterates all renditions available and find the closest (preferably higher side) rendition and return the same.static CalendargetExpiryTime(Asset asset) static DimensiongetImageDimension(Rendition rendition) getImageDimension : NUI To get actual width and height of the rendition or image for proper UI rendering of thumbnails , earlier new Layer () API was being used which was inefficient.static DimensiongetImageDimension(InputStream is, String filename) getImageDimension : To get actual width and height of the rendition or image for proper UI rendering of thumbnails , earlier new Layer () API was being used which was inefficient.static <T> TgetInheritedContentProperty(String property, Resource resource, T defaultValue) This method searches for the content property in the provided contentPath resource.static <T> TgetInheritedProperty(String property, Resource resource, T defaultValue) This method searches for the property in the provided contentPath resource.static AssetgetParentAsset(Resource resource) static List<ResourceCollection> getReferencedCollections(Resource resource) getReferencedSubAssets(Resource resource) static Collection<Asset> getRefererAssets(ResourceResolver resolver, String path) static StringgetSanitizedFolderName(String name) This method determines whether the folder name contains special characters(\%#{}/^;+:*?.|@\t[] ") and replaces them with dash ("-"), and convert to lower casestatic StringgetSanitizedFolderName(String name, boolean useLowerCase) This method determines whether the folder name contains special characters(\%#{}/^;+:*?.|@\t[] ") and replaces them with dash ("-").static Collection<Asset> getSubAssets(Resource resource) static StringgetTenantAssetsRoot(Resource resource) Obtain Tenant Asset's root for specified Sling resourcestatic StringgetTenantAssetsRoot(ResourceResolver resolver) Obtain Tenant Asset's root for specified ResourceResolverstatic StringgetTenantAssetsRoot(ResourceResolver resolver, String assetPath) Obtain Tenant Asset's root for specified asset path and ResourceResolver This returns the tenant for the session associated with the resource resolver, not the tenant associated with the asset if providedassetPathcan't be resolved to an Assetstatic StringgetThumbnailName(int width, int height) Returns the name of a thumbnail in the DAM thumbnail name format, respecting the given dimensions of the thumbnail.static StringgetThumbnailName(int width, int height, String[] selectors) Behaves likegetThumbnailName(int, int).static StringgetThumbnailName(ThumbnailConfig config) Returns the expected rendition/thumbnail name based on the given thumbnail configuration.static StringThis method returns the title for a given resource based on type.static StringgetUserCollectionsPath(ResourceResolver resolver) Obtain collection path for specified tenant and user.static StringgetValidFileName(String name) This method determines whether the file name contains special characters and replaces them with underscore ("_")static StringgetValidFolderName(String name) Deprecated.static StringReturns the single property value from the given nodenwithname.static booleanstatic booleanstatic booleanisCollection(Resource resource) Checks if given resource represents a collection.static booleanisExpiredAsset(Asset asset) Returns whether the asset has expired.static booleanisExpiredAsset(Resource resource) Returns whether the resource has expired.static booleanisExpiredSubAsset(Resource resource) Returns whether the resource has any subasset which has expired.static booleanisFrozenNode(Resource resource) Checks whether the giveResourcerepresents a frozen node.static booleanTo check weather asset falls under Image category.static booleanTo check whether given mime type is an image mime type.static booleanisInRunningWorkflow(Resource resource) Deprecated.This method has been deprecated in favor ofcom.day.cq.dam.api.processingstate.provider.AssetProcessingStateProvider.isProcessing()static booleanisLivefyreFragment(Resource resource) This function determines if an asset is livefyre asset.static booleanisMetadataRes(Resource resource) Returns true ifAssetcan be adapted from dam:asset/jcr:content/metadata resource else returns false.static booleanChecks if a given resource is readable by the tenant specific group.static booleanisRendition(Resource resource) static booleanisSmartCollection(Resource resource) Checks if given resource represent a smart collectionstatic booleanisSubAsset(Resource resource) Indicates whether the givenresourceis anAsset's sub-asset.static booleanTo check weather asset falls under ThreeD category (Dimensional 3D asset).static booleanisThumbnail(Node file) This method determines whether the givenNoderepresents a thumbnail of an asset.static booleanChecks if the asset is valid.static booleanTo check weather asset falls under Video category.static booleanisVideoSubAsset(Asset asset) static booleanstatic booleanisZipTypeAsset(Asset asset) This method determines whether the provided asset is actually a zip asset or notstatic AssetresolveToAsset(Resource resource) Checks whether the givenresourceis an asset, and if not, travels upwards the resource hierarchy until a resource is an asset.static voidsetModified(Asset asset, String user, Calendar date) This method updates the "last modified" information of the givenAsset.static voidskipBOM(InputStream stream, String encodingFormat) this skips the number of bytes that represents the BOM from the inputstream, so that BOM does not appear as invalid characters in the output rendition.static NodevalidateFolderNode(String path, Session serviceSession)
-
Field Details
-
LIVEFYRE_ID
- See Also:
-
LIVEFYRE_THUMBNAIL
- See Also:
-
AGENT_ID_PREVIEW
- See Also:
-
-
Constructor Details
-
DamUtil
public DamUtil()
-
-
Method Details
-
assetToBinaryPath
Translates the path of an asset to its congruent DAM binary path, by replacing the /content/dam path prefix with /var/dam. If the given path does not start with DAM's asset mountpoint,nullis returned.DamUtil.assetToBinaryPath("/content/dam/myfolder/test.jpg") = "/var/dam/myfolder/test.jpg" DamUtil.assetToBinaryPath(null) = null- Parameters:
path- The path to translate.- Returns:
- The binary equivalent path or
nullif the given path is not a DAM asset path. - See Also:
-
binaryToAssetPath
Translates the path of a DAM binary to its congruent asset path, by replacing the /var/dam path prefix with /content/dam. If the given path does not start with DAM's binary mountpoint,nullis returned.DamUtil.binaryToAssetPath("/var/dam/myfolder/test.jpg") = "/content/dam/myfolder/test.jpg" DamUtil.binaryToAssetPath(null) = null- Parameters:
path- The path to translate.- Returns:
- The metadata equivalent path or
nullif the given path is not a DAM binary path. - See Also:
-
isThumbnail
This method determines whether the givenNoderepresents a thumbnail of an asset.- Parameters:
file- The node to check.- Returns:
trueif the node represent's an asset's thumbnail,falseotherwise.
-
buildEntryDepthMap
This method creates a Map containing list of asset paths pending in agent queues- Parameters:
sling-- Returns:
- Map will contains asset path, queue position in agent queue and action type
-
buildEntryDepthMapPreview
This method creates a Map containing list of asset paths pending in preview agent queues- Parameters:
sling-- Returns:
- Map will contains asset path, queue position in preview agent queue and action type
-
getValidFolderName
Deprecated.This method is no longer valid since its' inconsistent with assets ui and AEM Desktop, usegetValidFolderPathinsteadThis method determines whether the folder name contains special characters and replaces them with underscore ("_")
-
getSanitizedFolderName
This method determines whether the folder name contains special characters(\%#{}/^;+:*?.|@\t[] ") and replaces them with dash ("-"), and convert to lower case -
getSanitizedFolderName
This method determines whether the folder name contains special characters(\%#{}/^;+:*?.|@\t[] ") and replaces them with dash ("-"). Lower case conversion is based on useLowerCase parameter. -
getValidFileName
This method determines whether the file name contains special characters and replaces them with underscore ("_") -
isZipTypeAsset
This method determines whether the provided asset is actually a zip asset or not- Parameters:
asset- the asset to check- Returns:
- returns true if asset is a zip file or else false
-
getThumbnailName
Returns the name of a thumbnail in the DAM thumbnail name format, respecting the given dimensions of the thumbnail. E.g. providing awidthof 100 and aheightof 100 would return the thumbnail name cq5dam.thumbnail.100.100.png. As a thumbnail represents a rendition of anAsset, the name can be used for easy retrieval of the thumbnail:... final String thumbnailName = DamUtil.getThumbnailName(100, 100); final Resource thumbnail = asset.getRendition(thumbnailName); ...
- Parameters:
width- The width of the thumbnail.height- The height of the thumbnail.- Returns:
- The rendition name of the thumbnail.
-
getThumbnailName
Returns the expected rendition/thumbnail name based on the given thumbnail configuration.- Parameters:
config- TheThumbnailConfig- Returns:
- The
Renditionname.
-
validateFolderNode
public static Node validateFolderNode(String path, Session serviceSession) throws RepositoryException - Throws:
RepositoryException
-
createEmptyArchiveNode
@Deprecated public static Node createEmptyArchiveNode(Resource configResource, String name, Session serviceSession) throws RepositoryException Deprecated.- Throws:
RepositoryException
-
getThumbnailName
Behaves likegetThumbnailName(int, int). Additionally and optionally a string array of selectors to be added to the thumbnail name can be specified. E.g. providingwidth= 100,height= 100 andselectors= {"a", "b", "c"} would return the thumbnail name cq5dam.thumbnail.100.100.a.b.c.png. Example:... final String[] selectors = {"a", "b", "c"}; final String thumbnailName = DamUtil.getThumbnailName(100, 100, selectors); final Resource thumbnail = asset.getRendition(thumbnailName); ...- Parameters:
width- The width of the thumbnail.height- The height of the thumbnail.selectors- An array of selectors to be added. May be null (ignored).- Returns:
- The rendition name of the thumbnail.
-
isRendition
Checks whether the givenResourcerepresents aRenditionof anAsset. The requirements are that givenresourceis stored within the renditions folder of an asset and that it's node type is nt:file.- Parameters:
resource- The resource to check.- Returns:
trueif the resource is a rendition.
-
isMetadataRes
Returns true ifAssetcan be adapted from dam:asset/jcr:content/metadata resource else returns false. -
getAssetFromMetaRes
ReturnsAssetfor the dam:asset/jcr:content/metadata resource else returns null. -
isAsset
Checks whether the givenResourcerepresents aAsset. The requirements are that the givenresourceis of node type dam:Asset.- Parameters:
resource- The resource to check.- Returns:
trueif the resource is an asset.
-
isFrozenNode
Checks whether the giveResourcerepresents a frozen node. The requirements are that the givenresourceis of node type nt:frozenNode.- Parameters:
resource- The resource to check- Returns:
trueif the resource is an asset.
-
isSubAsset
Indicates whether the givenresourceis anAsset's sub-asset.- Parameters:
resource- TheResourceto check.- Returns:
trueif this asset is a sub-asset.
-
resolveToAsset
Checks whether the givenresourceis an asset, and if not, travels upwards the resource hierarchy until a resource is an asset.- Parameters:
resource- The resource to check.- Returns:
- The
Assetornullif no asset was found.
-
setModified
This method updates the "last modified" information of the givenAsset.- Parameters:
asset- The asset to update.user- The username of who updated the asset.date- The date/time the updated happened.
-
findExpiringAssets
public static List<String> findExpiringAssets(Session session, Calendar lowerBound, Calendar upperBound) throws RepositoryException Find all dam assets which are getting expired between lowerBound and upperBound.- Parameters:
session-lowerBound- the lower bound of date where asset expiration is computed. If null it is not considered as query criterionupperBound- the upper bound of date where asset expiration is computed. If null it is not considered as query criterion- Throws:
RepositoryException
-
isExpiredAsset
Returns whether the asset has expired.- Parameters:
asset-- Returns:
- true, if the asset has expired
-
isExpiredAsset
Returns whether the resource has expired.- Parameters:
resource-- Returns:
- true, if the resource has expired
-
isExpiredSubAsset
Returns whether the resource has any subasset which has expired.- Parameters:
resource-- Returns:
- true, if any of the subasset of the asset has expired
-
getValue
Returns the single property value from the given nodenwithname. If there is no single-valued property for the givenname, then thedefaultValueis returned.- Parameters:
n- a node.name- a property name.defaultValue- the default value.- Returns:
- the value for the given property name or the default value.
- Throws:
RepositoryException- if value cannot be retrieved
-
isImage
To check weather asset falls under Image category.- Parameters:
asset-- Returns:
- True if asset is of type Image.
-
isImage
To check whether given mime type is an image mime type.- Parameters:
mimeType-- Returns:
- True if mimeType is an Image mime type.
-
isThreeD
To check weather asset falls under ThreeD category (Dimensional 3D asset).- Parameters:
asset-- Returns:
- True if asset is of type ThreeD.
-
isVideo
To check weather asset falls under Video category.- Parameters:
asset-- Returns:
- True if asset is of type video.
-
isSmartCollection
Checks if given resource represent a smart collection- Parameters:
resource- an instance ofResource- Returns:
trueifresourcerepresents a smart collectionfalseifresourcedoes not represents a smart collection
-
isCollection
Checks if given resource represents a collection.- Parameters:
resource- an instance ofResource- Returns:
- true if resource represents any collection type
-
isPublic
Checks if a given resource is readable by the tenant specific group. If not defined checks for the dam-users group.- Parameters:
resource- DAM resource like collection, snippet- Returns:
- True if readable by tenant default group
- Throws:
RepositoryException- Error reading permissions
-
getApplicableProfile
Get a specific Processing profile which may be applied to an asset- Parameters:
asset- The asset we get from payload of DamUpdateAsset WorkflowprofileType- The type of profile to get (metadata/video/image)session- To retrieve nodes from JCR- Returns:
- {Node} the Processing Profile, null if not found
-
getApplicableProfile
Get a specific Processing profile which may be applied to an asset- Parameters:
resource- The resource we get from payload of DamUpdateAsset WorkflowprofileType- The type of profile to get (metadata/video/image)session- To retrieve nodes from JCR- Returns:
- {Node} the Processing Profile, null if not found
-
getAppliedProcessingProfilePath
Deprecated.Processing Profile overview has been removed. Now individual PPs are applied to folders. return null use @getApplicableProfile -
getAssets
Returns an iterator to all the assets contained in or represented by the resource. If resource is a folder, then all its folders are navigated recursively and assets are listed If a resource isResourceCollection, then all its member resources are consulted and navigated recursively if any of the member represent folder orResourceCollection. If the resource represents an asset itself, an iterator of single item i.e. Collections.singletonList(res.adaptTo(Asset.class)).iterator(); -
checkforAIFile
-
getBestFitRendition
It iterates all renditions available and find the closest (preferably higher side) rendition and return the same.- Parameters:
width-renditions-- Returns:
- rendition
-
getBestFitFPORendition
- Parameters:
asset- The asset whose best fit fpo rendition is soughtrenditionPreferenceList- The list of renditions in order of preference- Returns:
- The best fit rendition if found per the specified preference list else null
-
getImageDimension
getImageDimension : To get actual width and height of the rendition or image for proper UI rendering of thumbnails , earlier new Layer () API was being used which was inefficient. -
getImageDimension
getImageDimension : NUI To get actual width and height of the rendition or image for proper UI rendering of thumbnails , earlier new Layer () API was being used which was inefficient. -
expiryStatus
-
getReferencedSubAssets
-
getReferencedCollections
-
getSubAssets
-
getRefererAssets
-
getExpiryTime
-
getParentAsset
-
isValid
Checks if the asset is valid. It is valid if it has content and if the on-/off time range spans the current time.- Returns:
trueif the page is valid;falseotherwise.- Throws:
RepositoryException
-
getTenantAssetsRoot
Obtain Tenant Asset's root for specified ResourceResolver- Returns:
- the tenant root-path
-
getTenantAssetsRoot
Obtain Tenant Asset's root for specified asset path and ResourceResolver This returns the tenant for the session associated with the resource resolver, not the tenant associated with the asset if providedassetPathcan't be resolved to an Asset- Returns:
- the tenant root-path
-
getTenantAssetsRoot
Obtain Tenant Asset's root for specified Sling resource- Returns:
- the tenant root-path
-
getUserCollectionsPath
Obtain collection path for specified tenant and user.- Parameters:
resolver- Adaptable for tenant and user- Returns:
- path for user collections
-
getAssetFromID
ObtainAssetprovided thejcr:uuid- Returns:
- the
Asset, or null if asset with specified ID wasn't found - Throws:
RepositoryException
-
findRelativePathOfAssetNode
public static String findRelativePathOfAssetNode(Node assetNode, String assetsRoot) throws RepositoryException Obtain Asset's path relative to specified Asset's root- Returns:
- Asset's Relative Path (see
DamConstants.DAM_ASSET_RELATIVE_PATH - Throws:
RepositoryException
-
getInheritedProperty
This method searches for the property in the provided contentPath resource. Moves up the repository path until finds the property on the node. Tries to convert the found value to type of default value. If can't, returns the defaultValue- Parameters:
property- the property user is looking for.resource- the resource representing the path where the property has to be searcheddefaultValue-- Returns:
- the value configured on the node hierarchy converted to type of default value. defaultValue if property not found on the path hierarchy
-
isInRunningWorkflow
Deprecated.This method has been deprecated in favor ofcom.day.cq.dam.api.processingstate.provider.AssetProcessingStateProvider.isProcessing()This function determines if an asset has itsDamConstants.DAM_ASSET_STATEproperty is set toDamConstants.DAM_ASSET_STATE_PROCESSING. Presently this returns true only if in DAM update asset workflow.- Parameters:
resource- the resource to check- Returns:
- true if
DamConstants.DAM_ASSET_STATEproperty is set toDamConstants.DAM_ASSET_STATE_PROCESSINGorDamConstants.DAM_ASSET_STATE_CUSTOM_WF_PROCESSINGfalse otherwise
-
getAssetCache
Get an instance ofAssetCachefor access to cached rendition contents and aggregatedInputStreamand temporaryFilecleanups.- Returns:
- a suitable asset cache
-
isLivefyreFragment
This function determines if an asset is livefyre asset.- Parameters:
resource- the resource to check- Returns:
- true if
LIVEFYRE_IDproperty is avaliable, false otherwise
-
getInheritedContentProperty
This method searches for the content property in the provided contentPath resource. Moves up the repository path until finds the property on the node. Tries to convert the found value to type of default value. If can't, returns the defaultValue- Parameters:
property- the property user is looking for.resource- the resource representing the path where the property has to be searcheddefaultValue-- Returns:
- the value configured on the node hierarchy converted to type of default value. defaultValue if property not found on the path hierarchy
-
skipBOM
this skips the number of bytes that represents the BOM from the inputstream, so that BOM does not appear as invalid characters in the output rendition. Otherwise Layer will try to render BOM also as a character and eventually ends up in showing a invalid character as the first character in the rendition.- Throws:
IOException
-
getTitle
This method returns the title for a given resource based on type. If resource is of type asset, it returns jcr:content/metadata/dc:title. and jcr:title for other types. -
isAudio
-
isVtt
-
isVideoSubAsset
-
getValidFolderPathinstead