diff --git b/Servlet_JSP_12S14049/.classpath a/Servlet_JSP_12S14049/.classpath new file mode 100644 index 0000000..99771d3 --- /dev/null +++ a/Servlet_JSP_12S14049/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> + <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git b/Servlet_JSP_12S14049/.project a/Servlet_JSP_12S14049/.project new file mode 100644 index 0000000..451405a --- /dev/null +++ a/Servlet_JSP_12S14049/.project @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>Perpustakaan</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.jboss.tools.jst.web.kb.kbbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.jboss.tools.cdi.core.cdibuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.jboss.tools.jst.web.kb.kbnature</nature> + <nature>org.jboss.tools.cdi.core.cdinature</nature> + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + </natures> +</projectDescription> diff --git b/Servlet_JSP_12S14049/.settings/.jsdtscope a/Servlet_JSP_12S14049/.settings/.jsdtscope new file mode 100644 index 0000000..92e666d --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/.jsdtscope @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/> + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject"> + <attributes> + <attribute name="hide" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/> + <classpathentry kind="output" path=""/> +</classpath> diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs a/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..ea3a8bc --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> + <wb-module deploy-name="Perpustakaan"> + <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/> + <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> + <property name="context-root" value="Perpustakaan"/> + <property name="java-output-path" value="/Perpustakaan/bin"/> + </wb-module> +</project-modules> diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..c94023a --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<faceted-project> + <fixed facet="wst.jsdt.web"/> + <installed facet="java" version="1.7"/> + <installed facet="jst.web" version="3.1"/> + <installed facet="wst.jsdt.web" version="1.0"/> +</faceted-project> diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git b/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ a/Servlet_JSP_12S14049/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git b/Servlet_JSP_12S14049/.tern-project a/Servlet_JSP_12S14049/.tern-project new file mode 100644 index 0000000..f030bd1 --- /dev/null +++ a/Servlet_JSP_12S14049/.tern-project @@ -0,0 +1,17 @@ +{ + "plugins": { + "guess-types": { + + }, + "outline": { + + }, + "angular": { + + } + }, + "libs": [ + "ecma5", + "browser" + ] +} \ No newline at end of file diff --git b/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF a/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ a/Servlet_JSP_12S14049/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar new file mode 100644 index 0000000..60bef5c Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/mysql-connector-java-5.1.40-bin.jar differ diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar new file mode 100644 index 0000000..5f288c6 Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/servlet-api.jar differ diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar new file mode 100644 index 0000000..9176777 Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar differ diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar new file mode 100644 index 0000000..d547867 Binary files /dev/null and a/Servlet_JSP_12S14049/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar differ diff --git b/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml a/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..9fd8c44 --- /dev/null +++ a/Servlet_JSP_12S14049/WebContent/WEB-INF/web.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> + <display-name>Perpustakaan</display-name> + <welcome-file-list> + <welcome-file>index.html</welcome-file> + <welcome-file>index.htm</welcome-file> + <welcome-file>index.jsp</welcome-file> + <welcome-file>default.html</welcome-file> + <welcome-file>default.htm</welcome-file> + <welcome-file>default.jsp</welcome-file> + </welcome-file-list> +</web-app> \ No newline at end of file diff --git b/Servlet_JSP_12S14049/WebContent/buku.jsp a/Servlet_JSP_12S14049/WebContent/buku.jsp new file mode 100644 index 0000000..a8daa78 --- /dev/null +++ a/Servlet_JSP_12S14049/WebContent/buku.jsp @@ -0,0 +1,43 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<!DOCTYPE HTML> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + +<title>Add New Buku</title> +</head> +<body> + <form action="BukuController" method="post"> + <fieldset> + <div> + <label for="idBuku">ID Buku</label> <input type="text" + name="idBuku" value="<c:out value="${buku.idBuku}" />" + readonly="readonly" placeholder="ID Buku" /> + </div> + <div> + <label for="judulBuku">Judul Buku</label> <input type="text" + name="judulBuku" value="<c:out value="${buku.judulBuku}" />" + placeholder="Judul Buku" /> + </div> + <div> + <label for="pengarangBuku">Pengarang Buku</label> <input type="text" + name="pengarangBuku" value="<c:out value="${buku.pengarangBuku}" />" + placeholder="Pengarang Buku" /> + </div> + <div> + <label for="isbn">ISBN</label> <input type="text" name="isbn" + value="<c:out value="${buku.isbn}" />" placeholder="ISBN" /> + </div> + <div> + <label for="jumlah">Jumlah Halaman</label> <input type="text" name="jumlah" + value="<c:out value="${buku.jumlah}" />" placeholder="Jumlah" /> + </div> + <div> + <input type="submit" value="Submit" /> + </div> + </fieldset> + </form> +</body> +</html> \ No newline at end of file diff --git b/Servlet_JSP_12S14049/WebContent/index.jsp a/Servlet_JSP_12S14049/WebContent/index.jsp new file mode 100644 index 0000000..44b08c4 --- /dev/null +++ a/Servlet_JSP_12S14049/WebContent/index.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Perpustakaan</title> +</head> +<body> + <jsp:forward page="/BukuController?action=listBuku" /> +</body> +</html> \ No newline at end of file diff --git b/Servlet_JSP_12S14049/WebContent/listBuku.jsp a/Servlet_JSP_12S14049/WebContent/listBuku.jsp new file mode 100644 index 0000000..ef471e4 --- /dev/null +++ a/Servlet_JSP_12S14049/WebContent/listBuku.jsp @@ -0,0 +1,42 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Show All Buku</title> +</head> +<body> + <table border=1> + <thead> + <tr> + <th>ID Buku</th> + <th>Judul Buku</th> + <th>Pengarang Buku</th> + <th>ISBN</th> + <th>Jumlah</th> + <th colspan="2">Action</th> + </tr> + </thead> + <tbody> + <c:forEach items="${bukus}" var="buku"> + <tr> + <td><c:out value="${buku.idBuku}" /></td> + <td><c:out value="${buku.judulBuku}" /></td> + <td><c:out value="${buku.pengarangBuku}" /></td> + <td><c:out value="${buku.isbn}" /></td> + <td><c:out value="${buku.jumlah}" /></td> + <td><a + href="BukuController?action=edit&idBuku=<c:out value="${buku.idBuku}"/>">Edit</a></td> + <td><a + href="BukuController?action=delete&idBuku=<c:out value="${buku.idBuku}"/>">Delete</a></td> + </tr> + </c:forEach> + </tbody> + </table> + <p> + <a href="BukuController?action=insert">Add Buku</a> + </p> +</body> +</html> \ No newline at end of file diff --git b/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class a/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class new file mode 100644 index 0000000..fa52d0a Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/controller/BukuController.class differ diff --git b/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class new file mode 100644 index 0000000..3d645ce Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAO.class differ diff --git b/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class new file mode 100644 index 0000000..30af72e Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/dao/BukuDAOImplementation.class differ diff --git b/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class a/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class new file mode 100644 index 0000000..64e1606 Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/model/Buku.class differ diff --git b/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class a/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class new file mode 100644 index 0000000..0296462 Binary files /dev/null and a/Servlet_JSP_12S14049/bin/com/perpus/util/DBUtil.class differ diff --git b/Servlet_JSP_12S14049/bin/db.properties a/Servlet_JSP_12S14049/bin/db.properties new file mode 100644 index 0000000..b08943e --- /dev/null +++ a/Servlet_JSP_12S14049/bin/db.properties @@ -0,0 +1,4 @@ +driver=com.mysql.jdbc.Driver +url=jdbc:mysql://localhost:3306/perpustakaan +user=root +password= \ No newline at end of file diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class a/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class new file mode 100644 index 0000000..f4a6f51 Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/controller/BukuController.class differ diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class new file mode 100644 index 0000000..d65a501 Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAO.class differ diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class new file mode 100644 index 0000000..52a38ff Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/dao/BukuDAOImplementation.class differ diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class a/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class new file mode 100644 index 0000000..a585c7b Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/model/Buku.class differ diff --git b/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class a/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class new file mode 100644 index 0000000..297f975 Binary files /dev/null and a/Servlet_JSP_12S14049/build/classes/com/perpus/util/DBUtil.class differ diff --git b/Servlet_JSP_12S14049/build/classes/db.properties a/Servlet_JSP_12S14049/build/classes/db.properties new file mode 100644 index 0000000..b08943e --- /dev/null +++ a/Servlet_JSP_12S14049/build/classes/db.properties @@ -0,0 +1,4 @@ +driver=com.mysql.jdbc.Driver +url=jdbc:mysql://localhost:3306/perpustakaan +user=root +password= \ No newline at end of file diff --git b/Servlet_JSP_12S14049/perpustakaan.sql a/Servlet_JSP_12S14049/perpustakaan.sql new file mode 100644 index 0000000..2b6e64d --- /dev/null +++ a/Servlet_JSP_12S14049/perpustakaan.sql @@ -0,0 +1,26 @@ +/* +SQLyog - Free MySQL GUI v5.0 +Host - 5.5.5-10.1.16-MariaDB : Database - perpustakaan +********************************************************************* +Server version : 5.5.5-10.1.16-MariaDB +*/ + + +create database if not exists `perpustakaan`; + +USE `perpustakaan`; + +/*Table structure for table `buku` */ + +DROP TABLE IF EXISTS `buku`; + +CREATE TABLE `buku` ( + `idBuku` int(11) NOT NULL AUTO_INCREMENT, + `judulBuku` varchar(255) DEFAULT NULL, + `pengarangBuku` varchar(255) DEFAULT NULL, + `isbn` varchar(255) DEFAULT NULL, + `jumlah` int(100) DEFAULT NULL, + PRIMARY KEY (`idBuku`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +/*Data for the table `buku` */ diff --git b/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java a/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java new file mode 100644 index 0000000..16507e5 --- /dev/null +++ a/Servlet_JSP_12S14049/src/com/perpus/controller/BukuController.java @@ -0,0 +1,79 @@ +package com.perpus.controller; + +import java.io.IOException; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.perpus.dao.BukuDAO; +import com.perpus.dao.BukuDAOImplementation; +import com.perpus.model.Buku; + +@WebServlet("/BukuController") +public class BukuController extends HttpServlet +{ + private BukuDAO dao; + private static final long serialVersionUID = 1L; + public static final String LIST_BUKU = "/listBuku.jsp"; + public static final String INSERT_OR_EDIT = "/buku.jsp"; + + + public BukuController() { + dao = new BukuDAOImplementation(); + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + String forward = ""; + String action = request.getParameter( "action" ); + + if( action.equalsIgnoreCase( "delete" ) ) { + forward = LIST_BUKU; + int idBuku = Integer.parseInt( request.getParameter("idBuku") ); + dao.deleteBuku(idBuku); + request.setAttribute("bukus", dao.getAllBukus() ); + } + else if( action.equalsIgnoreCase( "edit" ) ) { + forward = INSERT_OR_EDIT; + int idBuku = Integer.parseInt( request.getParameter("idBuku") ); + Buku buku = dao.getBukuById(idBuku); + request.setAttribute("buku", buku); + } + else if( action.equalsIgnoreCase("insert") ) { + forward = INSERT_OR_EDIT; + } + else { + forward = LIST_BUKU; + request.setAttribute("bukus", dao.getAllBukus()); + } + RequestDispatcher view = request.getRequestDispatcher( forward ); + view.forward(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + Buku buku = new Buku(); + buku.setJudulBuku(request.getParameter("judulBuku")); + buku.setPengarangBuku(request.getParameter("pengarangBuku")); + buku.setIsbn(request.getParameter("isbn")); + buku.setJumlah(Integer.parseInt(request.getParameter("jumlah"))); + String idBuku = request.getParameter("idBuku"); + + if(idBuku == null || idBuku.isEmpty() ) + { + dao.addBuku(buku); + } + else + { + buku.setIdBuku(Integer.parseInt(idBuku)); + dao.updateBuku(buku); + } + RequestDispatcher view = request.getRequestDispatcher(LIST_BUKU); + request.setAttribute("students", dao.getAllBukus()); + response.sendRedirect("index.jsp"); + } +} diff --git b/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java new file mode 100644 index 0000000..d8fbd12 --- /dev/null +++ a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAO.java @@ -0,0 +1,14 @@ +package com.perpus.dao; + +import java.util.List; + +import com.perpus.model.Buku; + +public interface BukuDAO +{ + public void addBuku(Buku buku); + public void deleteBuku(int idBuku); + public void updateBuku(Buku buku); + public List<Buku> getAllBukus(); + public Buku getBukuById(int idBuku); +} diff --git b/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java new file mode 100644 index 0000000..e418072 --- /dev/null +++ a/Servlet_JSP_12S14049/src/com/perpus/dao/BukuDAOImplementation.java @@ -0,0 +1,132 @@ +package com.perpus.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import com.perpus.model.Buku; +import com.perpus.util.DBUtil; + +public class BukuDAOImplementation implements BukuDAO +{ + private Connection conn; + + public BukuDAOImplementation() + { + conn = DBUtil.getConnection(); + } + + @Override + public void addBuku(Buku buku) + { + try + { + String query = "insert into buku (judulBuku, pengarangBuku, isbn, jumlah) values (?,?,?,?)"; + PreparedStatement preparedStatement = conn.prepareStatement(query); + preparedStatement.setString(1, buku.getJudulBuku()); + preparedStatement.setString(2, buku.getPengarangBuku()); + preparedStatement.setString(3, buku.getIsbn()); + preparedStatement.setInt(4, buku.getJumlah()); + preparedStatement.executeUpdate(); + preparedStatement.close(); + } catch (SQLException e) + { + e.printStackTrace(); + } + } + + @Override + public void deleteBuku(int idBuku) + { + try + { + String query = "delete from buku where idBuku=?"; + PreparedStatement preparedStatement = conn.prepareStatement(query); + preparedStatement.setInt(1, idBuku); + preparedStatement.executeUpdate(); + preparedStatement.close(); + } catch (SQLException e) + { + e.printStackTrace(); + } + } + + @Override + public void updateBuku(Buku buku) + { + try + { + String query = "update buku set judulBuku=?, pengarangBuku=?, isbn=?, jumlah=? where idBuku=?"; + PreparedStatement preparedStatement = conn.prepareStatement(query); + preparedStatement.setString(1, buku.getJudulBuku()); + preparedStatement.setString(2, buku.getPengarangBuku()); + preparedStatement.setString(3, buku.getIsbn()); + preparedStatement.setInt(4, buku.getJumlah()); + preparedStatement.setInt(5, buku.getIdBuku()); + preparedStatement.executeUpdate(); + preparedStatement.close(); + } catch (SQLException e) + { + e.printStackTrace(); + } + } + + @Override + public List<Buku> getAllBukus() + { + List<Buku> bukus = new ArrayList<Buku>(); + try + { + Statement statement = conn.createStatement(); + ResultSet resultSet = statement.executeQuery("select * from buku"); + while( resultSet.next() ) + { + Buku buku = new Buku(); + buku.setIdBuku( resultSet.getInt( "idBuku" ) ); + buku.setJudulBuku( resultSet.getString( "judulBuku" ) ); + buku.setPengarangBuku( resultSet.getString( "pengarangBuku" ) ); + buku.setIsbn( resultSet.getString( "isbn" ) ); + buku.setJumlah( resultSet.getInt( "jumlah" ) ); + bukus.add(buku); + } + resultSet.close(); + statement.close(); + } catch (SQLException e) + { + e.printStackTrace(); + } + return bukus; + } + + @Override + public Buku getBukuById(int idBuku) + { + Buku buku = new Buku(); + try + { + String query = "select * from buku where idBuku=?"; + PreparedStatement preparedStatement = conn.prepareStatement(query); + preparedStatement.setInt(1, idBuku); + ResultSet resultSet = preparedStatement.executeQuery(); + while(resultSet.next()) + { + buku.setIdBuku(resultSet.getInt("idBuku")); + buku.setJudulBuku(resultSet.getString("judulBuku")); + buku.setPengarangBuku(resultSet.getString("pengarangBuku")); + buku.setIsbn(resultSet.getString("isbn")); + buku.setJumlah( resultSet.getInt("jumlah")); + } + resultSet.close(); + preparedStatement.close(); + } catch (SQLException e) + { + e.printStackTrace(); + } + return buku; + } + +} diff --git b/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java a/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java new file mode 100644 index 0000000..389c0b3 --- /dev/null +++ a/Servlet_JSP_12S14049/src/com/perpus/model/Buku.java @@ -0,0 +1,45 @@ +package com.perpus.model; + +public class Buku +{ + private int idBuku; + private String judulBuku; + private String pengarangBuku; + private String isbn; + private int jumlah; + public int getIdBuku() { + return idBuku; + } + public void setIdBuku(int idBuku) { + this.idBuku = idBuku; + } + public String getJudulBuku() { + return judulBuku; + } + public void setJudulBuku(String judulBuku) { + this.judulBuku = judulBuku; + } + public String getPengarangBuku() { + return pengarangBuku; + } + public void setPengarangBuku(String pengarangBuku) { + this.pengarangBuku = pengarangBuku; + } + public String getIsbn() { + return isbn; + } + public void setIsbn(String isbn) { + this.isbn = isbn; + } + public int getJumlah() { + return jumlah; + } + public void setJumlah(int jumlah) { + this.jumlah = jumlah; + } + @Override + public String toString() { + return "Buku [idBuku=" + idBuku + ", judulBuku=" + judulBuku + ", pengarangBuku=" + pengarangBuku + ", isbn=" + + isbn + ", jumlah=" + jumlah + "]"; + } +} diff --git b/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java a/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java new file mode 100644 index 0000000..e87fd11 --- /dev/null +++ a/Servlet_JSP_12S14049/src/com/perpus/util/DBUtil.java @@ -0,0 +1,48 @@ +package com.perpus.util; + +import java.io.IOException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + +public class DBUtil { + + private static Connection conn; + + public static Connection getConnection() { + if( conn != null ) + return conn; + + InputStream inputStream = DBUtil.class.getClassLoader().getResourceAsStream( "/db.properties" ); + Properties properties = new Properties(); + try { + properties.load( inputStream ); + String driver = properties.getProperty( "driver" ); + String url = properties.getProperty( "url" ); + String user = properties.getProperty( "user" ); + String password = properties.getProperty( "password" ); + Class.forName( driver ); + conn = DriverManager.getConnection( url, user, password ); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (SQLException e) { + e.printStackTrace(); + } + + return conn; + } + + public static void closeConnection( Connection toBeClosed ) { + if( toBeClosed == null ) + return; + try { + toBeClosed.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git b/Servlet_JSP_12S14049/src/db.properties a/Servlet_JSP_12S14049/src/db.properties new file mode 100644 index 0000000..b08943e --- /dev/null +++ a/Servlet_JSP_12S14049/src/db.properties @@ -0,0 +1,4 @@ +driver=com.mysql.jdbc.Driver +url=jdbc:mysql://localhost:3306/perpustakaan +user=root +password= \ No newline at end of file