diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..fbf9358b
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,14 @@
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text=auto
+
+# Explicitly declare text files you want to always be normalized and converted
+# to native line endings on checkout.
+*.c text
+*.h text
+
+# Declare files that will always have CRLF line endings on checkout.
+*.sln text eol=crlf
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary
+*.jpg binary
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..65ec9fd9
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,22 @@
+FROM maven:3.6-jdk-8-slim
+
+WORKDIR /src/app/
+
+COPY ./pom.xml .
+
+RUN ["mkdir", "/home/projects"]
+
+RUN groupadd projects && useradd -g projects projects && \
+ chown -R projects:projects /src/app && \
+ chown -R projects:projects /home/projects
+
+USER projects
+
+RUN ["mvn", "clean"]
+
+RUN ["mvn", "de.qaware.maven:go-offline-maven-plugin:resolve-dependencies", "-P", "integration"]
+
+COPY . .
+
+ENTRYPOINT ["sh"]
+
diff --git a/book_store.db b/book_store.db
index 4a86d6e6..5c6b076b 100644
Binary files a/book_store.db and b/book_store.db differ
diff --git a/pom.xml b/pom.xml
index 1a90b05e..c38205a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,6 +23,15 @@
3.1.0
provided
+
+
+ javax.servlet.jsp
+ javax.servlet.jsp-api
+ 2.3.1
+ provided
+
+
+
javax.servlet
@@ -85,10 +94,26 @@
tomcat7-maven-plugin
2.2
- 8080
+ 8087
/
+ true
-
+
+
+ de.qaware.maven
+ go-offline-maven-plugin
+ 1.1.0
+
+
+
+ org.apache.maven.surefire
+ surefire-junit4
+ 2.18.1
+ PLUGIN
+
+
+
+
@@ -111,12 +136,41 @@
- http://localhost:8080
+ http://localhost:8087
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ 8087
+ /
+ true
+
+
+
+ start-tomcat
+ pre-integration-test
+
+ run
+
+
+ true
+
+
+
+ stop-tomcat
+ post-integration-test
+
+ shutdown
+
+
+
+
diff --git a/projects-cli.json b/projects-cli.json
new file mode 100644
index 00000000..80d77fa6
--- /dev/null
+++ b/projects-cli.json
@@ -0,0 +1 @@
+{ "tagPattern": "_\\w+" }
diff --git a/src/main/java/com/pluralsight/BookDAO.java b/src/main/java/com/pluralsight/BookDAO.java
index 262e495e..d44fcec4 100644
--- a/src/main/java/com/pluralsight/BookDAO.java
+++ b/src/main/java/com/pluralsight/BookDAO.java
@@ -90,36 +90,34 @@ public boolean insertBook(Book book) {
return false;
}
-
- // public void deleteBook(int id) {
- // String sql = "DELETE FROM book WHERE id = ?";
- //
- // try {
- // PreparedStatement statement = jdbcConnection.prepareStatement(sql);
- // statement.setInt(1, id);
- // statement.executeUpdate();
- //
- // statement.close();
- // } catch (SQLException e) {
- // e.printStackTrace();
- // }
- // }
- //
- // public void updateBook(Book book) {
- // String sql = "UPDATE book SET title = ?, author = ?, price = ?" +
- // " WHERE id = ?";
- //
- // try {
- // PreparedStatement statement = jdbcConnection.prepareStatement(sql);
- // statement.setString(1, book.getTitle());
- // statement.setString(2, book.getAuthor());
- // statement.setFloat(3, book.getPrice());
- // statement.setInt(4, book.getId());
- //
- // statement.executeUpdate();
- // statement.close();
- // } catch(SQLException e) {
- // e.printStackTrace();
- // }
- // }
+
+ public void deleteBook(int id) {
+ String sql = "DELETE FROM book WHERE id = ?";
+ try {
+ PreparedStatement statement = jdbcConnection.prepareStatement(sql);
+ statement.setInt(1, id);
+
+ statement.executeUpdate();
+ statement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void updateBook(Book book) {
+ String sql = "UPDATE book SET title = ?, author = ?, price = ? WHERE id = ?";
+ try {
+ PreparedStatement statement = jdbcConnection.prepareStatement(sql);
+ statement.setString(1, book.getTitle());
+ statement.setString(2, book.getAuthor());
+ statement.setFloat(3, book.getPrice());
+ statement.setInt(4, book.getId());
+
+ statement.executeUpdate();
+ statement.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/src/main/java/com/pluralsight/ControllerServlet.java b/src/main/java/com/pluralsight/ControllerServlet.java
index 08ac0cf3..995c408c 100644
--- a/src/main/java/com/pluralsight/ControllerServlet.java
+++ b/src/main/java/com/pluralsight/ControllerServlet.java
@@ -44,7 +44,7 @@ public ControllerServlet() {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getPathInfo();
@@ -59,15 +59,15 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
case "/insert":
insertBook(request, response);
break;
- // case "/edit":
- // showEditForm(request, response);
- // break;
- // case "/delete":
- // deleteBook(request, response);
- // break;
- // case "/update":
- // updateBook(request, response);
- // break;
+ case "/delete":
+ deleteBook(request, response);
+ break;
+ case "/edit":
+ showEditForm(request, response);
+ break;
+ case "/update":
+ updateBook(request, response);
+ break;
default:
listBooks(request, response);
break;
@@ -102,22 +102,6 @@ private void showNewForm(HttpServletRequest request, HttpServletResponse respons
dispatcher.forward(request, response);
}
- // private void showEditForm(HttpServletRequest request, HttpServletResponse response)
- // throws ServletException, IOException {
- // int id = Integer.parseInt(request.getParameter("id"));
- // Book existingBook = bookDAO.getBook(id);
- // RequestDispatcher dispatcher = request.getRequestDispatcher("/BookForm.jsp");
- // request.setAttribute("book", existingBook);
- // dispatcher.forward(request, response);
- // }
-
- // private void deleteBook(HttpServletRequest request, HttpServletResponse response)
- // throws ServletException, IOException {
- // int id = Integer.parseInt(request.getParameter("id"));
- // bookDAO.deleteBook(id);
- // response.sendRedirect("list");
- // }
-
private void insertBook(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
String title = request.getParameter("booktitle");
@@ -129,21 +113,32 @@ private void insertBook(HttpServletRequest request, HttpServletResponse response
bookDAO.insertBook(newBook);
response.sendRedirect("list");
}
+ private void deleteBook(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ bookDAO.deleteBook(id);
+ response.sendRedirect("list");
+ }
- // private void updateBook(HttpServletRequest request, HttpServletResponse response)
- // throws ServletException, IOException, ClassNotFoundException, SQLException {
- // String idStr = request.getParameter("id");
- // int id = Integer.parseInt(idStr);
- // String title = request.getParameter("booktitle");
- // String author = request.getParameter("bookauthor");
- // String priceString = request.getParameter("bookprice");
- //
- // Book newBook = new Book(id, title, author, Float.parseFloat(priceString));
- //
- // bookDAO.updateBook(newBook);
- // response.sendRedirect("list");
- // }
-
+ private void showEditForm(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ Book editedBook = bookDAO.getBook(id);
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/BookForm.jsp");
+ request.setAttribute("book", editedBook);
+ dispatcher.forward(request, response);
+ }
+
+ private void updateBook(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ String bookTitle = request.getParameter("booktitle");
+ String bookAuthor = request.getParameter("bookauthor");
+ float bookPrice = Float.parseFloat(request.getParameter("bookprice"));
+ Book updatedBook = new Book(id,bookTitle,bookAuthor,bookPrice);
+ bookDAO.updateBook(updatedBook);
+ response.sendRedirect("list");
+ }
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
diff --git a/src/main/java/com/pluralsight/LoginServlet.java b/src/main/java/com/pluralsight/LoginServlet.java
deleted file mode 100644
index ec7ca71d..00000000
--- a/src/main/java/com/pluralsight/LoginServlet.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.pluralsight;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Servlet implementation class LoginServlet
- */
-public class LoginServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
-
- /**
- * @see HttpServlet#HttpServlet()
- */
- public LoginServlet() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- response.getWriter().append("Served at: ").append(request.getContextPath());
- }
-
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // Get parameters
- String username = request.getParameter("username");
- String password = request.getParameter("password");
-
- PrintWriter writer = response.getWriter();
- writer.println("username = " + username + ", password = " + password);
- }
-
-}
diff --git a/src/main/java/com/pluralsight/NameHandler.java b/src/main/java/com/pluralsight/NameHandler.java
deleted file mode 100644
index b0f08951..00000000
--- a/src/main/java/com/pluralsight/NameHandler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.pluralsight;
-
-public class NameHandler {
-
- private String name;
-
- /** Creates a new instance of NameHandler */
- public NameHandler() {
- name = null;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
-
-
-}
diff --git a/src/main/webapp/BookAdmin.jsp b/src/main/webapp/BookAdmin.jsp
index 9e9c25da..db1db2ac 100644
--- a/src/main/webapp/BookAdmin.jsp
+++ b/src/main/webapp/BookAdmin.jsp
@@ -14,7 +14,6 @@
@@ -25,7 +24,6 @@
Title |
Author |
Price |
-
In Stock |
Add Book |
@@ -34,11 +32,8 @@
${ item.getTitle() } |
${ item.getAuthor() } |
|
-
10 |
-
Edit
- Delete |
- <%--
Edit
- Delete | --%>
+
" >Edit
+ " >Delete |
diff --git a/src/main/webapp/BookForm.jsp b/src/main/webapp/BookForm.jsp
index 353c2a51..8e8e09b5 100644
--- a/src/main/webapp/BookForm.jsp
+++ b/src/main/webapp/BookForm.jsp
@@ -11,38 +11,35 @@
-
-
-
-
-
- List of Books
-
- | Title |
- Author |
- Price |
- In Stock |
- Add Book |
-
-
-
-
- | ${ item.getTitle() } |
- ${ item.getAuthor() } |
- |
- 10 |
- Edit Delete |
-
-
-
-
-
-
diff --git a/src/main/webapp/BookList.jsp b/src/main/webapp/BookList.jsp
index ad0950cb..ac40509a 100644
--- a/src/main/webapp/BookList.jsp
+++ b/src/main/webapp/BookList.jsp
@@ -14,7 +14,6 @@
diff --git a/src/main/webapp/ShoppingCart.jsp b/src/main/webapp/ShoppingCart.jsp
deleted file mode 100644
index fab13b4b..00000000
--- a/src/main/webapp/ShoppingCart.jsp
+++ /dev/null
@@ -1,45 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
-<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
-<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
-
-
-