]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/refaktor-before/src/no/uio/ifi/refaktor/statistics/reports/SimpleReport.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-before / src / no / uio / ifi / refaktor / statistics / reports / SimpleReport.java
1 package no.uio.ifi.refaktor.statistics.reports;
2
3
4 public class SimpleReport implements Report {
5
6         public static final String FILENAME_EXTENSION = ".txt";
7         private final StringBuilder builder;
8         private String heading;
9         private String indent;
10
11         public SimpleReport() {
12                 builder = new StringBuilder();
13                 heading = "";
14                 resetIndent();
15         }
16
17         @Override
18         public void setHeading(String heading) {
19                 this.heading = heading;
20         }
21
22         @Override
23         public void addSection(String title) {
24                 resetIndent();
25                 title += ":";
26                 String line = title.replaceAll(".", "~");
27                 appendNewline();
28                 append(title);
29                 appendNewline();
30                 append(line);
31                 appendNewline();
32         }
33
34         @Override
35         public void addSubsection(String title) {
36                 indentOne();
37                 String line = title.replaceAll(".", "-");
38                 appendNewline();
39                 append(title);
40                 appendNewline();
41                 append(line);
42                 appendNewline();
43         }
44
45         private void resetIndent() {
46                 indent = "";
47         }
48
49         private void indentOne() {
50                 indent = "  ";
51         }
52
53         @Override
54         public void addData(String label, Object object) {
55                 addData(label, object.toString());
56         }
57
58         @Override
59         public void addData(String label, String data) {
60                 append(label + ": " + data);
61                 appendNewline();
62         }
63
64         @Override
65         public String generateReport() {
66                 String line = heading.replaceAll(".", "=");
67                 builder.insert(0, heading + newline() + line + newline() + newline());
68                 return builder.toString();
69         }
70
71         private void appendNewline() {
72                 builder.append(newline());
73         }
74
75         private String newline() {
76                 return "\n";
77         }
78
79         private void append(String string) {
80                 builder.append(indent + string);
81         }
82
83 }