Trying to archive assets based on prism:expiration date using scheduler, but its not working ,please guide me where I went wrong?
package com.AcHotels.core.servlets;
import java.time.OffsetDateTime;
import java.util.HashMap;
import java.util.Map;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.Session;
import javax.jcr.Value;
import javax.servlet.Servlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
import com.AcHotels.core.services.search.AssetsSearch;
import com.adobe.granite.asset.api.AssetManager;
import com.day.cq.search.PredicateGroup;
import com.day.cq.search.Query;
import com.day.cq.search.QueryBuilder;
import com.day.cq.search.result.Hit;
import com.day.cq.search.result.SearchResult;
@8220494(service = Servlet.class, property = { Constants.SERVICE_DESCRIPTION + "= Asset Expired Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_GET, "sling.servlet.paths=" + "/bin/servlet/expired" })
public class AssetMigrationServlet extends SlingSafeMethodsServlet {
private static final long serialVersionUID = 7524136240611031422L;
private static final Logger LOGGER = LoggerFactory.getLogger(AssetMigrationServlet.class);
@3214626
private QueryBuilder builder;
@3214626
AssetsSearch assetSearch;
private static final String CONTENT_PATH = "/content/dam/AC-Hotels-Marriott/home-page/images/";
@9944223
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {
LOGGER.info("Asset Expired Servlet Called successfully!! ");
try {
ResourceResolver resourceResolver = request.getResourceResolver();
AssetManager assetManager = resourceResolver.adaptTo(AssetManager.class);
Session session = resourceResolver.adaptTo(Session.class);
if (session.nodeExists(CONTENT_PATH)) {
Node parentNode = session.getNode(CONTENT_PATH);
if (parentNode.hasNodes()) {
NodeIterator childNode = parentNode.getNodes();
while (childNode.hasNext()) {
Node assetNode = childNode.nextNode();
String assetName = assetNode.getName();
String assetPath = CONTENT_PATH + assetName;
String movePath = "/content/dam/AC-Hotels-Marriott/archive/expired/" + assetName;
if (assetName.equalsIgnoreCase("jcr:content")) {
LOGGER.info("JCR:CONTENT Node found, hence skipped movement...");
} else {
//assetManager.moveAsset(assetPath, movePath);
final PredicateGroup pGroup= assetSearch.createExpireAssetsQuery(OffsetDateTime.now(), "/content/dam/AC-Hotels-Marriott/home-page/images/", true);
final List<Hit> expiredAssets=assetSearch.searchAssets(pGroup, resourceResolver);
final int hitscount=expiredAssets.size();
for(final Hit expiredAsset :expiredAssets) {
final Node node=expiredAsset.getNode();
assetManager.moveAsset(assetPath, movePath);
LOGGER.info("Asset Node"+node);
}
response.getWriter().println("***********************************Asset With Name: "
+ assetPath + " is Moved to: " + movePath);
}
}
}
}
session.save();
session.logout();
} catch (Exception e) {
e.printStackTrace();
}
}
}