Skip to content

Commit f7fd50c

Browse files
committed
Removing duplication
1 parent 6c761ca commit f7fd50c

File tree

2 files changed

+18
-31
lines changed

2 files changed

+18
-31
lines changed

src/integration_test/java/com/coveros/training/persistence/PersistenceLayerTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,15 @@ public void testGetBorrowerName_WhenExceptionThrown() throws SQLException {
345345

346346
/**
347347
* An exception of the right type should be thrown
348-
* when an error occurs in the {@link PersistenceLayer#executeUpdateTemplate(SqlData)} method.
348+
* when an error occurs in the {@link PersistenceLayer#executeUpdateTemplate} method.
349349
*/
350350
@Test(expected = SqlRuntimeException.class)
351351
public void testExecuteUpdateTemplate_ExceptionThrown() throws SQLException {
352352
final DataSource dataSource = Mockito.mock(DataSource.class);
353353
when(dataSource.getConnection()).thenThrow(new SQLException());
354354
final PersistenceLayer persistenceLayer = new PersistenceLayer(dataSource);
355355

356-
persistenceLayer.executeUpdateTemplate(SqlData.createEmpty());
356+
persistenceLayer.executeUpdateTemplate("","");
357357
}
358358

359359
/**

src/main/java/com/coveros/training/persistence/PersistenceLayer.java

+16-29
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,9 @@ private static JdbcConnectionPool obtainConnectionPool() {
3939

4040
/**
4141
* This command provides a template to execute updates (including inserts) on the database
42-
*
43-
* @param sqlData An object that contains the necessary components to run a SQL statement.
44-
* Usually contains some SQL text and some values that will be injected
45-
* into the statement at run-time.
4642
*/
47-
<T> void executeUpdateTemplate(SqlData<T> sqlData) {
43+
void executeUpdateTemplate(String description, String preparedStatement, Object ... params) {
44+
final SqlData<Object> sqlData = new SqlData<>(description, preparedStatement, params);
4845
try (Connection connection = dataSource.getConnection()) {
4946
try (PreparedStatement st = prepareStatementWithKeys(sqlData, connection)) {
5047
executeUpdateOnPreparedStatement(sqlData, st);
@@ -68,16 +65,6 @@ public <T> long executeInsertTemplate(
6865
}
6966
}
7067

71-
private <T> long executeInsertTemplate(SqlData<T> sqlData) {
72-
try (Connection connection = dataSource.getConnection()) {
73-
try (PreparedStatement st = prepareStatementWithKeys(sqlData, connection)) {
74-
return executeInsertOnPreparedStatement(sqlData, st);
75-
}
76-
} catch (SQLException ex) {
77-
throw new SqlRuntimeException(ex);
78-
}
79-
}
80-
8168
<T> long executeInsertOnPreparedStatement(SqlData<T> sqlData, PreparedStatement st) throws SQLException {
8269
sqlData.applyParametersToPreparedStatement(st);
8370
st.executeUpdate();
@@ -115,24 +102,24 @@ private <T> PreparedStatement prepareStatementWithKeys(SqlData<T> sqlData, Conne
115102
@Override
116103
public long saveNewBorrower(String borrowerName) {
117104
CheckUtils.checkStringNotNullOrEmpty(borrowerName);
118-
return executeInsertTemplate(new SqlData<>(
105+
return executeInsertTemplate(
119106
"adds a new library borrower",
120-
"INSERT INTO library.borrower (name) VALUES (?);", borrowerName));
107+
"INSERT INTO library.borrower (name) VALUES (?);", borrowerName);
121108
}
122109

123110
@Override
124111
public long createLoan(Book book, Borrower borrower, Date borrowDate) {
125-
return executeInsertTemplate(new SqlData<>(
112+
return executeInsertTemplate(
126113
"Creates a new loan of a book to a borrower",
127-
"INSERT INTO library.loan (book, borrower, borrow_date) VALUES (?, ?, ?);", book.id, borrower.id, borrowDate));
114+
"INSERT INTO library.loan (book, borrower, borrow_date) VALUES (?, ?, ?);", book.id, borrower.id, borrowDate);
128115
}
129116

130117
@Override
131118
public long saveNewBook(String bookTitle) {
132119
CheckUtils.checkStringNotNullOrEmpty(bookTitle);
133-
return executeInsertTemplate(new SqlData<>(
120+
return executeInsertTemplate(
134121
"Creates a new book in the database",
135-
"INSERT INTO library.book (title) VALUES (?);", bookTitle));
122+
"INSERT INTO library.book (title) VALUES (?);", bookTitle);
136123
}
137124

138125
@Override
@@ -147,25 +134,25 @@ public long saveNewUser(String username) {
147134
public void updateBorrower(long id, String borrowerName) {
148135
CheckUtils.checkIntParamPositive(id);
149136
CheckUtils.checkStringNotNullOrEmpty(borrowerName);
150-
executeUpdateTemplate(new SqlData<>(
137+
executeUpdateTemplate(
151138
"Updates the borrower's data",
152-
"UPDATE library.borrower SET name = ? WHERE id = ?;", borrowerName, id));
139+
"UPDATE library.borrower SET name = ? WHERE id = ?;", borrowerName, id);
153140
}
154141

155142
@Override
156143
public void deleteBook(long id) {
157144
CheckUtils.checkIntParamPositive(id);
158-
executeUpdateTemplate(new SqlData<>(
145+
executeUpdateTemplate(
159146
"Deletes a book from the database",
160-
"DELETE FROM library.book WHERE id = ?;", id));
147+
"DELETE FROM library.book WHERE id = ?;", id);
161148
}
162149

163150
@Override
164151
public void deleteBorrower(long id) {
165152
CheckUtils.checkIntParamPositive(id);
166-
executeUpdateTemplate(new SqlData<>(
153+
executeUpdateTemplate(
167154
"Deletes a borrower from the database",
168-
"DELETE FROM library.borrower WHERE id = ?;", id));
155+
"DELETE FROM library.borrower WHERE id = ?;", id);
169156
}
170157

171158
@Override
@@ -391,9 +378,9 @@ public Optional<Boolean> areCredentialsValid(String username, String password) {
391378
public void updateUserWithPassword(long id, String password) {
392379
CheckUtils.checkIntParamPositive(id);
393380
String hashedPassword = createHashedValueFromPassword(password);
394-
executeUpdateTemplate(new SqlData<>(
381+
executeUpdateTemplate(
395382
"Updates the user's password field with a new hash",
396-
"UPDATE auth.user SET password_hash = ? WHERE id = ?;", hashedPassword, id));
383+
"UPDATE auth.user SET password_hash = ? WHERE id = ?;", hashedPassword, id);
397384
}
398385

399386
private String createHashedValueFromPassword(String password) {

0 commit comments

Comments
 (0)