X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fresources%2FTransBundle_ResourceList.java;h=9983b8bc09915f16e26dbd67cbd391d097b345dd;hb=e8aa5bf9227a0d6a6d0bb6a8bc0cc04d0f4d601a;hp=e1c874034c0bd35024e9307e9e756cca4c30a68b;hpb=805005449dacb1e7b825db63836bf100e472ddd0;p=fanfix.git diff --git a/src/be/nikiroo/utils/resources/TransBundle_ResourceList.java b/src/be/nikiroo/utils/resources/TransBundle_ResourceList.java index e1c8740..9983b8b 100644 --- a/src/be/nikiroo/utils/resources/TransBundle_ResourceList.java +++ b/src/be/nikiroo/utils/resources/TransBundle_ResourceList.java @@ -10,6 +10,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; +import java.util.List; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipException; @@ -84,24 +85,41 @@ class TransBundle_ResourceList { private static Collection getResourcesFromDirectory( final File directory, final Pattern pattern) { - final ArrayList retval = new ArrayList(); + List acc = new ArrayList(); + List dirs = new ArrayList(); + getResourcesFromDirectory(acc, dirs, directory, pattern); + + List rep = new ArrayList(); + for (String value : acc) { + if (pattern.matcher(value).matches()) { + rep.add(value); + } + } + + return rep; + } + + private static void getResourcesFromDirectory(List acc, + List dirs, final File directory, final Pattern pattern) { final File[] fileList = directory.listFiles(); - for (final File file : fileList) { - if (file.isDirectory()) { - retval.addAll(getResourcesFromDirectory(file, pattern)); - } else { - try { - final String fileName = file.getCanonicalPath(); - final boolean accept = pattern.matcher(fileName).matches(); - if (accept) { - retval.add(fileName); + if (fileList != null) { + for (final File file : fileList) { + if (!dirs.contains(file)) { + try { + String key = file.getCanonicalPath(); + if (!acc.contains(key)) { + if (file.isDirectory()) { + dirs.add(file); + getResourcesFromDirectory(acc, dirs, file, + pattern); + } else { + acc.add(key); + } + } + } catch (IOException e) { } - } catch (final IOException e) { - throw new Error(e); } } } - - return retval; } }