package fr.itldev.koya.action; import java.util.Date; import java.util.Iterator; import java.util.List; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.datatype.Duration; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.ResultSetRow; import org.alfresco.service.cmr.search.SearchService; import org.apache.log4j.Logger; public class CleanTempFilesActionExecuter extends ActionExecuterAbstractBase { Logger logger = Logger.getLogger(CleanTempFilesActionExecuter.class); public static final String NAME = "cleanTempFiles"; private SearchService searchService; private NodeService nodeService; private String delDelay; public SearchService getSearchService() { return searchService; } public void setSearchService(SearchService searchService) { this.searchService = searchService; } public NodeService getNodeService() { return nodeService; } public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } public String getDelDelay() { return delDelay; } public void setDelDelay(String delDelay) { this.delDelay = delDelay; } @Override public void executeImpl(Action ruleAction, NodeRef actionedUponNodeRef) { Date delBefore = Duration.subtract(new Date(), new Duration(delDelay)); ResultSet rs = null; try { rs = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_FTS_ALFRESCO, "ASPECT:\"koya:temp\""); Iterator<ResultSetRow> i = rs.iterator(); while (i.hasNext()) { NodeRef n = i.next().getNodeRef(); Date created = (Date) nodeService.getProperty(n, ContentModel.PROP_CREATED); if (created.before(delBefore)) { if (logger.isTraceEnabled()) { logger.error( "Delete temp file " + n.toString() + " older than " + delDelay); } nodeService.deleteNode(n); } } } finally { if (rs != null) { rs.close(); } } } @Override protected void addParameterDefinitions(List<ParameterDefinition> paramList) { } }