package gov.loc.repository.bagit;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class BagTestCaseVistor extends SimpleFileVisitor<Path>{
private static final Path INVALID_DIR_NAME = Paths.get("invalid");
private static final Path VALID_DIR_NAME = Paths.get("valid");
private static final Path WARNING_DIR_NAME = Paths.get("warning");
private static final Path WINDOWS_DIR_NAME = Paths.get("windows-only");
private static final Path LINUX_DIR_NAME = Paths.get("linux-only");
private final List<Path> invalidTestCases = new ArrayList<>();
private final List<Path> validTestCases = new ArrayList<>();
private final List<Path> warningTestCases = new ArrayList<>();
private final List<Path> windowsOnlyTestCases = new ArrayList<>();
private final List<Path> linuxOnlyTestCases = new ArrayList<>();
@Override
public FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attrs) throws IOException {
if(dir.getParent() != null){
if(dir.getParent().getFileName().startsWith(INVALID_DIR_NAME)){
invalidTestCases.add(dir);
}
if(dir.getParent().getFileName().startsWith(VALID_DIR_NAME)){
validTestCases.add(dir);
}
if(dir.getParent().getFileName().startsWith(WARNING_DIR_NAME)){
warningTestCases.add(dir);
}
if(dir.getParent().getFileName().startsWith(WINDOWS_DIR_NAME)){
windowsOnlyTestCases.add(dir);
}
if(dir.getParent().getFileName().startsWith(LINUX_DIR_NAME)){
linuxOnlyTestCases.add(dir);
}
}
return FileVisitResult.CONTINUE;
}
public List<Path> getInvalidTestCases() {
return invalidTestCases;
}
public List<Path> getValidTestCases() {
return validTestCases;
}
public List<Path> getWarningTestCases() {
return warningTestCases;
}
public List<Path> getWindowsOnlyTestCases() {
return windowsOnlyTestCases;
}
public List<Path> getLinuxOnlyTestCases() {
return linuxOnlyTestCases;
}
}