Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/library/assistant/database/DataHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
17 changes: 4 additions & 13 deletions src/library/assistant/ui/main/MainController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down Expand Up @@ -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);
}

}
Expand Down
34 changes: 34 additions & 0 deletions test/library/assistant/database/DataHelperTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
}