Skip to content

Commit 9ed2a3e

Browse files
committed
Added better exception handling using the new ORMQueryException.
1 parent e0b31f6 commit 9ed2a3e

File tree

6 files changed

+183
-94
lines changed

6 files changed

+183
-94
lines changed

src/main/java/org/javawebstack/orm/QueryBuilder.java

Lines changed: 59 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.javawebstack.orm;
22

3+
import org.javawebstack.orm.exception.ORMQueryException;
34
import org.javawebstack.orm.mapper.TypeMapper;
45

56
import java.lang.reflect.InvocationTargetException;
@@ -112,10 +113,14 @@ public List<T> all(){
112113
sb.append(limit);
113114
}
114115
sb.append(";");
115-
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
116-
List<T> results = parseResults(rs);
117-
repository.getConnection().close(rs);
118-
return results;
116+
try {
117+
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
118+
List<T> results = parseResults(rs);
119+
repository.getConnection().close(rs);
120+
return results;
121+
} catch (SQLException throwables) {
122+
throw new ORMQueryException(throwables);
123+
}
119124
}
120125

121126
public int count(){
@@ -127,16 +132,20 @@ public int count(){
127132
sb.append(where.query);
128133
params.addAll(where.params);
129134
sb.append(";");
130-
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
131-
int count = -1;
132135
try {
133-
rs.next();
134-
count = rs.getInt(1);
136+
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
137+
int count = -1;
138+
try {
139+
rs.next();
140+
count = rs.getInt(1);
141+
} catch (SQLException throwables) {
142+
throwables.printStackTrace();
143+
}
144+
repository.getConnection().close(rs);
145+
return count;
135146
} catch (SQLException throwables) {
136-
throwables.printStackTrace();
147+
throw new ORMQueryException(throwables);
137148
}
138-
repository.getConnection().close(rs);
139-
return count;
140149
}
141150

142151
public T refresh(T entry){
@@ -149,10 +158,15 @@ public T refresh(T entry){
149158
sb.append(where.query);
150159
params.addAll(where.params);
151160
sb.append(";");
152-
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
153-
parseResult(rs, entry);
154-
repository.getConnection().close(rs);
155-
return entry;
161+
try {
162+
ResultSet rs = repository.getConnection().read(sb.toString(), params.toArray());
163+
parseResult(rs, entry);
164+
repository.getConnection().close(rs);
165+
return entry;
166+
} catch (SQLException throwables) {
167+
throw new ORMQueryException(throwables);
168+
}
169+
156170
}
157171

158172
public void finalDelete(){
@@ -165,7 +179,11 @@ public void finalDelete(){
165179
sb.append(where.query);
166180
params.addAll(where.params);
167181
sb.append(";");
168-
repository.getConnection().write(sb.toString(), params.toArray());
182+
try {
183+
repository.getConnection().write(sb.toString(), params.toArray());
184+
} catch (SQLException throwables) {
185+
throw new ORMQueryException(throwables);
186+
}
169187
}
170188

171189
public Timestamp delete(){
@@ -179,7 +197,11 @@ public Timestamp delete(){
179197
params.add(deletedAt);
180198
QueryPart part = makeWhere();
181199
params.addAll(part.params);
182-
repository.getConnection().write("UPDATE `"+info.getTableName()+"` SET `"+info.getColumnName(info.getSoftDeleteField())+"`=?"+part.query+";", params.toArray());
200+
try {
201+
repository.getConnection().write("UPDATE `"+info.getTableName()+"` SET `"+info.getColumnName(info.getSoftDeleteField())+"`=?"+part.query+";", params.toArray());
202+
} catch (SQLException throwables) {
203+
throw new ORMQueryException(throwables);
204+
}
183205
return deletedAt;
184206
}
185207

@@ -191,7 +213,11 @@ public void restore(){
191213
params.add(null);
192214
QueryPart part = makeWhere();
193215
params.addAll(part.params);
194-
repository.getConnection().write("UPDATE `"+info.getTableName()+"` SET `"+info.getColumnName(info.getSoftDeleteField())+"`=?"+part.query+";", params.toArray());
216+
try {
217+
repository.getConnection().write("UPDATE `"+info.getTableName()+"` SET `"+info.getColumnName(info.getSoftDeleteField())+"`=?"+part.query+";", params.toArray());
218+
} catch (SQLException throwables) {
219+
throw new ORMQueryException(throwables);
220+
}
195221
}
196222

197223
public void update(T entry){
@@ -219,7 +245,11 @@ public void update(T entry){
219245
sb.append(where.query);
220246
params.addAll(where.params);
221247
sb.append(";");
222-
repository.getConnection().write(sb.toString(), params.toArray());
248+
try {
249+
repository.getConnection().write(sb.toString(), params.toArray());
250+
} catch (SQLException throwables) {
251+
throw new ORMQueryException(throwables);
252+
}
223253
}
224254

225255
public void create(T entry){
@@ -246,10 +276,14 @@ public void create(T entry){
246276
sb.append(") VALUES (");
247277
sb.append(String.join(",", values));
248278
sb.append(");");
249-
int id = repository.getConnection().write(sb.toString(), params.toArray());
250-
if(info.isAutoIncrement())
251-
setValue(info.getIdField(), entry, id);
252-
entry.setEntryExists(true);
279+
try {
280+
int id = repository.getConnection().write(sb.toString(), params.toArray());
281+
if(info.isAutoIncrement())
282+
setValue(info.getIdField(), entry, id);
283+
entry.setEntryExists(true);
284+
} catch (SQLException throwables) {
285+
throw new ORMQueryException(throwables);
286+
}
253287
}
254288

255289
private QueryPart makeWhere(){
@@ -343,7 +377,7 @@ private void setValue(String fieldName, T entry, Object value) {
343377
}
344378
}
345379

346-
private class Condition {
380+
private static class Condition {
347381
String fieldName;
348382
String operator;
349383
Object value;
@@ -354,7 +388,7 @@ public Condition(String fieldName, String operator, Object value){
354388
}
355389
}
356390

357-
private class QueryPart {
391+
private static class QueryPart {
358392
String query;
359393
List<Object> params;
360394
public QueryPart(String query, List<Object> params) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.javawebstack.orm.exception;
2+
3+
public class ORMQueryException extends RuntimeException {
4+
5+
public ORMQueryException(Throwable parent){
6+
this(parent.getMessage());
7+
}
8+
9+
public ORMQueryException(String message){
10+
super(message);
11+
}
12+
13+
}

src/main/java/org/javawebstack/orm/migration/AutoMigrator.java

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.javawebstack.orm.Repo;
44
import org.javawebstack.orm.TableInfo;
5+
import org.javawebstack.orm.exception.ORMQueryException;
56
import org.javawebstack.orm.wrapper.SQL;
67

78
import java.sql.ResultSet;
@@ -72,52 +73,68 @@ private static void migrateTable(SQL sql, TableInfo info, boolean tableExists){
7273
addColumns.add("UNIQUE (`" + columnName + "`)");
7374
}
7475
if(!tableExists){
75-
sql.write(new StringBuilder("CREATE TABLE `")
76-
.append(info.getTableName())
77-
.append("` (")
78-
.append(String.join(",", addColumns))
79-
.append(") DEFAULT CHARSET=utf8mb4;").toString()
80-
, addValues.toArray());
81-
}else{
82-
if(addColumns.size() > 0){
83-
sql.write(new StringBuilder("ALTER TABLE `")
76+
try {
77+
sql.write(new StringBuilder("CREATE TABLE `")
8478
.append(info.getTableName())
85-
.append("` ADD (")
79+
.append("` (")
8680
.append(String.join(",", addColumns))
87-
.append(");").toString()
81+
.append(") DEFAULT CHARSET=utf8mb4;").toString()
8882
, addValues.toArray());
83+
} catch (SQLException throwables) {
84+
throw new ORMQueryException(throwables);
85+
}
86+
}else{
87+
if(addColumns.size() > 0){
88+
try {
89+
sql.write(new StringBuilder("ALTER TABLE `")
90+
.append(info.getTableName())
91+
.append("` ADD (")
92+
.append(String.join(",", addColumns))
93+
.append(");").toString()
94+
, addValues.toArray());
95+
} catch (SQLException throwables) {
96+
throw new ORMQueryException(throwables);
97+
}
8998
}
9099
if(updateColumns.size() > 0){
91-
sql.write(new StringBuilder("ALTER TABLE `")
92-
.append(info.getTableName())
93-
.append("` ")
94-
.append(updateColumns.stream().map(c -> "MODIFY COLUMN " + c).collect(Collectors.joining(",")))
95-
.append(";").toString()
96-
, updateValues.toArray());
100+
try {
101+
sql.write(new StringBuilder("ALTER TABLE `")
102+
.append(info.getTableName())
103+
.append("` ")
104+
.append(updateColumns.stream().map(c -> "MODIFY COLUMN " + c).collect(Collectors.joining(",")))
105+
.append(";").toString()
106+
, updateValues.toArray());
107+
} catch (SQLException throwables) {
108+
throw new ORMQueryException(throwables);
109+
}
97110
}
98111
}
99112
}
100113

101114
private static Map<String,String> getColumnKeys(SQL sql, String tableName){
102-
Map<String, String> columnKeys = new HashMap<>();
103-
ResultSet rs = sql.read("SHOW COLUMNS FROM `"+tableName+"`;");
104115
try {
116+
Map<String, String> columnKeys = new HashMap<>();
117+
ResultSet rs = sql.read("SHOW COLUMNS FROM `"+tableName+"`;");
105118
while (rs.next()) {
106119
columnKeys.put(rs.getString(1), rs.getString(4));
107120
}
108-
} catch (SQLException throwables) {}
109-
return columnKeys;
121+
return columnKeys;
122+
} catch (SQLException throwables) {
123+
throw new ORMQueryException(throwables);
124+
}
110125
}
111126

112127
private static List<String> getTables(SQL sql){
113-
List<String> tables = new ArrayList<>();
114-
ResultSet rs = sql.read("SHOW TABLES;");
115128
try {
129+
List<String> tables = new ArrayList<>();
130+
ResultSet rs = sql.read("SHOW TABLES;");
116131
while (rs.next()) {
117132
tables.add(rs.getString(1));
118133
}
119-
} catch (SQLException throwables) {}
120-
return tables;
134+
return tables;
135+
} catch (SQLException throwables) {
136+
throw new ORMQueryException(throwables);
137+
}
121138
}
122139

123140
}

src/main/java/org/javawebstack/orm/migration/DB.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.javawebstack.orm.migration;
22

33
import org.javawebstack.orm.SQLType;
4+
import org.javawebstack.orm.exception.ORMQueryException;
45
import org.javawebstack.orm.wrapper.SQL;
56

7+
import java.sql.SQLException;
68
import java.util.ArrayList;
79
import java.util.List;
810
import java.util.function.Consumer;
@@ -111,12 +113,20 @@ public void softDelete(){
111113
}
112114

113115
public void rename(String to){
114-
sql.write("RENAME TABLE `"+fullName()+"` TO `"+tablePrefix + to+"`;");
116+
try {
117+
sql.write("RENAME TABLE `"+fullName()+"` TO `"+tablePrefix + to+"`;");
118+
} catch (SQLException throwables) {
119+
throw new ORMQueryException(throwables);
120+
}
115121
this.name = to;
116122
}
117123

118124
public void drop(){
119-
sql.write("DROP TABLE `"+fullName()+"`;");
125+
try {
126+
sql.write("DROP TABLE `"+fullName()+"`;");
127+
} catch (SQLException throwables) {
128+
throw new ORMQueryException(throwables);
129+
}
120130
}
121131

122132
public void create(){
@@ -134,7 +144,11 @@ public void create(boolean ifNotExists){
134144
columns.forEach(c -> entries.addAll(c.contraints()));
135145
sb.append(String.join(",", entries));
136146
sb.append(") DEFAULT CHARSET=utf8mb4;");
137-
sql.write(sb.toString());
147+
try {
148+
sql.write(sb.toString());
149+
} catch (SQLException throwables) {
150+
throw new ORMQueryException(throwables);
151+
}
138152
}
139153

140154
public class Column {
@@ -184,12 +198,20 @@ public Column first(){
184198
}
185199

186200
public void rename(String to){
187-
sql.write("ALTER TABLE `"+fullName()+"` RENAME COLUMN `"+name+"` TO `"+to+"`;");
201+
try {
202+
sql.write("ALTER TABLE `"+fullName()+"` RENAME COLUMN `"+name+"` TO `"+to+"`;");
203+
} catch (SQLException throwables) {
204+
throw new ORMQueryException(throwables);
205+
}
188206
name = to;
189207
}
190208

191209
public void drop(){
192-
sql.write("ALTER TABLE `"+fullName()+"` DROP COLUMN `"+name+"`;");
210+
try {
211+
sql.write("ALTER TABLE `"+fullName()+"` DROP COLUMN `"+name+"`;");
212+
} catch (SQLException throwables) {
213+
throw new ORMQueryException(throwables);
214+
}
193215
columns.remove(this);
194216
}
195217

@@ -199,7 +221,11 @@ public void add(){
199221
sb.append("` ADD ");
200222
sb.append(definition());
201223
sb.append(';');
202-
sql.write(sb.toString());
224+
try {
225+
sql.write(sb.toString());
226+
} catch (SQLException throwables) {
227+
throw new ORMQueryException(throwables);
228+
}
203229
}
204230

205231
public void modify(){
@@ -208,7 +234,11 @@ public void modify(){
208234
sb.append("` MODIFY ");
209235
sb.append(definition());
210236
sb.append(';');
211-
sql.write(sb.toString());
237+
try {
238+
sql.write(sb.toString());
239+
} catch (SQLException throwables) {
240+
throw new ORMQueryException(throwables);
241+
}
212242
}
213243

214244
String definition(){

0 commit comments

Comments
 (0)