1 package sharin.sql.formatter;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 class BasicResultBuffer {
7
8 private final List<StringBuilder> builderList = new ArrayList<StringBuilder>();
9
10 private final StringBuilder result = new StringBuilder();
11
12 public BasicResultBuffer() {
13 builderList.add(null);
14 }
15
16 public void append(String s) {
17 StringBuilder builder = null;
18 int size = builderList.size();
19
20 if (size >= 1) {
21 builder = builderList.get(size - 1);
22 }
23
24 if (builder == null) {
25 builder = result;
26 }
27
28 append(builder, s);
29 }
30
31 private void append(StringBuilder builder, String s) {
32
33 if (s == null || s.length() == 0) {
34 return;
35 }
36
37 if (builder.length() > 0) {
38 builder.append(' ');
39 }
40
41 builder.append(s);
42 }
43
44 public void flush() {
45
46 for (int i = 0; i < builderList.size(); i++) {
47 StringBuilder builder = builderList.get(i);
48
49 if (builder != null) {
50 append(result, builder.toString());
51 builderList.set(i, null);
52 }
53 }
54 }
55
56 public void begin() {
57 builderList.add(new StringBuilder());
58 }
59
60 public void prepend(String s) {
61 int size = builderList.size();
62
63 if (size >= 2 && builderList.get(size - 2) == null) {
64 append(s);
65 }
66 }
67
68 public void end() {
69 int size = builderList.size();
70
71 if (size >= 1) {
72 builderList.remove(size - 1);
73 }
74 }
75
76 public String getResult() {
77 return result.toString();
78 }
79 }