/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.util; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.AgeFileFilter; import org.apache.commons.io.filefilter.HiddenFileFilter; import org.apache.commons.io.filefilter.IOFileFilter; import org.apache.commons.io.filefilter.TrueFileFilter; import au.org.intersect.exsite9.domain.Folder; /** * Performs utilities on watched folders {@link Folder} */ public final class FolderUtils { private FolderUtils() { // No instances please! } /** * Recursively looks for files in the folder & it's sub folders that are new since the last time * it checked. * Returns an empty list if there are no files or this is not a folder. * Time resolution of ext3 & hfs+ is 1 second so when we store the time of the * last check we round it down. * @return A list of the files identified in the folder since the last time the folder was checked */ public static List<File> identifyNewFiles(final Folder folder) { final IOFileFilter ageFilter = new AgeFileFilter(folder.getLastCheckTimeInMillis(),false); return listFiles(folder, ageFilter, TrueFileFilter.INSTANCE); } /** * Recursively looks for files in the folder & it's sub folders. * Returns an empty list if there are no files or this is not a folder. * * @return A list of the files in the folder */ public static List<File> getAllFilesInFolder(final Folder folder) { return listFiles(folder, HiddenFileFilter.VISIBLE, TrueFileFilter.INSTANCE); } private static List<File> listFiles(final Folder folder, final IOFileFilter fileFilter, final IOFileFilter dirFilter) { final List<File> newFileList = new ArrayList<File>(FileUtils.listFiles(folder.getFolder(), fileFilter, dirFilter)); folder.setLastCheckTimeInMillis(System.currentTimeMillis()); return newFileList; } }