StatementBuilder.java

biz/hammurapi/sql/syntax/StatementBuilder.java

Violations

Inspector Message Severity Location
Java Inspector 048 Copyrights information should be present in each file. 1
Java Inspector 086 Use equals() instead of == or != to compare objects. 1 95:32
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 68:25
Java Inspector 073 [java.lang.StringBuffer] In Java 5 use StringBuilder instead of StringBuffer if access is single-threaded, e.g. StringBuffer is used as a local variable . 2 14:9
Java Inspector 082 Parenthesis are redundant. 2 85:36
Java Inspector 082 Parenthesis are redundant. 2 86:44
Java Inspector 089 Undocumented top level type 2 12:1
Java Inspector 089 Undocumented constructor 2 17:9
Java Inspector 089 Undocumented constructor 2 21:9
Java Inspector 089 Undocumented constructor 2 31:9
Java Inspector 089 Undocumented constructor 2 35:9
Java Inspector 089 Undocumented method 2 39:9
Java Inspector 089 Undocumented method 2 48:9
Java Inspector 089 Undocumented method 2 55:9
Java Inspector 089 Undocumented method 2 61:9
Java Inspector 089 Undocumented method 2 65:9
Java Inspector 089 Undocumented method 2 73:9
Java Inspector 089 Undocumented method 2 81:9
Java Inspector 089 Undocumented method 2 90:9
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 92:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 94:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 96:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 100:33
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 102:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 105:33
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 107:25
Java Inspector 025 Avoid hardwired numeric literals. Allowed literals: [1, -1, 0] 3 82:35
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 42:49
Java Inspector 040 Parameter name sql clashes with field name in StatementBuilder 3 39:28
Java Inspector 040 Parameter name sql clashes with field name in StatementBuilder 3 48:28
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 17:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 21:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 31:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 35:9

Source code

1package biz.hammurapi.sql.syntax;
2
3import java.io.Serializable;
4import java.sql.PreparedStatement;
5import java.sql.SQLException;
6import java.util.ArrayList;
7import java.util.Iterator;
8import java.util.List;
9
10import biz.hammurapi.sql.Parameterizer;
11
12public class StatementBuilder implements StatementFragment, Serializable {
13
14 private StringBuffer sql = new StringBuffer();
15 private List parameterizers = new ArrayList();
16
17 public StatementBuilder(String sql) {
18 this(sql, null);
19 }
20
21 public StatementBuilder(String sql, Parameterizer parameterizer) {
22 if (sql!=null) {
23 this.sql.append(sql);
24 }
25
26 if (parameterizer!=null) {
27 parameterizers.add(parameterizer);
28 }
29 }
30
31 public StatementBuilder() {
32
33 }
34
35 public StatementBuilder(StatementFragment fragment) {
36 this(fragment==null ? null : fragment.toSqlString(), fragment);
37 }
38
39 public void append(String sql) {
40 if (sql!=null) {
41 if (this.sql.length()>0) {
42 this.sql.append(" ");
43 }
44 this.sql.append(sql);
45 }
46 }
47
48 public void append(String sql, Parameterizer parameterizer) {
49 append(sql);
50 if (parameterizer!=null) {
51 parameterizers.add(parameterizer);
52 }
53 }
54
55 public void append(StatementFragment fragment) {
56 if (fragment!=null) {
57 append(fragment.toSqlString(), fragment);
58 }
59 }
60
61 public String toSqlString() {
62 return sql.toString();
63 }
64
65 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
66 Iterator it = parameterizers.iterator();
67 while (it.hasNext()) {
68 idx=((Parameterizer) it.next()).parameterize(ps, idx);
69 }
70 return idx;
71 }
72
73 public static StatementBuilder assemble(String sql, Parameterizer parameterizer, StatementFragment fragment) {
74 StatementBuilder ret = new StatementBuilder(sql, parameterizer);
75 if (fragment!=null) {
76 ret.append(fragment);
77 }
78 return ret;
79 }
80
81 public int hashCode() {
82 final int prime = 31;
83 int result = 1;
84 result = prime * result
85 + ((parameterizers == null) ? 0 : parameterizers.hashCode());
86 result = prime * result + ((sql == null) ? 0 : sql.toString().hashCode());
87 return result;
88 }
89
90 public boolean equals(Object obj) {
91 if (this == obj)
92 return true;
93 if (obj == null)
94 return false;
95 if (getClass() != obj.getClass())
96 return false;
97 final StatementBuilder other = (StatementBuilder) obj;
98 if (parameterizers == null) {
99 if (other.parameterizers != null)
100 return false;
101 } else if (!parameterizers.equals(other.parameterizers))
102 return false;
103 if (sql == null) {
104 if (other.sql != null)
105 return false;
106 } else if (other.sql==null || !sql.toString().equals(other.sql.toString()))
107 return false;
108 return true;
109 }
110
111}
112