package org.liveSense.service.thumbnailGenerator;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.query.Query;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.ConfigurationPolicy;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.jcr.api.SlingRepository;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(label="%thumbnailGeneratorJobEventHandler.name",
description="%thumbnailGeneratorJobEventHandler.description",
immediate=true,
metatype=true,
policy=ConfigurationPolicy.OPTIONAL)
@Service(value=java.lang.Runnable.class)
@Properties(value = {
@Property(
name="scheduler.name",
value="ThumbnailGeneratorPeriodicalGeneration"),
@Property(
name="scheduler.expression",
value="0 0 * ? * * ")
})
public class ThumbnailGeneratorPeriodicalGeneration implements Runnable {
private static final Logger log = LoggerFactory.getLogger(ThumbnailGeneratorPeriodicalGeneration.class);
@Activate
protected void activate(ComponentContext componentContext) throws RepositoryException {
}
@Reference(cardinality=ReferenceCardinality.MANDATORY_UNARY, policy=ReferencePolicy.DYNAMIC)
SlingRepository repository;
public void run() {
// Scanning folders for images
Session session = null;
log.info("Starting scan for images...");
try {
session = repository.loginAdministrative(null);
// TODO Searching for images and generating jobs
/*
NodeIterator nodes = session.getWorkspace().getQueryManager().createQuery("select * from [jcr:content]", Query.JCR_SQL2).execute().getNodes();
while (nodes.hasNext()) {
Node node = nodes.nextNode();
if (node.getParent().getPrimaryNodeType().getName().equals("thumbnail:thumbnailImage")) {
}
}
*/
if (session.hasPendingChanges()) {
session.save();
}
} catch (RepositoryException e) {
log.error(e.getMessage());
} finally {
session.logout();
}
}
}