package fitnesse.revisioncontrol; import fitnesse.revisioncontrol.wiki.RevisionControlledFileSystemPage; import fitnesse.wiki.PageData; import fitnesse.wiki.WikiPage; import fitnesse.wiki.WikiPageAction; import java.util.ArrayList; import java.util.List; public class RevisionControlActionsBuilder { public static List<WikiPageAction> getRevisionControlActions(String pageName, PageData pageData) throws Exception { List<WikiPageAction> actions = new ArrayList<WikiPageAction>(); if (pageData.hasAttribute("Edit") || pageData.hasAttribute("WikiImport")) { final WikiPage wikiPage = pageData.getWikiPage(); if (shouldDisplayRevisionControlActions(wikiPage)) { actions.add(new WikiPageAction(null, "Revision Control")); final State state = ((RevisionControllable) wikiPage).getState(); final RevisionControlOperation[] operations = state.operations(); for (final RevisionControlOperation operation : operations) actions.add(operation.makeAction(pageName)); } } return actions; } private static boolean shouldDisplayRevisionControlActions(WikiPage wikiPage) throws Exception { return wikiPage instanceof RevisionControlledFileSystemPage && ((RevisionControllable) wikiPage).isExternallyRevisionControlled(); } }