From 9d25504e25a6e727d991324a2130292362b22a2a Mon Sep 17 00:00:00 2001 From: David Trombello Date: Mon, 2 Dec 2019 09:11:08 -0500 Subject: [PATCH 1/4] updated pom with dependency, database and table created --- .idea/compiler.xml | 1 + .idea/vcs.xml | 6 ++++++ pom.xml | 9 +++++++++ 3 files changed, 16 insertions(+) create mode 100644 .idea/vcs.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f006a55..9067f44 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,6 +7,7 @@ + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d97c43d..902662c 100644 --- a/pom.xml +++ b/pom.xml @@ -14,5 +14,14 @@ junit 4.10 + + + + mysql + mysql-connector-java + 8.0.18 + + + \ No newline at end of file From db5e4960a8dd1164e80a05b0f124ba8796ca1d2b Mon Sep 17 00:00:00 2001 From: David Trombello Date: Tue, 3 Dec 2019 21:15:30 -0500 Subject: [PATCH 2/4] classes created some methods created --- src/main/java/daos/ConnectToDB.java | 33 +++++++++++ src/main/java/daos/DAO.java | 28 +++++++++ src/main/java/daos/DAOConcrete.java | 62 ++++++++++++++++++++ src/main/java/daos/DELETEME.txt | 0 src/main/java/daos/DTO.java | 5 ++ src/main/java/daos/DTOConcrete.java | 7 +++ src/main/java/models/Car.java | 78 +++++++++++++++++++++++++ src/main/java/models/DELETEME.txt | 0 src/test/java/daos/ConnectToDBTest.java | 17 ++++++ src/test/java/daos/DELETEME.txt | 0 10 files changed, 230 insertions(+) create mode 100644 src/main/java/daos/ConnectToDB.java create mode 100644 src/main/java/daos/DAO.java create mode 100644 src/main/java/daos/DAOConcrete.java delete mode 100644 src/main/java/daos/DELETEME.txt create mode 100644 src/main/java/daos/DTO.java create mode 100644 src/main/java/daos/DTOConcrete.java create mode 100644 src/main/java/models/Car.java delete mode 100644 src/main/java/models/DELETEME.txt create mode 100644 src/test/java/daos/ConnectToDBTest.java delete mode 100644 src/test/java/daos/DELETEME.txt diff --git a/src/main/java/daos/ConnectToDB.java b/src/main/java/daos/ConnectToDB.java new file mode 100644 index 0000000..9d4f98e --- /dev/null +++ b/src/main/java/daos/ConnectToDB.java @@ -0,0 +1,33 @@ +package daos; + +import com.mysql.cj.jdbc.Driver; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class ConnectToDB { + public static final String URL = "jdbc:mysql://localhost:3306/DavesDB"; + public static final String USER = "root"; + public static final String PASS = "ZipCode5.2"; + +/** + * Get a connection to database + * @return Connection object + */ +public static Connection getConnection() { + try { + DriverManager.registerDriver(new Driver()); + return DriverManager.getConnection(URL, USER, PASS); + } catch (SQLException ex) { + throw new RuntimeException("Error connecting to the database", ex); + } +} + + /** + * Test Connection + */ + public static void main(String[] args) { + Connection connection = ConnectToDB.getConnection(); + } +} diff --git a/src/main/java/daos/DAO.java b/src/main/java/daos/DAO.java new file mode 100644 index 0000000..24e877d --- /dev/null +++ b/src/main/java/daos/DAO.java @@ -0,0 +1,28 @@ +package daos; + +import java.util.List; + +public interface DAO { + + public T findById(Integer id); + + public List findAll(); + + public T update (T dto); + + public T create (T dto); + + public void delete (Integer id); + + +// String simpleQuery "select * from .car" +// +// //iterate results column names match yoiur data +// parameterized query +// prepared statement connection.preparedStatement +// data grep +// +// running sql commdands thru java +// +// Extracting methods out behind the DAO +} diff --git a/src/main/java/daos/DAOConcrete.java b/src/main/java/daos/DAOConcrete.java new file mode 100644 index 0000000..5f26978 --- /dev/null +++ b/src/main/java/daos/DAOConcrete.java @@ -0,0 +1,62 @@ +package daos; + +import models.Car; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.List; + +public class DAOConcrete implements DAO { + + public T findById(Integer id) { + Connection connection = ConnectToDB.getConnection(); + + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("Select * from car where id=" + 6); + if (rs.next()){ + + return extractUserFromResultSet(rs); + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + } + + public List findAll() { + Connection connection = ConnectToDB.getConnection(); + return null; + } + + public T update(T dto) { + Connection connection = ConnectToDB.getConnection(); + return null; + } + + public T create(T dto) { + Connection connection = ConnectToDB.getConnection(); + return null; + } + + public void delete(Integer id) { + Connection connection = ConnectToDB.getConnection(); + + } + + private T extractUserFromResultSet (ResultSet rs) throws SQLException { + Car myCar = new Car(); + + myCar.setCarId(rs.getInt("carId")); + myCar.setMake((rs.getString("Make"))); + myCar.setModel((rs.getString("Model"))); + myCar.setCarId(rs.getInt("year")); + myCar.setMake((rs.getString("color"))); + myCar.setMake((rs.getString("vin"))); + + return (T) myCar; + } +} diff --git a/src/main/java/daos/DELETEME.txt b/src/main/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/daos/DTO.java b/src/main/java/daos/DTO.java new file mode 100644 index 0000000..1d4a81a --- /dev/null +++ b/src/main/java/daos/DTO.java @@ -0,0 +1,5 @@ +package daos; + +public interface DTO { + Integer getId (); +} diff --git a/src/main/java/daos/DTOConcrete.java b/src/main/java/daos/DTOConcrete.java new file mode 100644 index 0000000..f1bf93d --- /dev/null +++ b/src/main/java/daos/DTOConcrete.java @@ -0,0 +1,7 @@ +package daos; + +public class DTOConcrete implements DTO{ + public Integer getId() { + return null; + } +} diff --git a/src/main/java/models/Car.java b/src/main/java/models/Car.java new file mode 100644 index 0000000..ef24b88 --- /dev/null +++ b/src/main/java/models/Car.java @@ -0,0 +1,78 @@ +package models; + +public class Car { + Integer carId; + String make; + String model; + Integer year; + String color; + String vin; + + public Car() { + } + + public Car(String make, String model, Integer year, String color, String vin) { + this.make = make; + this.model = model; + this.year = year; + this.color = color; + this.vin = vin; + } + + public Car(Integer carId, String make, String model, Integer year, String color, String vin) { + this.carId = carId; + this.make = make; + this.model = model; + this.year = year; + this.color = color; + this.vin = vin; + } + + public Integer getCarId() { + return carId; + } + + public void setCarId(Integer carId) { + this.carId = carId; + } + + public String getMake() { + return make; + } + + public void setMake(String make) { + this.make = make; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getVin() { + return vin; + } + + public void setVin(String vin) { + this.vin = vin; + } +} diff --git a/src/main/java/models/DELETEME.txt b/src/main/java/models/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/daos/ConnectToDBTest.java b/src/test/java/daos/ConnectToDBTest.java new file mode 100644 index 0000000..00af3ff --- /dev/null +++ b/src/test/java/daos/ConnectToDBTest.java @@ -0,0 +1,17 @@ +package daos; + +import org.junit.Assert; +import org.junit.Test; + +import java.sql.Connection; +import java.sql.SQLException; + +public class ConnectToDBTest { + + + @Test + public void getConnection() throws SQLException { + Connection connect = ConnectToDB.getConnection(); + Assert.assertFalse(connect.isClosed()); + } +} diff --git a/src/test/java/daos/DELETEME.txt b/src/test/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 From 80622844f5f9711539ff0091de18962170feb51c Mon Sep 17 00:00:00 2001 From: David Trombello Date: Wed, 4 Dec 2019 23:26:55 -0500 Subject: [PATCH 3/4] All tests created and pass except update --- .../{models/Car.java => daos/CarDTO.java} | 31 +++-- src/main/java/daos/DAO.java | 23 +--- src/main/java/daos/DAOConcrete.java | 106 +++++++++++++----- src/main/java/daos/DTOConcrete.java | 7 -- src/test/java/daos/CarDTOTest.java | 57 ++++++++++ 5 files changed, 164 insertions(+), 60 deletions(-) rename src/main/java/{models/Car.java => daos/CarDTO.java} (62%) delete mode 100644 src/main/java/daos/DTOConcrete.java create mode 100644 src/test/java/daos/CarDTOTest.java diff --git a/src/main/java/models/Car.java b/src/main/java/daos/CarDTO.java similarity index 62% rename from src/main/java/models/Car.java rename to src/main/java/daos/CarDTO.java index ef24b88..c96ed17 100644 --- a/src/main/java/models/Car.java +++ b/src/main/java/daos/CarDTO.java @@ -1,6 +1,6 @@ -package models; +package daos; -public class Car { +public class CarDTO implements DTO { Integer carId; String make; String model; @@ -8,18 +8,18 @@ public class Car { String color; String vin; - public Car() { + public CarDTO() { } - public Car(String make, String model, Integer year, String color, String vin) { - this.make = make; - this.model = model; - this.year = year; - this.color = color; - this.vin = vin; - } +// public CarDTO(String make, String model, Integer year, String color, String vin) { +// this.make = make; +// this.model = model; +// this.year = year; +// this.color = color; +// this.vin = vin; +// } - public Car(Integer carId, String make, String model, Integer year, String color, String vin) { + public CarDTO(Integer carId, String make, String model, Integer year, String color, String vin) { this.carId = carId; this.make = make; this.model = model; @@ -75,4 +75,13 @@ public String getVin() { public void setVin(String vin) { this.vin = vin; } + + public Integer getId() { + return null; + } + + @Override + public String toString() { + return String.format("Car ID: %d, Make: %s, Model: %s, Year: %d, Color: %s, VIN: %s", carId, make, model, year, color, vin); + } } diff --git a/src/main/java/daos/DAO.java b/src/main/java/daos/DAO.java index 24e877d..ef27f99 100644 --- a/src/main/java/daos/DAO.java +++ b/src/main/java/daos/DAO.java @@ -2,27 +2,16 @@ import java.util.List; -public interface DAO { +public interface DAO { - public T findById(Integer id); + T findById(Integer id); - public List findAll(); + List findAll(); - public T update (T dto); + String update (T dto, Integer id); - public T create (T dto); + String create (T dto); - public void delete (Integer id); + Boolean delete (Integer id); - -// String simpleQuery "select * from .car" -// -// //iterate results column names match yoiur data -// parameterized query -// prepared statement connection.preparedStatement -// data grep -// -// running sql commdands thru java -// -// Extracting methods out behind the DAO } diff --git a/src/main/java/daos/DAOConcrete.java b/src/main/java/daos/DAOConcrete.java index 5f26978..b26d350 100644 --- a/src/main/java/daos/DAOConcrete.java +++ b/src/main/java/daos/DAOConcrete.java @@ -1,62 +1,118 @@ package daos; -import models.Car; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; +import java.util.ArrayList; import java.util.List; -public class DAOConcrete implements DAO { +public class DAOConcrete implements DAO { //This class does CRUD operations - public T findById(Integer id) { + public CarDTO findById(Integer id) { Connection connection = ConnectToDB.getConnection(); try { Statement stmt = connection.createStatement(); - ResultSet rs = stmt.executeQuery("Select * from car where id=" + 6); + ResultSet rs = stmt.executeQuery("Select * from car where carid=" + id); if (rs.next()){ - return extractUserFromResultSet(rs); } } catch (SQLException e) { e.printStackTrace(); } - return null; } public List findAll() { Connection connection = ConnectToDB.getConnection(); + + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("Select * from car"); + List carsList = new ArrayList(); + + while (rs.next()){ + + CarDTO car = extractUserFromResultSet(rs); + carsList.add(car); + } + return carsList; + } catch (SQLException e) { + e.printStackTrace(); + } return null; } - public T update(T dto) { + public String update(CarDTO dto, Integer id) { Connection connection = ConnectToDB.getConnection(); - return null; + + try { + PreparedStatement ps = connection.prepareStatement("update car set carid=?, make=?, model=?, yearbuilt=?, color =?, vin=? where id=" + id); + ps.setInt(1, dto.getId()); + ps.setString(2, dto.getMake()); + ps.setString(3, dto.getModel()); + ps.setInt(4, dto.getYear()); + ps.setString(5, dto.getColor()); + ps.setString(6, dto.getVin()); + int i = ps.executeUpdate(); + + if (i == 1) { + return dto.toString(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return ""; } - public T create(T dto) { + public String create (CarDTO dto) { Connection connection = ConnectToDB.getConnection(); - return null; + + try { + PreparedStatement ps = connection.prepareStatement("Insert into car values(?, ?, ?, ?, ?, ?)"); + ps.setInt(1, dto.getCarId()); + ps.setString(2, dto.getMake()); + ps.setString(3, dto.getModel()); + ps.setInt(4, dto.getYear()); + ps.setString(5, dto.getColor()); + ps.setString(6, dto.getVin()); + int i = ps.executeUpdate(); + + if (i == 1) { + return dto.toString(); + //return dto; + } + + } catch (SQLException e) { + e.printStackTrace(); + } + return ""; } - public void delete(Integer id) { + public Boolean delete(Integer id) { Connection connection = ConnectToDB.getConnection(); + try{ + Statement stmt = connection.createStatement(); + int i = stmt.executeUpdate(("delete from car where carid=" + id)); + + if(i >= 1) { + return true; + } + } catch (SQLException e) { + e.printStackTrace(); + } + return false; } - private T extractUserFromResultSet (ResultSet rs) throws SQLException { - Car myCar = new Car(); + private CarDTO extractUserFromResultSet (ResultSet rs) throws SQLException { + CarDTO myCar = new CarDTO(); - myCar.setCarId(rs.getInt("carId")); - myCar.setMake((rs.getString("Make"))); - myCar.setModel((rs.getString("Model"))); - myCar.setCarId(rs.getInt("year")); - myCar.setMake((rs.getString("color"))); - myCar.setMake((rs.getString("vin"))); + myCar.setCarId(rs.getInt("carid")); + myCar.setMake((rs.getString("make"))); + myCar.setModel((rs.getString("model"))); + myCar.setYear(rs.getInt("yearbuilt")); + myCar.setColor((rs.getString("color"))); + myCar.setVin((rs.getString("vin"))); - return (T) myCar; + return myCar; } } diff --git a/src/main/java/daos/DTOConcrete.java b/src/main/java/daos/DTOConcrete.java deleted file mode 100644 index f1bf93d..0000000 --- a/src/main/java/daos/DTOConcrete.java +++ /dev/null @@ -1,7 +0,0 @@ -package daos; - -public class DTOConcrete implements DTO{ - public Integer getId() { - return null; - } -} diff --git a/src/test/java/daos/CarDTOTest.java b/src/test/java/daos/CarDTOTest.java new file mode 100644 index 0000000..0d7446d --- /dev/null +++ b/src/test/java/daos/CarDTOTest.java @@ -0,0 +1,57 @@ +package daos; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class CarDTOTest { + DAOConcrete daoConcrete; + CarDTO car1, car2, car3; + + @Before + public void setUp() throws Exception { + daoConcrete = new DAOConcrete(); + car1 = new CarDTO(6, "Oldsmobile", "Cutlass",1987, "Black", "1987OC"); + car2 = new CarDTO(5, "Pontiac", "Firebird", 1981, "Yellow", "1981PF"); + car3 = new CarDTO(2, "Pontiac", "Lemans", 1969, "Gold", "1969PL"); + } + + @Test + public void testFindById () { + String expected = "Car ID: 6, Make: Oldsmobile, Model: Cutlass, Year: 1987, Color: Black, VIN: 1987OC"; + String actual = daoConcrete.findById(6).toString(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testFindAll () { + Integer expected = 6; + Integer actual = daoConcrete.findAll().size(); + Assert.assertEquals(expected, actual); + } + + + @Test + public void testCreate () { + String expected = "Car ID: 7, Make: Toyota, Model: Echo, Year: 2001, Color: Green, VIN: 2001TE"; + CarDTO carToCreate = new CarDTO(7, "Toyota", "Echo", 2001, "Green", "2001TE"); + String actual = daoConcrete.create(carToCreate); + Assert.assertEquals(expected, actual); + } + + @Test + public void testUpdate () { + String expected = "Car ID: 7, Make: Toyota, Model: Echo, Year: 2001, Color: Green Patina, VIN: 2001TE"; + CarDTO carToModify = new CarDTO(7, "Toyota", "Echo", 2001, "Green", "2001TE"); + String actual = daoConcrete.update(carToModify, 7); + Assert.assertEquals(expected, actual); + } + + @Test + public void testDelete () { + Boolean expected = true; + Boolean actual = daoConcrete.delete(7); + Assert.assertEquals(expected, actual); + } + +} From 29c8804a9d003aab427f4ab7bf2209e34768d561 Mon Sep 17 00:00:00 2001 From: David Trombello Date: Thu, 5 Dec 2019 11:45:52 -0500 Subject: [PATCH 4/4] last test and method working --- src/main/java/daos/CarDTO.java | 14 +++++++------- src/main/java/daos/DAO.java | 2 +- src/main/java/daos/DAOConcrete.java | 17 +++++++++-------- src/test/java/daos/CarDTOTest.java | 4 ++-- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/main/java/daos/CarDTO.java b/src/main/java/daos/CarDTO.java index c96ed17..eed69aa 100644 --- a/src/main/java/daos/CarDTO.java +++ b/src/main/java/daos/CarDTO.java @@ -11,13 +11,13 @@ public class CarDTO implements DTO { public CarDTO() { } -// public CarDTO(String make, String model, Integer year, String color, String vin) { -// this.make = make; -// this.model = model; -// this.year = year; -// this.color = color; -// this.vin = vin; -// } + public CarDTO(String make, String model, Integer year, String color, String vin) { + this.make = make; + this.model = model; + this.year = year; + this.color = color; + this.vin = vin; + } public CarDTO(Integer carId, String make, String model, Integer year, String color, String vin) { this.carId = carId; diff --git a/src/main/java/daos/DAO.java b/src/main/java/daos/DAO.java index ef27f99..eb2a426 100644 --- a/src/main/java/daos/DAO.java +++ b/src/main/java/daos/DAO.java @@ -8,7 +8,7 @@ public interface DAO { List findAll(); - String update (T dto, Integer id); + String update (T dto); String create (T dto); diff --git a/src/main/java/daos/DAOConcrete.java b/src/main/java/daos/DAOConcrete.java index b26d350..a657596 100644 --- a/src/main/java/daos/DAOConcrete.java +++ b/src/main/java/daos/DAOConcrete.java @@ -41,17 +41,18 @@ public List findAll() { return null; } - public String update(CarDTO dto, Integer id) { + public String update(CarDTO dto) { Connection connection = ConnectToDB.getConnection(); try { - PreparedStatement ps = connection.prepareStatement("update car set carid=?, make=?, model=?, yearbuilt=?, color =?, vin=? where id=" + id); - ps.setInt(1, dto.getId()); - ps.setString(2, dto.getMake()); - ps.setString(3, dto.getModel()); - ps.setInt(4, dto.getYear()); - ps.setString(5, dto.getColor()); - ps.setString(6, dto.getVin()); + PreparedStatement ps = connection.prepareStatement("update car set make=?, model=?, yearbuilt=?, color =?, vin=? where carid=?"); + + ps.setString(1, dto.getMake()); + ps.setString(2, dto.getModel()); + ps.setInt(3, dto.getYear()); + ps.setString(4, dto.getColor()); + ps.setString(5, dto.getVin()); + ps.setInt(6, dto.getCarId()); int i = ps.executeUpdate(); if (i == 1) { diff --git a/src/test/java/daos/CarDTOTest.java b/src/test/java/daos/CarDTOTest.java index 0d7446d..1d068af 100644 --- a/src/test/java/daos/CarDTOTest.java +++ b/src/test/java/daos/CarDTOTest.java @@ -42,8 +42,8 @@ public void testCreate () { @Test public void testUpdate () { String expected = "Car ID: 7, Make: Toyota, Model: Echo, Year: 2001, Color: Green Patina, VIN: 2001TE"; - CarDTO carToModify = new CarDTO(7, "Toyota", "Echo", 2001, "Green", "2001TE"); - String actual = daoConcrete.update(carToModify, 7); + CarDTO carToModify = new CarDTO(7, "Toyota", "Echo", 2001, "Green Patina", "2001TE"); + String actual = daoConcrete.update(carToModify); Assert.assertEquals(expected, actual); }