package fitnesse.reporting.history; import fitnesse.wiki.PathParser; import util.FileUtil; import java.io.File; import java.util.*; public class TestHistory { final Map<String, File> pageDirectoryMap = new HashMap<>(); public TestHistory(File historyDirectory) { readHistoryDirectory(historyDirectory); } public TestHistory(File historyDirectory, String pageName) { readPageHistoryDirectory(historyDirectory, pageName); } private void readHistoryDirectory(File historyDirectory) { File[] pageDirectories = FileUtil.getDirectoryListing(historyDirectory); for (File file : pageDirectories) if (isValidFile(file)) pageDirectoryMap.put(file.getName(), file); } private boolean isValidFile(File file) { return file.isDirectory() && file.list().length > 0 && PathParser.isWikiPath(file.getName()); } public Set<String> getPageNames() { return new TreeSet<>(pageDirectoryMap.keySet()); } public PageHistory getPageHistory(String pageName) { File pageHistoryDirectory = pageDirectoryMap.get(pageName); if (pageHistoryDirectory == null) return null; else { PageHistory pageHistory = new PageHistory(pageHistoryDirectory); if (pageHistory.size() == 0) return null; else return pageHistory; } } private void readPageHistoryDirectory(File historyDirectory, String pageName) { File[] pageDirectories = FileUtil.getDirectoryListing(historyDirectory); for (File file : pageDirectories) if ((isValidFile(file)) && file.getName().startsWith(pageName)) pageDirectoryMap.put(file.getName(), file); } }