Samples.java

biz/hammurapi/sql/Samples.java

Violations

Inspector Message Severity Location
Java Inspector 048 Copyrights information should be present in each file. 1
Java Inspector 058 Make inner classes "private" 1 149:15
Java Inspector 058 Make inner classes "private" 1 202:9
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 99:54
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 119:46
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 120:46
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 129:54
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 195:59
Java Inspector 015 Do not change parameter value. For comprehensibility, formal parameters should be final 2 229:59
Java Inspector 049 Use a Collection instead of arrays Object[] 2 94:17
Java Inspector 068 Do not use System.out and System.err to output logging messages. Use loggers instead. 2 76:43
Java Inspector 068 Do not use System.out and System.err to output logging messages. Use loggers instead. 2 87:51
Java Inspector 089 Type is not documented 2 40:1
Java Inspector 089 Undocumented method 2 42:9
Java Inspector 089 Non-private, non-local types shall be documented 2 51:19
Java Inspector 089 Undocumented method 2 64:41
Java Inspector 089 Undocumented method 2 86:25
Java Inspector 089 Undocumented method 2 98:33
Java Inspector 089 Undocumented method 2 104:33
Java Inspector 089 Undocumented method 2 118:25
Java Inspector 089 Undocumented method 2 128:33
Java Inspector 089 Undocumented method 2 134:33
Java Inspector 089 Undocumented method 2 141:33
Java Inspector 089 Non-private, non-local types shall be documented 2 149:15
Java Inspector 089 Undocumented constructor 2 153:17
Java Inspector 089 Undocumented method 2 157:17
Java Inspector 089 Undocumented method 2 160:17
Java Inspector 089 Undocumented method 2 163:17
Java Inspector 089 Undocumented method 2 166:17
Java Inspector 089 Undocumented method 2 194:41
Java Inspector 089 Non-private, non-local types shall be documented 2 202:9
Java Inspector 089 Undocumented method 2 206:17
Java Inspector 089 Undocumented method 2 209:17
Java Inspector 089 Undocumented method 2 212:17
Java Inspector 089 Undocumented method 2 215:17
Java Inspector 089 Undocumented method 2 228:41
Java Inspector 025 Avoid hardwired numeric literals. Allowed literals: [1, -1, 0] 3 184:98
Java Inspector 025 Avoid hardwired numeric literals. Allowed literals: [1, -1, 0] 3 184:101
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 61:33
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 73:41
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 74:48
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 85:41
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 87:62
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 87:68
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 87:85
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 96:25
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 99:61
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 105:61
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 126:25
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 136:57
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 143:49
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 173:48
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 177:37
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 181:37
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 184:37
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 188:73
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 192:33
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 222:34
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 226:33
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 153:17

Source code

