package org.ops4j.pax.exam.spi.intern;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Map;
import org.ops4j.pax.exam.spi.ContentCollector;
/**
* Collects files from a given base.
*/
public class CollectFromBase implements ContentCollector {
private File base;
public CollectFromBase(File base) {
this.base = base;
}
public void collect(Map<String, URL> map) throws IOException {
collectFromBase(map, base);
}
private void collectFromBase(Map<String, URL> map, File dir) throws IOException {
if (dir != null && dir.canRead() && dir.isDirectory()) {
for (File f : dir.listFiles()) {
if (f.isDirectory()) {
collectFromBase(map, f);
}
else if (!f.isHidden()) {
map.put(normalize(base, f), f.toURI().toURL());
}
}
}
}
private String normalize(File _base, File f) throws IOException {
return f.getCanonicalPath().substring(_base.getCanonicalPath().length() + 1)
.replace(File.separatorChar, '/');
}
}