diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/FileScanner.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/FileScanner.java index ce9d834551f5a316c720d598d807f1d56dec2973..3031aa3eed1051abbed693c8146c1949bd5bcdeb 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/FileScanner.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/FileScanner.java @@ -36,8 +36,8 @@ public class FileScanner { String patternAsRegEx = pattern.replace("$", "\\$"); patternAsRegEx = patternAsRegEx.replace(".", "\\."); - patternAsRegEx = patternAsRegEx.replace("*", ".*"); - patternAsRegEx = patternAsRegEx.replace(".*.*/", "(.+/)*"); + patternAsRegEx = patternAsRegEx.replace("**/", "(.+/){0,}"); + patternAsRegEx = patternAsRegEx.replace("*", "[^/]*"); patternAsRegEx = patternAsRegEx.replace("?", "."); pathRegex = Pattern.compile("/" + patternAsRegEx); } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/utils/FileScannerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/utils/FileScannerTest.java index d28e11d4be16f8ac3419d1dc8c33038a3a494bb0..15bce1eedbe464be5b0459313eb37449fc76e7f6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/utils/FileScannerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/utils/FileScannerTest.java @@ -54,6 +54,7 @@ public class FileScannerTest extends AbstractFileSystemTestCase } beta = dir(root, "beta"); { + file(beta, "b.txt"); File one = dir(beta, "1"); { hi = file(one, "hi.txt"); @@ -107,10 +108,10 @@ public class FileScannerTest extends AbstractFileSystemTestCase @Test public void testFindAll() { - FileScanner scanner = new FileScanner("*"); + FileScanner scanner = new FileScanner("**/*"); List<File> files = scanner.scan(beta); - assertEquals(3, files.size()); + assertEquals(4, files.size()); files = scanner.scan(hi); assertEquals(hi, files.get(0)); @@ -127,7 +128,20 @@ public class FileScannerTest extends AbstractFileSystemTestCase Collections.sort(files); assertEquals(hello, files.get(0)); assertEquals(hi, files.get(1)); - assertEquals(2, files.size()); + assertEquals("b.txt", files.get(2).getName()); + assertEquals(3, files.size()); + } + + @Test + public void testFindTopLevelTextFiles() + { + FileScanner scanner = new FileScanner("*.txt"); + + List<File> files = scanner.scan(beta); + + Collections.sort(files); + assertEquals("b.txt", files.get(0).getName()); + assertEquals(1, files.size()); } @Test