In.java

biz/hammurapi/sql/syntax/In.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 154:32
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 135:25
Java Inspector 049 Use a Collection instead of arrays Object[] 2 29:9
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 121:17
Java Inspector 082 Parenthesis are redundant. 2 144:36
Java Inspector 089 Type documentation is too short. It is only 1 words. Should be at least 3 words. 2 15:1
Java Inspector 089 Undocumented constructor 2 32:9
Java Inspector 089 Undocumented constructor 2 40:9
Java Inspector 089 Undocumented constructor 2 48:9
Java Inspector 089 Undocumented constructor 2 56:9
Java Inspector 089 Undocumented constructor 2 64:9
Java Inspector 089 Undocumented constructor 2 72:9
Java Inspector 089 Undocumented constructor 2 80:9
Java Inspector 089 Undocumented constructor 2 88:9
Java Inspector 089 Undocumented constructor 2 96:9
Java Inspector 089 Undocumented constructor 2 104:9
Java Inspector 089 Undocumented constructor 2 112:9
Java Inspector 089 Undocumented method 2 120:9
Java Inspector 089 Undocumented method 2 133:9
Java Inspector 089 Undocumented method 2 140:9
Java Inspector 089 Undocumented method 2 149:9
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 20:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 151:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 153:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 155:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 159:33
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 161:25
Java Inspector 003 do, while, if, and for statements need a brace enclosed block 3 163:25
Java Inspector 025 Avoid hardwired numeric literals. Allowed literals: [1, -1, 0] 3 18:35
Java Inspector 025 Avoid hardwired numeric literals. Allowed literals: [1, -1, 0] 3 141:35
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 122:28
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 125:44
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 127:36
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 129:28
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 32:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 40:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 48:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 56:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 64:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 72:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 80:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 88:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 96:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 104:9
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 112:9

Source code

1package biz.hammurapi.sql.syntax;
2
3import java.io.Serializable;
4import java.sql.PreparedStatement;
5import java.sql.SQLException;
6import java.util.Arrays;
7
8import biz.hammurapi.sql.Variant;
9
10/**
11 * In
12 * @author Pavel
13 *
14 */
15public class In implements StatementFragment, Serializable {
16
17 private static int hashCode(Object[] array) {
18 final int prime = 31;
19 if (array == null)
20 return 0;
21 int result = 1;
22 for (int index = 0; index < array.length; index++) {
23 result = prime * result
24 + (array[index] == null ? 0 : array[index].hashCode());
25 }
26 return result;
27 }
28
29 private Variant[] variants;
30 private String columnName;
31
32 public In(String columnName, boolean[] values) {
33 variants = new Variant[values.length];
34 for (int i=0; i<values.length; ++i) {
35 variants[i] = new Variant(values[i]);
36 }
37 this.columnName = columnName;
38 }
39
40 public In(String columnName, byte[] values) {
41 variants = new Variant[values.length];
42 for (int i=0; i<values.length; ++i) {
43 variants[i] = new Variant(values[i]);
44 }
45 this.columnName = columnName;
46 }
47
48 public In(String columnName, char[] values) {
49 variants = new Variant[values.length];
50 for (int i=0; i<values.length; ++i) {
51 variants[i] = new Variant(values[i]);
52 }
53 this.columnName = columnName;
54 }
55
56 public In(String columnName, double[] values) {
57 variants = new Variant[values.length];
58 for (int i=0; i<values.length; ++i) {
59 variants[i] = new Variant(values[i]);
60 }
61 this.columnName = columnName;
62 }
63
64 public In(String columnName, float[] values) {
65 variants = new Variant[values.length];
66 for (int i=0; i<values.length; ++i) {
67 variants[i] = new Variant(values[i]);
68 }
69 this.columnName = columnName;
70 }
71
72 public In(String columnName, int[] values) {
73 variants = new Variant[values.length];
74 for (int i=0; i<values.length; ++i) {
75 variants[i] = new Variant(values[i]);
76 }
77 this.columnName = columnName;
78 }
79
80 public In(String columnName, long[] values) {
81 variants = new Variant[values.length];
82 for (int i=0; i<values.length; ++i) {
83 variants[i] = new Variant(values[i]);
84 }
85 this.columnName = columnName;
86 }
87
88 public In(String columnName, String[] values) {
89 variants = new Variant[values.length];
90 for (int i=0; i<values.length; ++i) {
91 variants[i] = new Variant(values[i]);
92 }
93 this.columnName = columnName;
94 }
95
96 public In(String columnName, Object[] values) {
97 variants = new Variant[values.length];
98 for (int i=0; i<values.length; ++i) {
99 variants[i] = new Variant(values[i]);
100 }
101 this.columnName = columnName;
102 }
103
104 public In(String columnName, Object[] values, int sqlType) {
105 variants = new Variant[values.length];
106 for (int i=0; i<values.length; ++i) {
107 variants[i] = new Variant(values[i]);
108 }
109 this.columnName = columnName;
110 }
111
112 public In(String columnName, short[] values) {
113 variants = new Variant[values.length];
114 for (int i=0; i<values.length; ++i) {
115 variants[i] = new Variant(values[i]);
116 }
117 this.columnName = columnName;
118 }
119
120 public String toSqlString() {
121 StringBuffer ret = new StringBuffer(columnName);
122 ret.append(" IN (");
123 for (int i=0; i<variants.length; ++i) {
124 if (i>0) {
125 ret.append(", ");
126 }
127 ret.append("?");
128 }
129 ret.append(")");
130 return ret.toString();
131 }
132
133 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
134 for (int i=0; i<variants.length; ++i) {
135 idx=variants[i].parameterize(ps, idx);
136 }
137 return idx;
138 }
139
140 public int hashCode() {
141 final int prime = 31;
142 int result = 1;
143 result = prime * result
144 + ((columnName == null) ? 0 : columnName.hashCode());
145 result = prime * result + In.hashCode(variants);
146 return result;
147 }
148
149 public boolean equals(Object obj) {
150 if (this == obj)
151 return true;
152 if (obj == null)
153 return false;
154 if (getClass() != obj.getClass())
155 return false;
156 final In other = (In) obj;
157 if (columnName == null) {
158 if (other.columnName != null)
159 return false;
160 } else if (!columnName.equals(other.columnName))
161 return false;
162 if (!Arrays.equals(variants, other.variants))
163 return false;
164 return true;
165 }
166
167}
168