01: // Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
02: // Released under the terms of the GNU General Public License version 2 or later.
03: package fitnesse.fixtures;
04:
05: import fit.Fixture;
06:
07: import java.io.PrintWriter;
08: import java.io.StringWriter;
09: import java.util.StringTokenizer;
10: import fitnesse.wiki.*;
11:
12: public class PageBuilder extends Fixture {
13: private PrintWriter writer;
14: private StringWriter stringWriter;
15: private String pageAttributes = null;
16:
17: public PageBuilder() {
18: stringWriter = new StringWriter();
19: writer = new PrintWriter(stringWriter);
20: }
21:
22: public void line(String line) {
23: if (line.startsWith("\\"))
24: line = line.substring(1);
25: writer.println(line);
26: }
27:
28: public void page(String name) throws Exception {
29: String content = stringWriter.toString();
30: PageCrawler crawler = FitnesseFixtureContext.root
31: .getPageCrawler();
32: WikiPagePath path = PathParser.parse(name);
33: WikiPage page = crawler.addPage(FitnesseFixtureContext.root,
34: path, content);
35: if (pageAttributes != null) {
36: PageData data = page.getData();
37: setAttributes(data);
38: page.commit(data);
39: pageAttributes = null;
40: }
41: }
42:
43: public void attributes(String attributes) {
44: pageAttributes = attributes;
45: }
46:
47: private void setAttributes(PageData data) throws Exception {
48: StringTokenizer tokenizer = new StringTokenizer(pageAttributes,
49: ",");
50: while (tokenizer.hasMoreTokens()) {
51: String nameValuePair = tokenizer.nextToken();
52: int equals = nameValuePair.indexOf("=");
53: if (equals < 0)
54: throw new Exception(
55: "Attribute must have form name=value");
56: String name = nameValuePair.substring(0, equals);
57: String value = nameValuePair.substring(equals + 1);
58: data.setAttribute(name, value);
59: }
60: }
61: }
|