/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pieShare.pieShareApp.service.fileService.fileListenerService; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.vfs2.FileChangeEvent; import org.apache.commons.vfs2.FileListener; import org.apache.commons.vfs2.FileObject; import org.pieShare.pieShareApp.model.PieShareAppBeanNames; import org.pieShare.pieShareApp.model.pieFile.PieFile; import org.pieShare.pieShareApp.service.fileService.fileListenerService.api.IFileListenerService; import org.pieShare.pieShareApp.task.localTasks.fileEventTask.LocalFileChangedTask; import org.pieShare.pieShareApp.task.localTasks.fileEventTask.LocalFileCreatedTask; import org.pieShare.pieShareApp.task.localTasks.fileEventTask.LocalFileDeletedTask; import org.pieShare.pieTools.pieUtilities.service.beanService.IBeanService; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.IExecutorService; import org.pieShare.pieTools.pieUtilities.service.pieLogger.PieLogger; /** * * @author richy */ public class ApacheDefaultFileListener implements IFileListenerService { private IExecutorService executerService; private IBeanService beanService; public void setBeanService(IBeanService beanService) { this.beanService = beanService; } public void setExecutorService(IExecutorService executerService) { this.executerService = executerService; } private File convertFileObject(FileObject object) { return new File(object.getName().getPath()); } @Override public void fileCreated(FileChangeEvent fce) throws Exception { PieLogger.info(this.getClass(), "File created: {}", fce.getFile().getName().getPath()); LocalFileCreatedTask task = beanService.getBean(PieShareAppBeanNames.getLocalFileCreatedTask()); task.setFile(this.convertFileObject(fce.getFile())); this.executerService.execute(task); } @Override public void fileDeleted(FileChangeEvent fce) throws Exception { //todo: does the file delete comand also has to wait like file created until the delete has finished? PieLogger.info(this.getClass(), "File deleted: {}", fce.getFile().getName().getPath()); LocalFileDeletedTask task = beanService.getBean(PieShareAppBeanNames.getLocalFileDeletedTask()); task.setFile(this.convertFileObject(fce.getFile())); this.executerService.execute(task); } @Override public void fileChanged(FileChangeEvent fce) throws Exception { PieLogger.info(this.getClass(), "File changed: {}", fce.getFile().getName().getPath()); LocalFileChangedTask task = beanService.getBean(PieShareAppBeanNames.getFileChangedTaskName()); task.setFile(this.convertFileObject(fce.getFile())); this.executerService.execute(task); } }