package fitnesse.fixtures;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PagesRunInSuite {
private String prefix;
private String testSystemID;
public PagesRunInSuite(String prefix, String testSystemID) {
this.prefix = prefix;
this.testSystemID = testSystemID;
}
public List<Object> query() throws Exception {
return buildQueryResponse(getPagesRunInSuite());
}
private List<String> getPagesRunInSuite() throws Exception {
List<String> testPages = new ArrayList<String>();
String content = FitnesseFixtureContext.sender.sentData();
String testSystems[] = content.split("slim:");
for (String testSystem : testSystems) {
addPagesForThisTestSystem(testPages, testSystem);
}
return testPages;
}
private void addPagesForThisTestSystem(List<String> testPages, String testSystem) {
if (testSystem.startsWith(testSystemID)) {
String pageString[] = testSystem.split("test_name\">");
addPages(testPages, pageString);
}
}
private void addPages(List<String> testPages, String[] pageString) {
for (int i = 1; i < pageString.length; i++) {
int fragmentEnd = pageString[i].indexOf("<");
String testPage = pageString[i].substring(0, fragmentEnd);
if (testPage.startsWith(prefix)) {
testPages.add(testPage);
}
}
}
private List<Object> buildQueryResponse(List<String> testPages) {
List<Object> rows = new ArrayList<Object>();
for (int i = 0; i < testPages.size(); i++) {
List<Object> columns = new ArrayList<Object>();
List<String> pageNameCell = Arrays.asList("page name", testPages.get(i));
columns.add(pageNameCell);
rows.add(columns);
}
return rows;
}
}