[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 9591


Ignore:
Timestamp:
12/24/13 01:13:58 (5 years ago)
Author:
srloomis
Message:

cldrbug 6883: don't traverse all subdirectories

Location:
trunk/tools/java/org/unicode/cldr
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/java/org/unicode/cldr/unittest/TestBasic.java

    r9587 r9591  
    978978 
    979979    public void TestDtdComparisonsAll() { 
    980         CLDRConfig config = CLDRConfig.getInstance(); 
    981         File dir = config.getCldrBaseDirectory(); 
    982         FilenameFilter filter = new FilenameFilter() { 
    983             public boolean accept(File dir, String name) { 
    984                 return name.endsWith(".xml")  
    985                     && !name.startsWith("#")  
    986                     && !dir.toString().contains("/tools/") 
    987                     && !dir.toString().contains("/specs/"); 
    988             } 
    989         }; 
    990         Set<File> list = getFilesRecursively(dir, filter, new LinkedHashSet<File>()); 
    991         for (File file : list) { 
     980        for (File file : CLDRConfig.getInstance().getAllXMLFiles()) { 
    992981            checkDtdComparatorFor(file, null); 
    993982        } 
    994     } 
    995  
    996     public Set<File> getFilesRecursively(File directory, FilenameFilter filter, Set<File> toAddTo) { 
    997         for (File subfile : directory.listFiles()) { 
    998             if (subfile.isDirectory()) { 
    999                 getFilesRecursively(subfile, filter, toAddTo); 
    1000             } else if (filter.accept(directory, subfile.getName())) { 
    1001                 toAddTo.add(subfile); 
    1002             } 
    1003         } 
    1004         return toAddTo; 
    1005983    } 
    1006984 
  • trunk/tools/java/org/unicode/cldr/util/CLDRConfig.java

    r9469 r9591  
    22 
    33import java.io.File; 
     4import java.io.FilenameFilter; 
     5import java.util.ArrayList; 
     6import java.util.Arrays; 
    47import java.util.HashSet; 
     8import java.util.LinkedHashSet; 
     9import java.util.List; 
    510import java.util.Locale; 
    611import java.util.Map; 
     
    291296        } 
    292297    } 
     298 
     299    /** 
     300     * Get all CLDR XML files in the CLDR base directory. 
     301     * @return 
     302     */ 
     303    public Set<File> getAllXMLFiles() { 
     304        FilenameFilter filter = new FilenameFilter() { 
     305            public boolean accept(File dir, String name) { 
     306                return name.endsWith(".xml")  
     307                    && !name.startsWith("#"); // skip junk and backup files 
     308            } 
     309        }; 
     310        final File dir = getCldrBaseDirectory(); 
     311        Set<File> list; 
     312        list = getCLDRFilesMatching(filter, dir); 
     313        return list; 
     314    } 
     315 
     316    /** 
     317     * Return all CLDR data files matching this filter 
     318     * @param filter matching filter 
     319     * @param baseDir base directory, see {@link #getCldrBaseDirectory()} 
     320     * @return set of files 
     321     */ 
     322    public Set<File> getCLDRFilesMatching(FilenameFilter filter, final File baseDir) { 
     323        Set<File> list; 
     324        list = new LinkedHashSet<File>(); 
     325        for (String subdir : getCLDRDataDirectories()) { 
     326            getFilesRecursively(new File(baseDir,subdir), filter, list); 
     327        } 
     328        return list; 
     329    } 
     330     
     331    /** 
     332     * TODO: better place for these constants? 
     333     */ 
     334    private static final String COMMON_DIR = "common"; 
     335    /** 
     336     * TODO: better place for these constants? 
     337     */ 
     338    private static final String EXEMPLARS_DIR = "exemplars"; 
     339    /** 
     340     * TODO: better place for these constants? 
     341     */ 
     342    private static final String SEED_DIR = "seed"; 
     343    /** 
     344     * TODO: better place for these constants? 
     345     */ 
     346    private static final String KEYBOARDS_DIR = "keyboards";  
     347    /** 
     348     * TODO: better place for these constants? 
     349     */ 
     350    private static final String CLDR_DATA_DIRECTORIES[] = { COMMON_DIR, SEED_DIR, KEYBOARDS_DIR, EXEMPLARS_DIR }; 
     351 
     352    /** 
     353     * Get a list of CLDR directories containing actual data 
     354     * @return an iterable containing the names of all CLDR data subdirectories 
     355     */ 
     356    public Iterable<String> getCLDRDataDirectories() { 
     357        return Arrays.asList(CLDR_DATA_DIRECTORIES); 
     358    } 
     359     
     360    /** 
     361     * Utility function. Recursively add to a list of files. Skips ".svn" directories. 
     362     * @param directory base directory 
     363     * @param filter filter to restrict files added 
     364     * @param toAddTo set to add to 
     365     * @return returns toAddTo. 
     366     */ 
     367    public Set<File> getFilesRecursively(File directory, FilenameFilter filter, Set<File> toAddTo) { 
     368        File files[] = directory.listFiles(); 
     369        if(files!=null) { 
     370            for (File subfile : files) { 
     371                if (subfile.isDirectory()) { 
     372                    if(!subfile.getName().equals(".svn")) { 
     373                        getFilesRecursively(subfile, filter, toAddTo); 
     374                    } 
     375                } else if (filter.accept(directory, subfile.getName())) { 
     376                    toAddTo.add(subfile); 
     377                } 
     378            } 
     379        } 
     380        return toAddTo; 
     381    } 
     382 
    293383} 
Note: See TracChangeset for help on using the changeset viewer.