1/*
2 * hgcommons 9
3 * Hammurapi Group Common Library
4 * Copyright (C) 2003 Hammurapi Group
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * URL: http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/products/hgcommons/index.html
21 * e-Mail: support@hammurapi.biz
22 */
23package biz.hammurapi.sql;
24
25import java.sql.PreparedStatement;
26import java.sql.ResultSet;
27import java.sql.SQLException;
28import java.util.ArrayList;
29import java.util.Collection;
30import java.util.Iterator;
31
32import javax.sql.DataSource;
33
34import biz.hammurapi.sql.hsqldb.HsqldbStandaloneDataSource;
35
36/**
37 * @author Pavel Vlasov
38 * @version $Revision: 1.6 $
39 */
40public class Samples {
41
42 public static void main(String[] args) throws Exception {
43 sample1();
44 }
45
46 private static final String CREATE_TABLE_SQL=
47 "CREATE CACHED TABLE PERSON " +
48 "(ID INTEGER IDENTITY NOT NULL PRIMARY KEY, " +
49 "FIRST_NAME VARCHAR(30), LAST_NAME VARCHAR(30))";
50
51 interface Person {
52 String getFirstName();
53 String getLastName();
54
55 void setFirstName(String firstName);
56 void setLastName(String lastName);
57 }
58
59 private static void sample1() throws Exception {
60 DataSource dataSource=new HsqldbStandaloneDataSource(
61 "People",
62 new Transaction() {
63
64 public boolean execute(SQLProcessor processor) throws SQLException {
65 processor.processUpdate(CREATE_TABLE_SQL, null);
66 return true;
67 }
68
69 });
70
71 SQLProcessor processor=new SQLProcessor(dataSource, null);
72// processor.setMeasurementConsumer(new SimpleMeasurementConsumer());
73 processor.processUpdate("INSERT INTO PERSON (FIRST_NAME, LAST_NAME) VALUES ('Pavel', 'Vlasov')", null);
74 Iterator it= processor.project("SELECT * FROM PERSON", null, Person.class).iterator();
75 while (it.hasNext()) {
76 System.out.println(it.next());
77 }
78
79 sample2(processor);
80
81 //System.out.println("SQL metrics: \n"+processor.getMeasurementConsumer());
82 }
83
84 private static void sample2(SQLProcessor processor) throws SQLException {
85 processor.processSelect("SELECT * FROM PERSON", null, new RowProcessor() {
86 public boolean process(ResultSet rs) throws SQLException {
87 System.out.println(rs.getInt("ID")+" "+rs.getString("LAST_NAME"));
88 return true;
89 }
90 });
91 }
92
93 private static String sample3(SQLProcessor processor) throws SQLException {
94 final String[] ret={null};
95 processor.processSelect(
96 "SELECT * FROM PERSON WHERE LAST_NAME=?",
97 new Parameterizer() {
98 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
99 ps.setString(idx++, "VLASOV");
100 return idx;
101 }
102 },
103 new RowProcessor() {
104 public boolean process(ResultSet rs) throws SQLException {
105 ret[0]=rs.getString("LAST_NAME");
106 return false;
107 }
108 });
109 return ret[0];
110 }
111
112 private static void updateOrInsert(
113 final SQLProcessor processor,
114 final String firstName,
115 final String lastName)
116 throws SQLException {
117 final Parameterizer parameterizer=new Parameterizer() {
118 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
119 ps.setString(idx++, firstName);
120 ps.setString(idx++, lastName);
121 return idx;
122 }
123 };
124
125 processor.processSelect(
126 "SELECT * FROM PERSON WHERE LAST_NAME=?",
127 new Parameterizer() {
128 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
129 ps.setString(idx++, lastName);
130 return idx;
131 }
132 },
133 new RowProcessorEx() {
134 public boolean process(ResultSet rs) throws SQLException {
135 processor.processUpdate(
136 "UPDATE PERSON SET FIRST_NAME=? WHERE LAST_NAME=?",
137 parameterizer);
138 return false;
139 }
140
141 public void onEmptyResultSet() throws SQLException {
142 processor.processUpdate(
143 "INSERT INTO PERSON (FIRST_NAME, LAST_NAME) VALUES (?, ?)",
144 parameterizer);
145 }
146 });
147 }
148
149 class Person2 {
150 private String firstName;
151 private String lastName;
152
153 public Person2(String firstName, String lastName) {
154 this.firstName=firstName;
155 this.lastName=lastName;
156 }
157 public String getFirstName() {
158 return firstName;
159 }
160 public void setFirstName(String firstName) {
161 this.firstName = firstName;
162 }
163 public String getLastName() {
164 return lastName;
165 }
166 public void setLastName(String lastName) {
167 this.lastName = lastName;
168 }
169 }
170
171 private static void projection(SQLProcessor processor, final int personId) throws Exception {
172 // Default - database backed
173 Collection c=processor.project("SELECT * FROM PERSON");
174
175 // Constructor - torn off
176 Projector projector=new ConstructorProjector(Person2.class.getConstructor(new Class[] {String.class, String.class}), null);
177 c=processor.project("SELECT FIRST_NAME, LAST_NAME FROM PERSON", null, projector, new ArrayList());
178
179 // Property - paged, database backed
180 projector=new PropertyProjector(Person2.class, null, null);
181 c=processor.project("SELECT FIRST_NAME, LAST_NAME FROM PERSON", null, projector);
182
183 // Interface - paged, torn off
184 c=processor.project("SELECT * FROM PERSON", null, Person.class, new ArrayList(), 3, 15);
185
186 // Single object projection
187 projector=new PropertyProjector(Person2.class, null, null);
188 Person2 person2=(Person2) processor.projectSingleObject("SELECT * FROM PERSON WHERE ID=2", null, projector);
189
190 // Single interface projection
191 Person person=(Person) processor.projectSingleObject(
192 "SELECT * FROM PERSON WHERE ID=?",
193 new Parameterizer() {
194 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
195 ps.setInt(idx++, personId);
196 return idx;
197 }
198 },
199 Person.class);
200 }
201
202 static class Person3 {
203 private String firstName;
204 private String lastName;
205
206 public String getFirstName() {
207 return firstName;
208 }
209 public void setFirstName(String firstName) {
210 this.firstName = firstName;
211 }
212 public String getLastName() {
213 return lastName;
214 }
215 public void setLastName(String lastName) {
216 this.lastName = lastName;
217 }
218 }
219
220 private static void injection(SQLProcessor processor, final int personId) throws Exception {
221 Person3 person=new Person3();
222 processor.inject("SELECT * FROM PERSON WHERE ID=2", null, null, person);
223
224 // Single interface projection
225 processor.inject(
226 "SELECT * FROM PERSON WHERE ID=?",
227 new Parameterizer() {
228 public int parameterize(PreparedStatement ps, int idx) throws SQLException {
229 ps.setInt(idx++, personId);
230 return idx;
231 }
232 },
233 null,
234 person);
235 }
236}
237