001    package railo.loader.util;
002    
003    
004    import java.io.File;
005    import java.io.FileFilter;
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 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 gepr�ft 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 gepr�ft 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    }