Skip to content
This repository was archived by the owner on Jun 9, 2024. It is now read-only.

Commit 337b72c

Browse files
committed
GetLoans() working w/ endpoint
1 parent c584948 commit 337b72c

6 files changed

Lines changed: 285 additions & 31 deletions

File tree

.idea/sqldialects.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/Book.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import EJB.BookBean;
2+
import com.google.gson.Gson;
3+
import com.mongodb.client.FindIterable;
4+
import com.mongodb.client.MongoCursor;
5+
import jakarta.ejb.EJB;
6+
import jakarta.servlet.ServletException;
7+
import jakarta.servlet.annotation.WebServlet;
8+
import jakarta.servlet.http.HttpServlet;
9+
import jakarta.servlet.http.HttpServletRequest;
10+
import jakarta.servlet.http.HttpServletResponse;
11+
import org.bson.Document;
12+
13+
import java.io.IOException;
14+
import java.io.PrintWriter;
15+
import java.util.ArrayList;
16+
import java.util.Date;
17+
import java.util.List;
18+
19+
20+
@WebServlet(name = "Books", value = "/books")
21+
public class Book extends HttpServlet {
22+
@EJB
23+
BookBean bookBean;
24+
25+
@Override
26+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27+
response.setContentType("application/json");
28+
29+
PrintWriter out = response.getWriter();
30+
FindIterable<Document> foundBooks = bookBean.getBooks();
31+
MongoCursor<Document> cursor = foundBooks.iterator();
32+
33+
List<Objects.Book> books = new ArrayList<Objects.Book>();
34+
35+
try {
36+
while (cursor.hasNext()) {
37+
Document doc = cursor.next();
38+
39+
Objects.Book book = new Objects.Book(
40+
doc.get("_id").toString(),
41+
doc.get("Title").toString(),
42+
doc.get("Author").toString(),
43+
doc.get("ISBN").toString(),
44+
(Integer) doc.get("Pages"),
45+
(Date) doc.get("Added"),
46+
(Boolean) doc.get("OnLoan"));
47+
48+
books.add(book);
49+
}
50+
} finally {
51+
cursor.close();
52+
}
53+
54+
String booksJsonString = new Gson().toJson(books);
55+
out.print(booksJsonString);
56+
out.flush();
57+
}
58+
59+
@Override
60+
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
61+
62+
}
63+
64+
public void createCustomer(Document customer) {
65+
66+
67+
}
68+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package EJB;
2+
3+
import Objects.loanModel;
4+
import jakarta.ejb.EJB;
5+
import jakarta.ejb.Stateless;
6+
7+
import java.sql.*;
8+
import java.util.ArrayList;
9+
import java.util.Calendar;
10+
import java.util.Date;
11+
12+
@Stateless(name = "BookOracleEJB")
13+
public class BookOracleBean {
14+
@EJB
15+
OracleClientProviderBean oracleClientProviderBean;
16+
17+
public void markAsBorrowed(int bookId) {
18+
Connection con = oracleClientProviderBean.getOracleClient();
19+
String insertLoan = "UPDATE books SET on_loan = 1 WHERE book_id = ?";
20+
21+
try (PreparedStatement preparedStatement = con.prepareStatement(insertLoan)) {
22+
preparedStatement.setInt(1, bookId);
23+
preparedStatement.executeUpdate();
24+
} catch (SQLException e) {
25+
// Handle any potential exceptions here
26+
e.printStackTrace();
27+
}
28+
}
29+
30+
public void markAsReturned(int bookId) {
31+
Connection con = oracleClientProviderBean.getOracleClient();
32+
String insertLoan = "UPDATE books SET on_loan = 0 WHERE book_id = ?";
33+
34+
try (PreparedStatement preparedStatement = con.prepareStatement(insertLoan)) {
35+
preparedStatement.setInt(1, bookId);
36+
preparedStatement.executeUpdate();
37+
} catch (SQLException e) {
38+
// Handle any potential exceptions here
39+
e.printStackTrace();
40+
}
41+
}
42+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package EJB;
2+
3+
import Objects.loanModel;
4+
import jakarta.ejb.EJB;
5+
import jakarta.ejb.Stateless;
6+
7+
import java.util.Calendar;
8+
import java.util.Date;
9+
import java.util.ArrayList;
10+
import java.sql.*;
11+
12+
@Stateless(name = "LoanOracleEJB")
13+
public class LoanOracleBean {
14+
@EJB
15+
OracleClientProviderBean oracleClientProviderBean;
16+
17+
public void createLoan(loanModel loan) {
18+
Date currentDate = new Date();
19+
Calendar calendar = Calendar.getInstance();
20+
calendar.setTime(currentDate);
21+
22+
calendar.add(Calendar.DAY_OF_MONTH, 14);
23+
24+
Date dateAfterTwoWeeks = calendar.getTime();
25+
String insertLoan = "INSERT INTO loans"
26+
+ "(book_id, user_id, return_by, returned)" + "VALUES ("
27+
+ "'" + loan.getBookId() + "',"
28+
+ "'" + loan.getUserId() + "',"
29+
+ "'" + dateAfterTwoWeeks + "',"
30+
+ "0,";
31+
32+
Statement stmt = null;
33+
try {
34+
Connection con = oracleClientProviderBean.getOracleClient();
35+
stmt = con.createStatement();
36+
37+
System.out.println(insertLoan);
38+
39+
stmt.executeUpdate(insertLoan);
40+
41+
stmt.close();
42+
} catch(SQLException e) {
43+
e.printStackTrace();
44+
}
45+
}
46+
47+
public ArrayList<loanModel> getLoans() {
48+
String query = "SELECT l.LOAN_ID LOAN_ID," +
49+
"l.BOOK_ID BOOK_ID," +
50+
"l.USER_ID USER_ID," +
51+
"l.RETURN_BY RETURN_BY," +
52+
"l.RETURNED_ON RETURNED_ON," +
53+
"l.RETURNED RETURNED," +
54+
"u.FIRST_NAME FIRST_NAME," +
55+
"u.LAST_NAME LAST_NAME," +
56+
"u.EMAIL EMAIL," +
57+
"b.TITLE TITLE," +
58+
"b.ISBN ISBN," +
59+
"b.PAGES PAGES," +
60+
"a.FIRST_NAME AUTHOR_FIRST_NAME," +
61+
"a.LAST_NAME AUTHOR_LAST_NAME FROM loans l " +
62+
"INNER JOIN library_users u ON l.user_id = u.user_id " +
63+
"INNER JOIN books b ON b.book_id = l.book_id " +
64+
"INNER JOIN authors a ON b.author_id = a.author_id";
65+
ArrayList loans_list = new ArrayList();
66+
Statement stmt = null;
67+
68+
try {
69+
Connection con = oracleClientProviderBean.getOracleClient();
70+
stmt = con.createStatement();
71+
ResultSet rs = stmt.executeQuery(query);
72+
73+
while (rs.next()) {
74+
loanModel loan = new loanModel();
75+
loan.setLoanId(rs.getLong("LOAN_ID"));
76+
loan.setBookId(rs.getLong("BOOK_ID"));
77+
loan.setUserId(rs.getLong("USER_ID"));
78+
loan.setReturnBy(rs.getDate("RETURN_BY"));
79+
loan.setReturnedOn(rs.getDate("RETURNED_ON"));
80+
loan.setReturned(rs.getBoolean("RETURNED"));
81+
loan.setUserFirstName(rs.getString("FIRST_NAME"));
82+
loan.setUserLastName(rs.getString("LAST_NAME"));
83+
loan.setUserEmail(rs.getString("EMAIL"));
84+
loan.setBookTitle(rs.getString("TITLE"));
85+
loan.setBookIsbn(rs.getLong("ISBN"));
86+
loan.setAuthorFirstName(rs.getString("AUTHOR_FIRST_NAME"));
87+
loan.setAuthorLastName(rs.getString("AUTHOR_LAST_NAME"));
88+
loans_list.add(loan);
89+
}
90+
91+
stmt.close();
92+
return loans_list;
93+
} catch(SQLException e) {
94+
e.printStackTrace();
95+
}
96+
97+
return null;
98+
}
99+
}

src/main/java/Loans.java

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import EJB.LoanBean;
2-
import EJB.BookBean;
1+
import EJB.LoanOracleBean;
2+
import EJB.BookOracleBean;
3+
import Objects.loanModel;
34
import com.google.gson.Gson;
45
import com.mongodb.client.AggregateIterable;
56
import jakarta.ejb.EJB;
@@ -21,54 +22,34 @@
2122
@WebServlet(name = "Loans", value = "/loans")
2223
public class Loans extends HttpServlet {
2324
@EJB
24-
LoanBean loanBean;
25+
LoanOracleBean loanBean;
2526
@EJB
26-
BookBean bookBean;
27+
BookOracleBean bookBean;
2728

2829
@Override
2930
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3031
response.setContentType("application/json");
3132

3233
PrintWriter out = response.getWriter();
33-
AggregateIterable<Document> result = loanBean.getLoans();
34-
35-
// Iterate through the aggregateIterable and store the documents in a list
36-
List<Document> documents = new ArrayList<>();
37-
result.into(documents);
34+
ArrayList<loanModel> result = loanBean.getLoans();
3835

3936
// Convert the list of documents to a JSON array
4037
Gson gson = new Gson();
41-
String jsonArray = gson.toJson(documents);
38+
String jsonArray = gson.toJson(result);
4239

4340
out.print(jsonArray);
4441
out.flush();
4542
}
4643

4744
@Override
4845
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
49-
response.setContentType("text/html");
50-
5146
PrintWriter out = response.getWriter();
52-
out.println("Loan Created. <a href=\"http://localhost:8080/MongoDB-Library-1.0-SNAPSHOT/newloan.jsp\">Click Here</a> to go back");
53-
ObjectId userId = new ObjectId(request.getParameter("users"));
54-
ObjectId bookId = new ObjectId(request.getParameter("books"));
55-
56-
Date currentDate = new Date();
57-
Calendar calendar = Calendar.getInstance();
58-
calendar.setTime(currentDate);
59-
60-
calendar.add(Calendar.DAY_OF_MONTH, 14);
61-
62-
Date dateAfterTwoWeeks = calendar.getTime();
63-
64-
Document loan = new Document()
65-
.append("user_id", userId)
66-
.append("book_id", bookId)
67-
.append("return_by", dateAfterTwoWeeks)
68-
.append("return_date", null)
69-
.append("returned", false);
7047

48+
loanModel loan = new loanModel();
49+
out.print("Creating Loan");
50+
loan.setUserId(Integer.parseInt(request.getParameter("user_id")));
51+
loan.setBookId(Integer.parseInt(request.getParameter("user_id")));
7152
loanBean.createLoan(loan);
72-
bookBean.markAsBorrowed(request.getParameter("books"));
53+
bookBean.markAsBorrowed(Integer.parseInt(request.getParameter("books")));
7354
}
7455
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package Objects;
2+
3+
import java.io.Serializable;
4+
import java.util.Date;
5+
6+
public class loanModel implements Serializable {
7+
private long LoanId;
8+
private long BookId;
9+
private long UserId;
10+
private Date ReturnBy;
11+
private Date ReturnedOn;
12+
private boolean Returned;
13+
private String UserFirstName;
14+
private String UserLastName;
15+
private String UserEmail;
16+
private String BookTitle;
17+
private long BookIsbn;
18+
private String AuthorFirstName;
19+
private String AuthorLastName;
20+
21+
22+
23+
24+
25+
26+
27+
28+
public void setLoanId(long LoanId) { this.LoanId = LoanId; }
29+
private long getLoanId() {
30+
return LoanId;
31+
}
32+
public void setBookId(long BookId) { this.BookId = BookId; }
33+
public long getBookId() { return BookId; }
34+
public void setUserId(long UserId) { this.UserId = UserId; }
35+
public long getUserId() { return UserId; }
36+
public void setReturnBy(Date ReturnBy) { this.ReturnBy = ReturnBy; }
37+
public Date getReturnBy() { return ReturnBy; }
38+
public void setReturnedOn(Date ReturnedOn) { this.ReturnedOn = ReturnedOn; }
39+
public Date getReturnedOn() { return ReturnedOn; }
40+
public void setReturned(boolean Returned) { this.Returned = Returned; }
41+
public boolean getReturned() { return Returned; }
42+
public void setUserFirstName(String UserFirstName) { this.UserFirstName = UserFirstName; }
43+
public String getUserFirstName() { return UserFirstName; }
44+
public void setUserLastName(String UserLastName) { this.UserLastName = UserLastName; }
45+
public String getUserLastName() { return UserLastName; }
46+
public void setUserEmail(String UserEmail) { this.UserEmail = UserEmail; }
47+
public String getUserEmail() { return UserEmail; }
48+
public void setBookTitle(String BookTitle) { this.BookTitle = BookTitle; }
49+
public String getBookTitle() { return BookTitle; }
50+
public void setBookIsbn(long BookIsbn) { this.BookIsbn = BookIsbn; }
51+
public long getBookIsbn() { return BookIsbn; }
52+
public void setAuthorFirstName(String AuthorFirstName) { this.AuthorFirstName = AuthorFirstName; }
53+
public String getAuthorFirstName() { return AuthorFirstName; }
54+
public void setAuthorLastName(String AuthorLastName) { this.AuthorLastName = AuthorLastName; }
55+
public String getAuthorLastName() { return AuthorLastName; }
56+
57+
}

0 commit comments

Comments
 (0)