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..7ff26bcd 100644
Binary files a/book_store.db and b/book_store.db differ
diff --git a/pom.xml b/pom.xml
index 1a90b05e..6391e3d4 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
@@ -87,8 +96,24 @@
8080
/
+ true
-
+
+
+ de.qaware.maven
+ go-offline-maven-plugin
+ 1.1.0
+
+
+
+ org.apache.maven.surefire
+ surefire-junit4
+ 2.18.1
+ PLUGIN
+
+
+
+
@@ -117,6 +142,35 @@
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ 8080
+ /
+ 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..3dfc0966 100644
--- a/src/main/java/com/pluralsight/BookDAO.java
+++ b/src/main/java/com/pluralsight/BookDAO.java
@@ -90,36 +90,33 @@ public boolean insertBook(Book book) {
return false;
}
+
+ public void updateBook(Book book){
+ String sql = "UPDATE book SET title = ?, author = ?, price = ? WHERE id = ?";
- // 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();
- // }
- // }
+ 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());
+
+ int result = 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();
+ }
+ }
}
diff --git a/src/main/java/com/pluralsight/ControllerServlet.java b/src/main/java/com/pluralsight/ControllerServlet.java
index 08ac0cf3..2f1b11ff 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");
@@ -130,19 +114,34 @@ private void insertBook(HttpServletRequest request, HttpServletResponse response
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 book = bookDAO.getBook(id);
+
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/BookForm.jsp");
+ request.setAttribute("book", book);
+ dispatcher.forward(request, response);
+ }
+
+
+ private void updateBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ 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 deleteBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ bookDAO.deleteBook(id);
+
+ response.sendRedirect("list");
+ }
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
@@ -154,5 +153,6 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
doGet(request, 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..a70075e7 100644
--- a/src/main/webapp/BookAdmin.jsp
+++ b/src/main/webapp/BookAdmin.jsp
@@ -14,7 +14,6 @@
diff --git a/src/main/webapp/BookForm.jsp b/src/main/webapp/BookForm.jsp
index 353c2a51..c6a5647a 100644
--- a/src/main/webapp/BookForm.jsp
+++ b/src/main/webapp/BookForm.jsp
@@ -11,39 +11,35 @@
-
+
+
+
+
+
+
+
+ Edit Book Form
+
+
+ New Book Form
+
+
+
+ " />
+
+
+ "/>
+
+ "/>
+
+ "/>
+
+
+
+