001 package railo.loader.util; 002 003 004 import java.io.File; 005 import java.io.FileFilter; 006 007 /** 008 * Filter fuer die <code>listFiles</code> Methode des FIle Objekt, 009 * zum filtern von FIles mit einer bestimmten Extension. 010 */ 011 public final class ExtensionFilter implements FileFilter { 012 013 private final String[] extensions; 014 private final boolean allowDir; 015 private final boolean ignoreCase; 016 //private int extLen; 017 018 019 /** 020 * Konstruktor des Filters 021 * @param extension Endung die geprueft werden soll. 022 */ 023 public ExtensionFilter(String extension) { 024 this(new String[]{extension},false,true); 025 } 026 027 /** 028 * Konstruktor des Filters 029 * @param extension Endung die geprueft werden soll. 030 */ 031 public ExtensionFilter(String extension, boolean allowDir) { 032 this(new String[]{extension},allowDir,true); 033 } 034 035 public ExtensionFilter(String[] extensions) { 036 this(extensions,false,true); 037 } 038 039 public ExtensionFilter(String[] extensions, boolean allowDir) { 040 this(extensions,allowDir,true); 041 } 042 043 044 public ExtensionFilter(String[] extensions, boolean allowDir, boolean ignoreCase) { 045 for(int i=0;i<extensions.length;i++) { 046 if(!extensions[i].startsWith(".")) 047 extensions[i]="."+extensions[i]; 048 if(ignoreCase)extensions[i]=extensions[i].toLowerCase(); 049 } 050 this.extensions=extensions; 051 this.allowDir=allowDir; 052 this.ignoreCase=ignoreCase; 053 } 054 055 /** 056 * @see java.io.FileFilter#accept(java.io.File) 057 */ 058 public boolean accept(File res) { 059 if(res.isDirectory()) return allowDir; 060 if(res.exists()) { 061 String name=ignoreCase?res.getName().toLowerCase():res.getName(); 062 for(int i=0;i<extensions.length;i++) { 063 if(name.endsWith(extensions[i])) 064 return true; 065 } 066 } 067 return false; 068 } 069 070 /** 071 * @return Returns the extension. 072 */ 073 public String[] getExtensions() { 074 return extensions; 075 } 076 }