package com.atolcd.parapheur.repo.content.cleanup;


import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class ParapheurCleanerJob implements Job
{

   public void execute(JobExecutionContext context) throws JobExecutionException
   {
      JobDataMap jobData = context.getJobDetail().getJobDataMap();
      // extract the content cleaner to use
      Object parapheurCleanerObj = jobData.get("parapheurCleaner");
      if (parapheurCleanerObj == null || !(parapheurCleanerObj instanceof ParapheurCleaner))
      {
          throw new AlfrescoRuntimeException(
                  "ParapheurCleanerJob data must contain valid 'parapheurCleaner' reference");
      }
      
      final ParapheurCleaner parapheurCleaner = (ParapheurCleaner) parapheurCleanerObj;
      AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
            {
               /* (non-Javadoc)
                * @see org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork#doWork()
                */
               public Object doWork() throws Exception
               {
                  parapheurCleaner.execute();
                  return null;
               }
            }, AuthenticationUtil.getSystemUserName());
   }

}
