package fitnesse.responders.testHistory; import fitnesse.responders.run.TestSummary; import fitnesse.wikitext.parser.WikiWordPath; import util.FileUtil; import java.io.File; import java.text.SimpleDateFormat; import java.util.*; public class TestHistory { Map<String, File> pageDirectoryMap = new HashMap<String, File>(); public static final String TEST_RESULT_FILE_DATE_PATTERN = "yyyyMMddHHmmss"; public 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 && WikiWordPath.isWikiWord(file.getName()); } public Set<String> getPageNames() { return new TreeSet<String>(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; } } public 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); } public static String makeResultFileName(TestSummary summary, long time) { SimpleDateFormat format = new SimpleDateFormat(TEST_RESULT_FILE_DATE_PATTERN); String datePart = format.format(new Date(time)); return String.format("%s_%d_%d_%d_%d.xml", datePart, summary.getRight(), summary.getWrong(), summary.getIgnores(), summary.getExceptions()); } }