diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f006a55..5a76f28 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,6 +6,7 @@ + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file 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/jdbc-dao.iml b/jdbc-dao.iml index 78b2cc5..cc83370 100644 --- a/jdbc-dao.iml +++ b/jdbc-dao.iml @@ -1,2 +1,3 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d97c43d..4929175 100644 --- a/pom.xml +++ b/pom.xml @@ -8,11 +8,23 @@ jdbcdao 1.0-SNAPSHOT + + 1.8 + 1.8 + + junit junit 4.10 + + mysql + mysql-connector-java + 8.0.25 + + + \ No newline at end of file diff --git a/src/main/java/MainExecutor.java b/src/main/java/MainExecutor.java new file mode 100644 index 0000000..69321a1 --- /dev/null +++ b/src/main/java/MainExecutor.java @@ -0,0 +1,70 @@ +import daos.CarDao; +import models.Car; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.List; + +public class MainExecutor { + + public static final String URL = "jdbc:mysql://localhost:3306/zipcode"; + public static final String USER = "keer"; + public static final String PASS = "keer123"; + + public static void main(String[] args) { + +// try { +// Class.forName("com.mysql.jdbc.driver"); +// } +// catch (ClassNotFoundException e) { +// e.printStackTrace(); +// } + //TRY RESOURCE METHOD + try (Connection connection = DriverManager.getConnection(URL, USER, PASS)){ + + CarDao carDao = new CarDao(connection); + + List cars = carDao.findAll(); + int noOfCars = cars.size(); + System.out.println("No of Cars available in database: " + noOfCars); + cars.forEach(System.out::println); + + Car foundCar = carDao.findById(cars.get(1).getId()); + System.out.println("Find Car by ID : " + cars.get(1).getId() + " => Model: " + foundCar.getMake() + " Make: " + foundCar.getModel() + " VIN: " + foundCar.getVin()); + + Car newCar = getCar(++noOfCars, "Audi", "R8", 2020, "yellow", 154323456); + Car createdCar = carDao.create(newCar); + System.out.println("New Car created ID : " + createdCar.getId() + " => Model: " + createdCar.getMake() + " Make: " + createdCar.getModel() + " VIN: " + createdCar.getVin()); + + foundCar.setVin(foundCar.getVin()+100); + Car updatedCar = carDao.update(foundCar); + System.out.println("Updated Car ID : " + updatedCar.getId() + " => Model: " + updatedCar.getMake() + " Make: " + updatedCar.getModel() + " VIN: " + updatedCar.getVin()); + + List carsBeforeDelete = carDao.findAll(); + int noOfCarsBeforeDelete = carsBeforeDelete.size(); + System.out.println("No of Cars available before delete operation: " + noOfCarsBeforeDelete); + + carDao.delete(noOfCars); + System.out.println("Successfully deleted car. ID: " + noOfCars); + + List carsAfterDelete = carDao.findAll(); + int noOfCarsAfterDelete = carsAfterDelete.size(); + System.out.println("No of Cars available after delete operation: " + noOfCarsAfterDelete); + + } catch (SQLException ex) { + throw new RuntimeException("Error connecting to the database", ex); + } + } + + public static Car getCar(int id, String make, String model, int year, String color, long vin) { + Car car = new Car(); + car.setId(id); + car.setModel(model); + car.setMake(make); + car.setYear(year); + car.setColor(color); + car.setVin(vin); + return car; + } +} diff --git a/src/main/java/daos/BaseDao.java b/src/main/java/daos/BaseDao.java new file mode 100644 index 0000000..4a04cc7 --- /dev/null +++ b/src/main/java/daos/BaseDao.java @@ -0,0 +1,12 @@ +package daos; + +import java.util.List; + +public abstract class BaseDao { + + public abstract T findById(int id); + public abstract List findAll(); + public abstract T update(T dto); + public abstract T create(T dto); + public abstract void delete(int id); +} diff --git a/src/main/java/daos/CarDao.java b/src/main/java/daos/CarDao.java new file mode 100644 index 0000000..9b18786 --- /dev/null +++ b/src/main/java/daos/CarDao.java @@ -0,0 +1,144 @@ +package daos; + +import models.Car; +import models.Car; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class CarDao extends BaseDao { + + private Connection connection; + + public CarDao(Connection connection) { + this.connection = connection; + } + + /** + * This method is used to find Car by id + * @param id + * @return Car + */ + public Car findById(int id) { + + Car car = null; + try (PreparedStatement ps = connection.prepareStatement("Select id,make,model,year,color,vin from Car where id = ?")) { + + ps.setInt(1, id); + + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + + car = new Car(); + car.setId(rs.getInt(1)); + car.setMake(rs.getString(2)); + car.setModel(rs.getString(3)); + car.setYear(rs.getInt(4)); + car.setColor(rs.getString(5)); + car.setVin(rs.getLong(6)); + } + + } catch (SQLException sqlException) { + sqlException.printStackTrace(); + } + return car; + } + + /** + * + * @return + */ + public List findAll() { + List carList = new ArrayList<>(); + try (PreparedStatement ps = connection.prepareStatement("Select id,make,model,year,color,vin from Car order by id")) { + + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + + Car car = new Car(); + car.setId(rs.getInt(1)); + car.setMake(rs.getString(2)); + car.setModel(rs.getString(3)); + car.setYear(rs.getInt(4)); + car.setColor(rs.getString(5)); + car.setVin(rs.getLong(6)); + carList.add(car); + } + } catch (SQLException sqlException) { + sqlException.printStackTrace(); + } + return carList; + } + + /** + * + * @param car + * @return + */ + public Car update(Car car) { + + try (PreparedStatement ps = connection.prepareStatement("update car set make=?,model=?,year=?,color=?,vin=? where id =?")) { + + ps.setString(1, car.getMake()); + ps.setString(2, car.getModel()); + ps.setInt(3, car.getYear()); + ps.setString(4, car.getColor()); + ps.setLong(5, car.getVin()); + ps.setInt(6, car.getId()); + + boolean status = ps.execute(); + if (status) { + System.out.println("Successfully Updated Car Data"); + } + } catch (SQLException sqlException) { + sqlException.printStackTrace(); + } + return car; + } + + /** + * + * @param car + * @return + */ + public Car create(Car car) { + + try (PreparedStatement ps = connection.prepareStatement("insert into Car(id,make,model,year,color,vin) values(?,?,?,?,?,?)")) { + + + ps.setInt(1, car.getId()); + ps.setString(2, car.getMake()); + ps.setString(3, car.getModel()); + ps.setInt(4, car.getYear()); + ps.setString(5, car.getColor()); + ps.setLong(6, car.getVin()); + + boolean status = ps.execute(); + if (status) { + System.out.println("Successfully Inserted Car Data"); + } + } catch (SQLException sqlException) { + sqlException.printStackTrace(); + } + return car; + } + + /** + * + * @param id + */ + public void delete(int id) { + try (PreparedStatement ps = connection.prepareStatement("delete from car where id = ?")) { + + ps.setInt(1, id); + + boolean status = ps.execute(); + if (status) { + System.out.println("Successfully Delete Car Data"); + } + } catch (SQLException sqlException) { + sqlException.printStackTrace(); + } + } +} diff --git a/src/main/java/models/BaseModel.java b/src/main/java/models/BaseModel.java new file mode 100644 index 0000000..7e20643 --- /dev/null +++ b/src/main/java/models/BaseModel.java @@ -0,0 +1,6 @@ +package models; + +public interface BaseModel { + + int getId(); +} diff --git a/src/main/java/models/Car.java b/src/main/java/models/Car.java new file mode 100644 index 0000000..1efe2d3 --- /dev/null +++ b/src/main/java/models/Car.java @@ -0,0 +1,65 @@ +package models; + +public class Car implements BaseModel { + + int id; + String make; + String model; + String color; + int year; + long vin; + + @Override + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + 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 String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + + public long getVin() { + return vin; + } + + public void setVin(long vin) { + this.vin = vin; + } + + @Override + public String toString() { + return String.format("Car {id: %s, make: %s, model: %s, year: %s, color: %s, vin: %s}", id, make, model, year, color, vin); + } +} diff --git a/target/classes/MainExecutor.class b/target/classes/MainExecutor.class new file mode 100644 index 0000000..2c218ad Binary files /dev/null and b/target/classes/MainExecutor.class differ diff --git a/target/classes/daos/BaseDao.class b/target/classes/daos/BaseDao.class new file mode 100644 index 0000000..0409070 Binary files /dev/null and b/target/classes/daos/BaseDao.class differ diff --git a/target/classes/daos/CarDao.class b/target/classes/daos/CarDao.class new file mode 100644 index 0000000..67faeb4 Binary files /dev/null and b/target/classes/daos/CarDao.class differ diff --git a/target/classes/models/BaseModel.class b/target/classes/models/BaseModel.class new file mode 100644 index 0000000..d17c675 Binary files /dev/null and b/target/classes/models/BaseModel.class differ diff --git a/target/classes/models/Car.class b/target/classes/models/Car.class new file mode 100644 index 0000000..57e9e30 Binary files /dev/null and b/target/classes/models/Car.class differ diff --git a/target/jdbcdao-1.0-SNAPSHOT.jar b/target/jdbcdao-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..a17d60e Binary files /dev/null and b/target/jdbcdao-1.0-SNAPSHOT.jar differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..bc38298 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Dec 07 20:29:51 EST 2021 +version=1.0-SNAPSHOT +groupId=com.zipcoder.lab +artifactId=jdbcdao diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..fd35807 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +daos/CarDao.class +models/Car.class +daos/BaseDao.class +MainExecutor.class +models/BaseModel.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..6e4cb93 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +/Users/keerthanasrinivasan/Documents/projects/Maven.JDBC-DAO/src/main/java/models/Car.java +/Users/keerthanasrinivasan/Documents/projects/Maven.JDBC-DAO/src/main/java/daos/CarDao.java +/Users/keerthanasrinivasan/Documents/projects/Maven.JDBC-DAO/src/main/java/daos/BaseDao.java +/Users/keerthanasrinivasan/Documents/projects/Maven.JDBC-DAO/src/main/java/MainExecutor.java +/Users/keerthanasrinivasan/Documents/projects/Maven.JDBC-DAO/src/main/java/models/BaseModel.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29