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 String
assetToBinaryPath
(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 String
binaryToAssetPath
(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 boolean
checkforAIFile
(Asset asset) static Node
createEmptyArchiveNode
(Resource configResource, String name, Session serviceSession) Deprecated.static boolean
expiryStatus
(Asset asset) findExpiringAssets
(Session session, Calendar lowerBound, Calendar upperBound) Find all dam assets which are getting expired between lowerBound and upperBound.static String
findRelativePathOfAssetNode
(Node assetNode, String assetsRoot) Obtain Asset's path relative to specified Asset's rootstatic Node
getApplicableProfile
(Asset asset, String profileType, Session session) Get a specific Processing profile which may be applied to an assetstatic Node
getApplicableProfile
(Resource resource, String profileType, Session session) Get a specific Processing profile which may be applied to an assetstatic String
Deprecated.static AssetCache
Get an instance ofAssetCache
for access to cached rendition contents and aggregatedInputStream
and temporaryFile
cleanups.static Asset
getAssetFromID
(ResourceResolver resolver, String id) ObtainAsset
provided thejcr:uuid
static Asset
getAssetFromMetaRes
(Resource resource) ReturnsAsset
for 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 Rendition
getBestFitFPORendition
(Asset asset, String[] renditionPreferenceList) static Rendition
getBestFitRendition
(int width, List<Rendition> renditions) It iterates all renditions available and find the closest (preferably higher side) rendition and return the same.static Calendar
getExpiryTime
(Asset asset) static Dimension
getImageDimension
(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 Dimension
getImageDimension
(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> T
getInheritedContentProperty
(String property, Resource resource, T defaultValue) This method searches for the content property in the provided contentPath resource.static <T> T
getInheritedProperty
(String property, Resource resource, T defaultValue) This method searches for the property in the provided contentPath resource.static Asset
getParentAsset
(Resource resource) static List
<ResourceCollection> getReferencedCollections
(Resource resource) getReferencedSubAssets
(Resource resource) static Collection
<Asset> getRefererAssets
(ResourceResolver resolver, String path) static String
getSanitizedFolderName
(String name) This method determines whether the folder name contains special characters(\%#{}/^;+:*?.|@\t[] ") and replaces them with dash ("-"), and convert to lower casestatic String
getSanitizedFolderName
(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 String
getTenantAssetsRoot
(Resource resource) Obtain Tenant Asset's root for specified Sling resourcestatic String
getTenantAssetsRoot
(ResourceResolver resolver) Obtain Tenant Asset's root for specified ResourceResolverstatic String
getTenantAssetsRoot
(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 providedassetPath
can't be resolved to an Assetstatic String
getThumbnailName
(int width, int height) Returns the name of a thumbnail in the DAM thumbnail name format, respecting the given dimensions of the thumbnail.static String
getThumbnailName
(int width, int height, String[] selectors) Behaves likegetThumbnailName(int, int)
.static String
getThumbnailName
(ThumbnailConfig config) Returns the expected rendition/thumbnail name based on the given thumbnail configuration.static String
This method returns the title for a given resource based on type.static String
getUserCollectionsPath
(ResourceResolver resolver) Obtain collection path for specified tenant and user.static String
getValidFileName
(String name) This method determines whether the file name contains special characters and replaces them with underscore ("_")static String
getValidFolderName
(String name) Deprecated.static String
Returns the single property value from the given noden
withname
.static boolean
static boolean
static boolean
isCollection
(Resource resource) Checks if given resource represents a collection.static boolean
isExpiredAsset
(Asset asset) Returns whether the asset has expired.static boolean
isExpiredAsset
(Resource resource) Returns whether the resource has expired.static boolean
isExpiredSubAsset
(Resource resource) Returns whether the resource has any subasset which has expired.static boolean
isFrozenNode
(Resource resource) Checks whether the giveResource
represents a frozen node.static boolean
To check weather asset falls under Image category.static boolean
To check whether given mime type is an image mime type.static boolean
isInRunningWorkflow
(Resource resource) Deprecated.This method has been deprecated in favor ofcom.day.cq.dam.api.processingstate.provider.AssetProcessingStateProvider.isProcessing()
static boolean
isLivefyreFragment
(Resource resource) This function determines if an asset is livefyre asset.static boolean
isMetadataRes
(Resource resource) Returns true ifAsset
can be adapted from dam:asset/jcr:content/metadata resource else returns false.static boolean
Checks if a given resource is readable by the tenant specific group.static boolean
isRendition
(Resource resource) static boolean
isSmartCollection
(Resource resource) Checks if given resource represent a smart collectionstatic boolean
isSubAsset
(Resource resource) Indicates whether the givenresource
is anAsset
's sub-asset.static boolean
To check weather asset falls under ThreeD category (Dimensional 3D asset).static boolean
isThumbnail
(Node file) This method determines whether the givenNode
represents a thumbnail of an asset.static boolean
Checks if the asset is valid.static boolean
To check weather asset falls under Video category.static boolean
isVideoSubAsset
(Asset asset) static boolean
static boolean
isZipTypeAsset
(Asset asset) This method determines whether the provided asset is actually a zip asset or notstatic Asset
resolveToAsset
(Resource resource) Checks whether the givenresource
is an asset, and if not, travels upwards the resource hierarchy until a resource is an asset.static void
setModified
(Asset asset, String user, Calendar date) This method updates the "last modified" information of the givenAsset
.static void
skipBOM
(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 Node
validateFolderNode
(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,null
is 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
null
if 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,null
is 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
null
if the given path is not a DAM binary path. - See Also:
-
isThumbnail
This method determines whether the givenNode
represents a thumbnail of an asset.- Parameters:
file
- The node to check.- Returns:
true
if the node represent's an asset's thumbnail,false
otherwise.
-
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, usegetValidFolderPath
insteadThis 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 awidth
of 100 and aheight
of 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
Rendition
name.
-
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 givenResource
represents aRendition
of anAsset
. The requirements are that givenresource
is stored within the renditions folder of an asset and that it's node type is nt:file.- Parameters:
resource
- The resource to check.- Returns:
true
if the resource is a rendition.
-
isMetadataRes
Returns true ifAsset
can be adapted from dam:asset/jcr:content/metadata resource else returns false. -
getAssetFromMetaRes
ReturnsAsset
for the dam:asset/jcr:content/metadata resource else returns null. -
isAsset
Checks whether the givenResource
represents aAsset
. The requirements are that the givenresource
is of node type dam:Asset.- Parameters:
resource
- The resource to check.- Returns:
true
if the resource is an asset.
-
isFrozenNode
Checks whether the giveResource
represents a frozen node. The requirements are that the givenresource
is of node type nt:frozenNode.- Parameters:
resource
- The resource to check- Returns:
true
if the resource is an asset.
-
isSubAsset
Indicates whether the givenresource
is anAsset
's sub-asset.- Parameters:
resource
- TheResource
to check.- Returns:
true
if this asset is a sub-asset.
-
resolveToAsset
Checks whether the givenresource
is an asset, and if not, travels upwards the resource hierarchy until a resource is an asset.- Parameters:
resource
- The resource to check.- Returns:
- The
Asset
ornull
if 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 noden
withname
. If there is no single-valued property for the givenname
, then thedefaultValue
is 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:
true
ifresource
represents a smart collectionfalse
ifresource
does 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:
true
if the page is valid;false
otherwise.- 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 providedassetPath
can'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
ObtainAsset
provided 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_STATE
property 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_STATE
property is set toDamConstants.DAM_ASSET_STATE_PROCESSING
orDamConstants.DAM_ASSET_STATE_CUSTOM_WF_PROCESSING
false otherwise
-
getAssetCache
Get an instance ofAssetCache
for access to cached rendition contents and aggregatedInputStream
and temporaryFile
cleanups.- 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_ID
property 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
-
getValidFolderPath
instead