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 fuer 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 geprueft 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 geprueft 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 @Override 057 public boolean accept(Resource res) { 058 if(res.isDirectory()) return allowDir; 059 if(res.exists()) { 060 String name=res.getName(); 061 for(int i=0;i<extensions.length;i++) { 062 if(ignoreCase){ 063 if(StringUtil.endsWithIgnoreCase(name,extensions[i])) 064 return true; 065 } 066 else { 067 if(name.endsWith(extensions[i])) 068 return true; 069 } 070 } 071 } 072 return false; 073 } 074 075 /** 076 * @return Returns the extension. 077 */ 078 public String[] getExtensions() { 079 return extensions; 080 } 081 }