Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

what is the best way to recognize the dam asset expiration date im writing one scheduler with in query but i couldnt get the result.

Avatar

Level 3

I gone through 

https://docs.adobe.com/content/help/en/experience-manager-65/developing/platform/query-builder/query...

 

according to the url im using query as:

 

queryMap.put("path", assetFolderPath);
queryMap.put("type", "dam:Asset");
queryMap.put("p.limit", "-1");
queryMap.put("daterange.property", "jcr:content/metadata/" + EXPIRATION_DATE);
queryMap.put("dterange.upperBound", dateFormat.format(calenderDate.getTime()));
queryMap.put("daterange,upperOperation", "<");

 

Can any one share me the best query to recognize my expire assets plzzzzzzzzzzzzzzzzzzz

 

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @keshav_goud,

To find expired assets with respect to a specific date, query predicates you have used seems to be fine. 

Given that you are not getting results, I suggest to execute first at querydebug.html(http://localhost:4502/libs/cq/search/content/querydebug.html) with hard coded date values targeting one or two sample assets.

Then when you see the results coming up, can write dynamically in code.

Screenshot below for reference: Expired asset with respect to specific date in upperBound.

On similar lines, based on your exact constraint on expired asset, can make use of related daterange predicates to get desired results

ExpiredAsset.png

View solution in original post

7 Replies

Avatar

Community Advisor

@keshav_goud Can you please confirm if you are trying to find the assets those are already expired or is going to expire in next couple of days? Are you tracking for any specific property?

Avatar

Community Advisor

Use something like as below, here prism:expirationDate represents expiration date, and using properties lower bound and upper bound you can define the date range. 

select [jcr:path], [jcr:score], * from [dam:Asset] as a where [jcr
:content/metadata/prism:expirationDate] > cast('2017-03-22T07:00:00.000Z' as date) and [jcr:content/metadata/prism:expirationDate] < cast('2017-03-23T07:00:00.001Z' as date) and isdescendantnode(a, '/content/dam')
 

Avatar

Employee

You can possibly use a querry similar to:

 

path=/content/dam
type=dam:Asset

group.1_daterange.property=jcr:content/metadata/@prism:expirationDate
group.1_daterange.upperBound=2020-07-14T23:59:59.000-04:00
group.1_daterange.lowerBound=2020-07-13T00:00:00.000-04:00
group.p.limit=-1

Avatar

Correct answer by
Community Advisor

Hi @keshav_goud,

To find expired assets with respect to a specific date, query predicates you have used seems to be fine. 

Given that you are not getting results, I suggest to execute first at querydebug.html(http://localhost:4502/libs/cq/search/content/querydebug.html) with hard coded date values targeting one or two sample assets.

Then when you see the results coming up, can write dynamically in code.

Screenshot below for reference: Expired asset with respect to specific date in upperBound.

On similar lines, based on your exact constraint on expired asset, can make use of related daterange predicates to get desired results

ExpiredAsset.png

Avatar

Level 3

Hi vijis31358935,

 

 

thanks for your comment , I'm trying the same as mention in the picture with this query but result not showing why?

Captudsfdfweere.PNGCaperewwrewrerewerture.PNG

Avatar

Community Advisor

Hi @keshav_goud,

The property you are checking is of type "String". Can you change it as "Date" type and check.