extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/release/FileListFilter.java

Code
Comments
Other
Rev Date Author Line
4438 31 Mar 17 nicklas 1 package net.sf.basedb.reggie.plugins.release;
4438 31 Mar 17 nicklas 2
6387 15 Sep 21 nicklas 3 import java.util.Arrays;
6387 15 Sep 21 nicklas 4 import java.util.HashSet;
4438 31 Mar 17 nicklas 5 import java.util.Set;
4438 31 Mar 17 nicklas 6
4438 31 Mar 17 nicklas 7 import net.sf.basedb.core.File;
4438 31 Mar 17 nicklas 8 import net.sf.basedb.util.filter.Filter;
4438 31 Mar 17 nicklas 9
4438 31 Mar 17 nicklas 10 /**
4438 31 Mar 17 nicklas 11   Filter implementation for filtering files based on a whitelist or blacklist.
4438 31 Mar 17 nicklas 12   
4438 31 Mar 17 nicklas 13   @author nicklas
4438 31 Mar 17 nicklas 14   @since 4.10
4438 31 Mar 17 nicklas 15 */
4438 31 Mar 17 nicklas 16 public class FileListFilter 
4438 31 Mar 17 nicklas 17   implements Filter<File> 
4438 31 Mar 17 nicklas 18 {
4438 31 Mar 17 nicklas 19
4438 31 Mar 17 nicklas 20   private final Set<String> names;
4438 31 Mar 17 nicklas 21   private final boolean whitelist;
4438 31 Mar 17 nicklas 22   private final Filter<File> chained;
4438 31 Mar 17 nicklas 23   
4438 31 Mar 17 nicklas 24   /**
4438 31 Mar 17 nicklas 25     Create a new file list filter. The list can be either a whitelist
4438 31 Mar 17 nicklas 26     or blacklist. An optional chained filter can also be specified.
4438 31 Mar 17 nicklas 27     
4438 31 Mar 17 nicklas 28     @param location Location to filter on
4438 31 Mar 17 nicklas 29     @param skipRemoved TRUE to skip files marked for removal
4438 31 Mar 17 nicklas 30   */
4438 31 Mar 17 nicklas 31   public FileListFilter(Set<String> names, boolean whitelist, Filter<File> chained)
4438 31 Mar 17 nicklas 32   {
4438 31 Mar 17 nicklas 33     this.names = names;
4438 31 Mar 17 nicklas 34     this.whitelist = whitelist;
4438 31 Mar 17 nicklas 35     this.chained = chained;
4438 31 Mar 17 nicklas 36   }
4438 31 Mar 17 nicklas 37   
6387 15 Sep 21 nicklas 38   /**
6387 15 Sep 21 nicklas 39     Create a whitelist filter for the given files.
6389 15 Sep 21 nicklas 40     @since 4.32
6387 15 Sep 21 nicklas 41   */
6387 15 Sep 21 nicklas 42   public FileListFilter(String... names)
6387 15 Sep 21 nicklas 43   {
6387 15 Sep 21 nicklas 44     this(new HashSet<>(Arrays.asList(names)), true, null);
6387 15 Sep 21 nicklas 45   }
6387 15 Sep 21 nicklas 46   
4438 31 Mar 17 nicklas 47   @Override
4438 31 Mar 17 nicklas 48   public boolean evaluate(File f) 
4438 31 Mar 17 nicklas 49   {
4438 31 Mar 17 nicklas 50     return names.contains(f.getName()) == whitelist && (chained == null || chained.evaluate(f));
4438 31 Mar 17 nicklas 51   }
4438 31 Mar 17 nicklas 52
4438 31 Mar 17 nicklas 53 }