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
63 changes: 39 additions & 24 deletions src/library/assistant/ui/issuedlist/IssuedListController.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.List;
import java.util.ResourceBundle;
import java.util.concurrent.TimeUnit;
import javafx.concurrent.Task;
import javafx.beans.property.SimpleFloatProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
Expand Down Expand Up @@ -81,31 +82,45 @@ public void setBookReturnCallback(BookReturnCallback callback) {

private void loadData() {
list.clear();
DatabaseHandler handler = DatabaseHandler.getInstance();
String qu = "SELECT ISSUE.bookID, ISSUE.memberID, ISSUE.issueTime, MEMBER.name, BOOK.title FROM ISSUE\n"
+ "LEFT OUTER JOIN MEMBER\n"
+ "ON MEMBER.id = ISSUE.memberID\n"
+ "LEFT OUTER JOIN BOOK\n"
+ "ON BOOK.id = ISSUE.bookID";
ResultSet rs = handler.execQuery(qu);
Preferences pref = Preferences.getPreferences();
try {
int counter = 0;
while (rs.next()) {
counter += 1;
String memberName = rs.getString("name");
String bookID = rs.getString("bookID");
String bookTitle = rs.getString("title");
Timestamp issueTime = rs.getTimestamp("issueTime");
System.out.println("Issued on " + issueTime);
Integer days = Math.toIntExact(TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - issueTime.getTime())) + 1;
Float fine = LibraryAssistantUtil.getFineAmount(days);
IssueInfo issueInfo = new IssueInfo(counter, bookID, bookTitle, memberName, LibraryAssistantUtil.formatDateTimeString(new Date(issueTime.getTime())), days, fine);
list.add(issueInfo);

Task<List<IssueInfo>> task = new Task<List<IssueInfo>>() {
@Override
protected List<IssueInfo> call() throws Exception {
List<IssueInfo> tempList = new ArrayList<>();
DatabaseHandler handler = DatabaseHandler.getInstance();
String qu = "SELECT ISSUE.bookID, ISSUE.memberID, ISSUE.issueTime, MEMBER.name, BOOK.title FROM ISSUE\n"
+ "LEFT OUTER JOIN MEMBER\n"
+ "ON MEMBER.id = ISSUE.memberID\n"
+ "LEFT OUTER JOIN BOOK\n"
+ "ON BOOK.id = ISSUE.bookID";
ResultSet rs = handler.execQuery(qu);
Preferences pref = Preferences.getPreferences();
try {
int counter = 0;
while (rs.next()) {
counter += 1;
String memberName = rs.getString("name");
String bookID = rs.getString("bookID");
String bookTitle = rs.getString("title");
Timestamp issueTime = rs.getTimestamp("issueTime");
System.out.println("Issued on " + issueTime);
Integer days = Math.toIntExact(TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - issueTime.getTime())) + 1;
Float fine = LibraryAssistantUtil.getFineAmount(days, pref);
IssueInfo issueInfo = new IssueInfo(counter, bookID, bookTitle, memberName, LibraryAssistantUtil.formatDateTimeString(new Date(issueTime.getTime())), days, fine);
tempList.add(issueInfo);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return tempList;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
};

task.setOnSucceeded(event -> {
list.setAll(task.getValue());
});

new Thread(task).start();
}

@FXML
Expand Down
4 changes: 4 additions & 0 deletions src/library/assistant/util/LibraryAssistantUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ public static Object loadWindow(URL loc, String title, Stage parentStage) {

public static Float getFineAmount(int totalDays) {
Preferences pref = Preferences.getPreferences();
return getFineAmount(totalDays, pref);
}

public static Float getFineAmount(int totalDays, Preferences pref) {
Integer fineDays = totalDays - pref.getnDaysWithoutFine();
Float fine = 0f;
if (fineDays > 0) {
Expand Down