Skip to content

Commit b236e1f

Browse files
author
Vishal M Yadav
committed
finished machine coding library management
1 parent 1f47b96 commit b236e1f

File tree

11 files changed

+546
-0
lines changed

11 files changed

+546
-0
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@
2626
<version>1.18.30</version>
2727
<scope>provided</scope>
2828
</dependency>
29+
<dependency>
30+
<groupId>org.projectlombok</groupId>
31+
<artifactId>lombok</artifactId>
32+
<version>RELEASE</version>
33+
<scope>provided</scope>
34+
</dependency>
2935
</dependencies>
3036

3137
</project>
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
package com.gatomalvado.libmgmt;
2+
3+
import java.text.ParseException;
4+
import java.text.SimpleDateFormat;
5+
import java.time.Instant;
6+
import java.util.Arrays;
7+
import java.util.Date;
8+
import java.util.List;
9+
import java.util.Scanner;
10+
11+
import com.gatomalvado.libmgmt.model.Library;
12+
import com.gatomalvado.libmgmt.model.request.BorrowBookRequest;
13+
import com.gatomalvado.libmgmt.model.request.CreateBookDetails;
14+
import com.gatomalvado.libmgmt.model.request.ReturnRequest;
15+
import com.gatomalvado.libmgmt.model.request.SearchRequest;
16+
import com.gatomalvado.libmgmt.orchestrator.LibraryManager;
17+
18+
public class Main {
19+
private static LibraryManager libraryManager;
20+
21+
public static void main(String[] args) {
22+
Scanner scanner = new Scanner(System.in);
23+
Library library = new Library();
24+
while (true) {
25+
String command = scanner.nextLine();
26+
String[] commands = command.split(" ");
27+
String commandType = commands[0];
28+
29+
switch (commandType) {
30+
case "create_library":
31+
try{
32+
handleCreateLibrary(commands);
33+
}catch(Exception e){
34+
System.out.println(e.getMessage());
35+
}
36+
continue;
37+
case "add_book":
38+
try{
39+
handleAddBook(commands);
40+
}catch(Exception e){
41+
System.out.println(e.getMessage());
42+
}
43+
continue;
44+
case "remove_book_copy":
45+
try{
46+
handleRemoveBookCopy(commands);
47+
}catch(Exception e){
48+
System.out.println(e.getMessage());
49+
}
50+
continue;
51+
case "borrow_book":
52+
try{
53+
handleBorrowBook(commands);
54+
}catch(Exception e){
55+
System.out.println(e.getMessage());
56+
}
57+
continue;
58+
case "borrow_book_copy":
59+
try{
60+
handleBorrowBookCopy(commands);
61+
}catch(Exception e){
62+
System.out.println(e.getMessage());
63+
}
64+
continue;
65+
case "print_borrowed":
66+
try{
67+
handlePrintBorrowed(commands);
68+
}catch(Exception e){
69+
System.out.println(e.getMessage());
70+
}
71+
continue;
72+
case "return_book_copy":
73+
try{
74+
handleReturnBookCopy(commands);
75+
}catch(Exception e){
76+
System.out.println(e.getMessage());
77+
}
78+
continue;
79+
case "search":
80+
try{
81+
handleSearch(commands);
82+
}catch(Exception e){
83+
System.out.println(e.getMessage());
84+
}
85+
continue;
86+
case "exit":
87+
return;
88+
default:
89+
System.out.println("Unknown command");
90+
}
91+
}
92+
}
93+
94+
private static void handleReturnBookCopy(String[] commands) {
95+
ReturnRequest returnRequest = new ReturnRequest(commands[1]);
96+
libraryManager.returnBook(returnRequest);
97+
}
98+
99+
private static void handleSearch(String[] commands) {
100+
SearchRequest searchRequest = SearchRequest.builder().param(commands[1]).value(commands[2]).build();
101+
libraryManager.search(searchRequest);
102+
}
103+
104+
private static void handlePrintBorrowed(String[] commands) {
105+
libraryManager.printBorrowed(commands[1]);
106+
}
107+
108+
private static void handleBorrowBookCopy(String[] commands) {
109+
BorrowBookRequest request = BorrowBookRequest
110+
.builder()
111+
.bookId(commands[1])
112+
.userId(commands[2])
113+
.dueDate(Date.from(Instant.parse(commands[3])))
114+
.build();
115+
libraryManager.borrowBookId(request);
116+
}
117+
118+
private static void handleBorrowBook(String[] commands) {
119+
BorrowBookRequest request = BorrowBookRequest
120+
.builder()
121+
.bookId(commands[1])
122+
.userId(commands[2])
123+
.dueDate(convertStringToDate(commands[3]))
124+
.build();
125+
libraryManager.borrowBook(request);
126+
}
127+
128+
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
129+
130+
public static Date convertStringToDate(String dateString) {
131+
try {
132+
return formatter.parse(dateString);
133+
} catch (ParseException e) {
134+
e.printStackTrace();
135+
return null; // or throw a custom exception
136+
}
137+
}
138+
139+
private static void handleRemoveBookCopy(String[] commands) {
140+
libraryManager.removeBookCopy(commands[1]);
141+
}
142+
143+
private static void handleAddBook(String[] commands) {
144+
List<String> authors = Arrays.stream(commands[3].split(",")).toList();
145+
List<String> publishers = Arrays.stream(commands[4].split(",")).toList();
146+
List<String> bookCopyIds = Arrays.stream(commands[5].split(",")).toList();
147+
CreateBookDetails createBookDetails = CreateBookDetails.builder()
148+
.bookId(commands[1])
149+
.title(commands[2])
150+
.author(authors)
151+
.publisher(publishers)
152+
.bookCopyIds(bookCopyIds)
153+
.build();
154+
libraryManager.addBookCopy(createBookDetails);
155+
}
156+
157+
private static void handleCreateLibrary(String[] commands) {
158+
libraryManager = new LibraryManager(Integer.parseInt(commands[1]));
159+
System.out.println("Created library with "+commands[1]+" racks");
160+
}
161+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.gatomalvado.libmgmt.model;
2+
3+
import java.util.List;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
10+
@Data
11+
@AllArgsConstructor
12+
@Builder
13+
@NoArgsConstructor
14+
public class Book {
15+
private String title;
16+
private List<String> author;
17+
private List<String> publisher;
18+
private String bookId;
19+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.gatomalvado.libmgmt.model;
2+
3+
import java.util.Date;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
10+
@Data
11+
@AllArgsConstructor
12+
@Builder
13+
@NoArgsConstructor
14+
public class BookCopy {
15+
private Book book;
16+
private String id;
17+
private boolean isIssued;
18+
private Date dueDate;
19+
private int rack;
20+
private String issuerId;
21+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.gatomalvado.libmgmt.model;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@AllArgsConstructor
10+
@Builder
11+
@NoArgsConstructor
12+
public class LibUser {
13+
private String name;
14+
private String userId;
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.gatomalvado.libmgmt.model;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@AllArgsConstructor
10+
@Builder
11+
@NoArgsConstructor
12+
public class Library {
13+
private int racks;
14+
15+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.gatomalvado.libmgmt.model.request;
2+
3+
import java.util.Date;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
9+
@AllArgsConstructor
10+
@Builder
11+
@Data
12+
public class BorrowBookRequest {
13+
private String bookId;
14+
private String userId;
15+
private Date dueDate;
16+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.gatomalvado.libmgmt.model.request;
2+
3+
import java.util.List;
4+
5+
import com.gatomalvado.libmgmt.model.Book;
6+
7+
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
9+
import lombok.Data;
10+
import lombok.NoArgsConstructor;
11+
12+
@Data
13+
@AllArgsConstructor
14+
@Builder
15+
@NoArgsConstructor
16+
public class CreateBookDetails {
17+
private String title;
18+
private List<String> author;
19+
private List<String> publisher;
20+
private String bookId;
21+
private List<String> bookCopyIds;
22+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.gatomalvado.libmgmt.model.request;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
6+
@Data
7+
@AllArgsConstructor
8+
public class ReturnRequest {
9+
private String bookCopyId;
10+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.gatomalvado.libmgmt.model.request;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
@Data
8+
@Builder
9+
@AllArgsConstructor
10+
public class SearchRequest {
11+
private String param;
12+
private String value;
13+
}

0 commit comments

Comments
 (0)