Repository navigation
Expand file tree
/
Copy pathLibrary.java
More file actions
173 lines (146 loc) · 4.78 KB
/
Copy pathLibrary.java
File metadata and controls
173 lines (146 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
import java.util.*;
class Book {
private String title;
private String author;
private String isbn;
private boolean isBorrowed = false; //default state
public Book (String title, String author, String isbn) {
this.title = title;
this.author = author;
this.isbn = isbn;
}
public String getTitle () {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public boolean getIsBorrowed() {
return isBorrowed;
}
public void setIsBorrowed (boolean isBorrowed) {
this.isBorrowed = isBorrowed;
}
@Override
public String toString() {
return "{ title: \"" + title +
"\", author: \"" + author +
"\", isbn: \"" + isbn +
"\", isBorrowed: " + isBorrowed +
" }";
}
}
class Member {
private String name;
private String memberId;
private HashMap<String, Book> borrowedBooks = new HashMap<String, Book>();
public Member (String name, String memberId) {
this.name = name;
this.memberId = memberId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public boolean hasBorrowedBook(String isbn) {
return borrowedBooks.containsKey(isbn);
}
public Collection<Book> getBorrowedBooks() {
return borrowedBooks.values();
}
public void borrowBooks (Book borrowedBooks) {
this.borrowedBooks.put(borrowedBooks.getIsbn(), borrowedBooks);
}
public void returnBooks(Book borrowedBooks) {
this.borrowedBooks.remove(borrowedBooks.getIsbn());
}
}
public class Library {
private HashMap<String, Book> books = new HashMap<String, Book>();
private HashMap<String, Member> members = new HashMap<String, Member>();
public String addBooks(Book book) {
books.put(book.getIsbn(), book);
return "Book added successfully";
}
public String registerMember(Member member) {
boolean isExisting = members.containsKey(member.getMemberId());
if (isExisting) {
return "Member already existing";
}
members.put(member.getMemberId(), member);
return "Member registered successfully";
}
public String borrowBookByISBN(String memberId, String bookISBN) {
Member member = members.get(memberId);
if (member != null) {
Book book = books.get(bookISBN);
if (book != null) {
if (!book.getIsBorrowed()) {
Member borrower = members.get(memberId);
int countOfBooks = borrower.getBorrowedBooks().size();
if (countOfBooks >= 3) {
return "Cannot borrow more than three books";
}
borrower.borrowBooks(book); // add book to list of users borrowed book
book.setIsBorrowed(true); // mark book as borrowed
return "Book successfully borrowed";
} else {
return "Book taken already";
}
} else {
return "Book not in stock";
}
}
return "Not a member of the library";
}
public String returnBookByISBN (String memberId, String bookISBN) {
Member member = members.get(memberId);
if (member != null) {
if (member.hasBorrowedBook(bookISBN)) {
Book book = books.get(bookISBN);
member.returnBooks(book); //remove book from users list
book.setIsBorrowed(false); //release book
return "Book successfully returned";
} else {
return "This member did not borrow this book";
}
}
return "Not a member of the library";
}
public Collection<Book> displayBorrowedBooksByAMember(String memberId) {
Member member = members.get(memberId);
if (member == null) {
return new ArrayList<Book>();
}
return member.getBorrowedBooks();
}
public List<Book> displayAllAvailableBooks () {
List<Book> availableBooks = new ArrayList<Book>();
for (Book book: books.values()) {
if (!book.getIsBorrowed()) {
availableBooks.add(book);
}
}
return availableBooks;
}
}