Rewrite XML serialization avoiding string concats
[cql-java-moved-to-github.git] / src / main / java / org / z3950 / zing / cql / XCQLBuilder.java
1 /*
2  * Copyright (c) 1995-2011, Index Data
3  * All rights reserved.
4  * See the file LICENSE for details.
5  */
6 package org.z3950.zing.cql;
7
8 /**
9  *
10  * @author jakub
11  */
12 class XCQLBuilder {
13   private StringBuilder sb;
14
15   XCQLBuilder(StringBuilder sb) {
16     this.sb = sb;
17   }
18
19   XCQLBuilder indent(int level) {
20     while (level-- > 0) {
21       sb.append("  ");
22     }
23     return this;
24   }
25
26   XCQLBuilder xq(String str) {
27     for (int i = 0; i < str.length(); i++) {
28       char c = str.charAt(i);
29       switch (c) {
30         case '<':
31           sb.append("&lt;");
32           break;
33         case '>':
34           sb.append("&gt;");
35           break;
36         case '&':
37           sb.append("&amp;");
38           break;
39         default:
40           sb.append(c);
41       }
42     }
43     return this;
44   }
45   
46   XCQLBuilder append(String str) {
47     sb.append(str);
48     return this;
49   }
50
51   public String toString() {
52     return sb.toString();
53   }
54 }