diff --git a/src/library/assistant/database/DataHelper.java b/src/library/assistant/database/DataHelper.java index a7c1a2b..3633515 100644 --- a/src/library/assistant/database/DataHelper.java +++ b/src/library/assistant/database/DataHelper.java @@ -146,4 +146,24 @@ public static MailServerInfo loadMailServerInfo() { } return null; } + + public static ResultSet getIssueDetails(String bookID) throws SQLException { + return getIssueDetails(bookID, DatabaseHandler.getInstance().getConnection()); + } + + public static ResultSet getIssueDetails(String bookID, Connection conn) throws SQLException { + String myQuery = "SELECT ISSUE.bookID, ISSUE.memberID, ISSUE.issueTime, ISSUE.renew_count,\n" + + "MEMBER.name, MEMBER.mobile, MEMBER.email,\n" + + "BOOK.title, BOOK.author, BOOK.publisher\n" + + "FROM ISSUE\n" + + "LEFT JOIN MEMBER\n" + + "ON ISSUE.memberID=MEMBER.ID\n" + + "LEFT JOIN BOOK\n" + + "ON ISSUE.bookID=BOOK.ID\n" + + "WHERE ISSUE.bookID=?"; + PreparedStatement stmt = conn.prepareStatement(myQuery); + stmt.setString(1, bookID); + ResultSet rs = stmt.executeQuery(); + return rs; + } } diff --git a/src/library/assistant/ui/main/MainController.java b/src/library/assistant/ui/main/MainController.java index 50b0fff..eabe085 100644 --- a/src/library/assistant/ui/main/MainController.java +++ b/src/library/assistant/ui/main/MainController.java @@ -273,17 +273,8 @@ private void loadBookInfo2(ActionEvent event) { try { String id = bookID.getText(); - String myQuery = "SELECT ISSUE.bookID, ISSUE.memberID, ISSUE.issueTime, ISSUE.renew_count,\n" - + "MEMBER.name, MEMBER.mobile, MEMBER.email,\n" - + "BOOK.title, BOOK.author, BOOK.publisher\n" - + "FROM ISSUE\n" - + "LEFT JOIN MEMBER\n" - + "ON ISSUE.memberID=MEMBER.ID\n" - + "LEFT JOIN BOOK\n" - + "ON ISSUE.bookID=BOOK.ID\n" - + "WHERE ISSUE.bookID='" + id + "'"; - ResultSet rs = databaseHandler.execQuery(myQuery); - if (rs.next()) { + ResultSet rs = DataHelper.getIssueDetails(id); + if (rs != null && rs.next()) { memberNameHolder.setText(rs.getString("name")); memberContactHolder.setText(rs.getString("mobile")); memberEmailHolder.setText(rs.getString("email")); @@ -313,8 +304,8 @@ private void loadBookInfo2(ActionEvent event) { JFXButton button = new JFXButton("Okay.I'll Check"); AlertMaker.showMaterialDialog(rootPane, rootAnchorPane, Arrays.asList(button), "No such Book Exists in Issue Database", null); } - } catch (Exception e) { - e.printStackTrace(); + } catch (SQLException e) { + Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, e); } } diff --git a/test/library/assistant/database/DataHelperTest.java b/test/library/assistant/database/DataHelperTest.java index 17db79b..4df8872 100644 --- a/test/library/assistant/database/DataHelperTest.java +++ b/test/library/assistant/database/DataHelperTest.java @@ -2,6 +2,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import library.assistant.data.model.Book; import org.junit.Test; @@ -64,4 +65,37 @@ public void testInsertNewBookException() throws SQLException { // Assert assertFalse(result); } + + @Test + public void testGetIssueDetails() throws SQLException { + // Arrange + Connection mockConn = mock(Connection.class); + PreparedStatement mockStmt = mock(PreparedStatement.class); + ResultSet mockRs = mock(ResultSet.class); + String bookID = "B100"; + + when(mockConn.prepareStatement(anyString())).thenReturn(mockStmt); + when(mockStmt.executeQuery()).thenReturn(mockRs); + + // Act + ResultSet result = DataHelper.getIssueDetails(bookID, mockConn); + + // Assert + assertNotNull(result); + assertEquals(mockRs, result); + verify(mockStmt).setString(1, bookID); + verify(mockStmt).executeQuery(); + } + + @Test(expected = SQLException.class) + public void testGetIssueDetailsException() throws SQLException { + // Arrange + Connection mockConn = mock(Connection.class); + String bookID = "B100"; + + when(mockConn.prepareStatement(anyString())).thenThrow(new SQLException("DB Error")); + + // Act + DataHelper.getIssueDetails(bookID, mockConn); + } }