001 package railo.commons.io.res.filter; 002 003 004 import railo.commons.io.res.Resource; 005 import railo.commons.lang.StringUtil; 006 007 /** 008 * Filter f�r die <code>listFiles</code> Methode des FIle Objekt, 009 * zum filtern von FIles mit einer bestimmten Extension. 010 */ 011 public final class ExtensionResourceFilter implements ResourceFilter { 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 gepr�ft werden soll. 022 */ 023 public ExtensionResourceFilter(String extension) { 024 this(new String[]{extension},false,true); 025 } 026 027 /** 028 * Konstruktor des Filters 029 * @param extension Endung die gepr�ft werden soll. 030 */ 031 public ExtensionResourceFilter(String extension, boolean allowDir) { 032 this(new String[]{extension},allowDir,true); 033 } 034 035 public ExtensionResourceFilter(String[] extensions) { 036 this(extensions,false,true); 037 } 038 039 public ExtensionResourceFilter(String[] extensions, boolean allowDir) { 040 this(extensions,allowDir,true); 041 } 042 043 044 public ExtensionResourceFilter(String[] extensions, boolean allowDir, boolean ignoreCase) { 045 String[] tmp=new String[extensions.length]; 046 for(int i=0;i<extensions.length;i++) { 047 if(!StringUtil.startsWith(extensions[i],'.')) 048 tmp[i]="."+extensions[i]; 049 else tmp[i]=extensions[i]; 050 } 051 this.extensions=tmp; 052 this.allowDir=allowDir; 053 this.ignoreCase=ignoreCase; 054 } 055 056 /** 057 * @see railo.commons.io.res.filter.ResourceFilter#accept(railo.commons.io.res.Resource) 058 */ 059 public boolean accept(Resource res) { 060 if(res.isDirectory()) return allowDir; 061 if(res.exists()) { 062 String name=res.getName(); 063 for(int i=0;i<extensions.length;i++) { 064 if(ignoreCase){ 065 if(StringUtil.endsWithIgnoreCase(name,extensions[i])) 066 return true; 067 } 068 else { 069 if(name.endsWith(extensions[i])) 070 return true; 071 } 072 } 073 } 074 return false; 075 } 076 077 /** 078 * @return Returns the extension. 079 */ 080 public String[] getExtensions() { 081 return extensions; 082 } 083 }