src/core/net/sf/basedb/util/OlderThanFileFilter.java

Code
Comments
Other
Rev Date Author Line
4827 23 Mar 09 nicklas 1 /**
4827 23 Mar 09 nicklas 2   $Id$
4827 23 Mar 09 nicklas 3
4827 23 Mar 09 nicklas 4   Copyright (C) Authors contributing to this file.
4827 23 Mar 09 nicklas 5
4827 23 Mar 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
4827 23 Mar 09 nicklas 7   Available at http://base.thep.lu.se/
4827 23 Mar 09 nicklas 8
4827 23 Mar 09 nicklas 9   BASE is free software; you can redistribute it and/or
4827 23 Mar 09 nicklas 10   modify it under the terms of the GNU General Public License
4827 23 Mar 09 nicklas 11   as published by the Free Software Foundation; either version 3
4827 23 Mar 09 nicklas 12   of the License, or (at your option) any later version.
4827 23 Mar 09 nicklas 13
4827 23 Mar 09 nicklas 14   BASE is distributed in the hope that it will be useful,
4827 23 Mar 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4827 23 Mar 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4827 23 Mar 09 nicklas 17   GNU General Public License for more details.
4827 23 Mar 09 nicklas 18
4827 23 Mar 09 nicklas 19   You should have received a copy of the GNU General Public License
4827 23 Mar 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4827 23 Mar 09 nicklas 21 */
4827 23 Mar 09 nicklas 22 package net.sf.basedb.util;
4827 23 Mar 09 nicklas 23
4827 23 Mar 09 nicklas 24 import java.io.File;
4827 23 Mar 09 nicklas 25 import java.io.FileFilter;
4827 23 Mar 09 nicklas 26
4827 23 Mar 09 nicklas 27 /**
4827 23 Mar 09 nicklas 28   An implementation of the {@link FileFilter} interface
4827 23 Mar 09 nicklas 29   that filter files based on their age.
4827 23 Mar 09 nicklas 30
4827 23 Mar 09 nicklas 31   @author nicklas
4827 23 Mar 09 nicklas 32   @version 2.11
4827 23 Mar 09 nicklas 33   @base.modified $Date$
4827 23 Mar 09 nicklas 34 */
4827 23 Mar 09 nicklas 35 public class OlderThanFileFilter
4827 23 Mar 09 nicklas 36   implements FileFilter
4827 23 Mar 09 nicklas 37 {
4827 23 Mar 09 nicklas 38
4827 23 Mar 09 nicklas 39   private final long maxAge;
4827 23 Mar 09 nicklas 40   private final boolean recursive;
4827 23 Mar 09 nicklas 41   
4827 23 Mar 09 nicklas 42   /**
4827 23 Mar 09 nicklas 43     Create a new file filter that matches files that are older than
4827 23 Mar 09 nicklas 44     the specified age.
4827 23 Mar 09 nicklas 45     @param maxAge The age limit (in milliseconds). Files that are 
4827 23 Mar 09 nicklas 46       older are matched by this filter
4827 23 Mar 09 nicklas 47     @param recursive If we should recurse into subdirectories 
4827 23 Mar 09 nicklas 48       or not
4827 23 Mar 09 nicklas 49   */
4827 23 Mar 09 nicklas 50   public OlderThanFileFilter(long maxAge, boolean recursive)
4827 23 Mar 09 nicklas 51   {
4827 23 Mar 09 nicklas 52     this.maxAge = maxAge;
4827 23 Mar 09 nicklas 53     this.recursive = recursive;
4827 23 Mar 09 nicklas 54   }
4827 23 Mar 09 nicklas 55   
4827 23 Mar 09 nicklas 56   /**
4827 23 Mar 09 nicklas 57     Accept files that are older than the specified last
4827 23 Mar 09 nicklas 58     modified time.
4827 23 Mar 09 nicklas 59   */
4827 23 Mar 09 nicklas 60   @Override
4827 23 Mar 09 nicklas 61   public boolean accept(File file)
4827 23 Mar 09 nicklas 62   {
4827 23 Mar 09 nicklas 63     if (file == null)
4827 23 Mar 09 nicklas 64     {
4827 23 Mar 09 nicklas 65       return false;
4827 23 Mar 09 nicklas 66     }
4827 23 Mar 09 nicklas 67     else if (file.isDirectory())
4827 23 Mar 09 nicklas 68     {
4827 23 Mar 09 nicklas 69       return recursive;
4827 23 Mar 09 nicklas 70     }
4827 23 Mar 09 nicklas 71     else
4827 23 Mar 09 nicklas 72     {
4827 23 Mar 09 nicklas 73       long lm = file.lastModified();
4827 23 Mar 09 nicklas 74       long age = System.currentTimeMillis()-lm;
4827 23 Mar 09 nicklas 75       return lm > 0 && age >= maxAge;
4827 23 Mar 09 nicklas 76     }
4827 23 Mar 09 nicklas 77   }
4827 23 Mar 09 nicklas 78
4827 23 Mar 09 nicklas 79 }