From d6999532f0676d27abb8d54b169a360138ab2361 Mon Sep 17 00:00:00 2001 From: Technobug0877 Date: Fri, 20 Mar 2020 21:23:08 +0530 Subject: [PATCH 01/10] Abhinav 1710991029 --- Abhinav 1710991029/bean/Sales.java | 40 ++++++ Abhinav 1710991029/bean/SalesReport.java | 61 ++++++++ Abhinav 1710991029/bean/Stock.java | 40 ++++++ Abhinav 1710991029/dao/SalesDao.java | 96 +++++++++++++ Abhinav 1710991029/dao/StockDao.java | 132 ++++++++++++++++++ Abhinav 1710991029/main/SalesApplication.java | 79 +++++++++++ Abhinav 1710991029/service/Administrator.java | 65 +++++++++ Abhinav 1710991029/util/DBUtil.java | 20 +++ 8 files changed, 533 insertions(+) create mode 100644 Abhinav 1710991029/bean/Sales.java create mode 100644 Abhinav 1710991029/bean/SalesReport.java create mode 100644 Abhinav 1710991029/bean/Stock.java create mode 100644 Abhinav 1710991029/dao/SalesDao.java create mode 100644 Abhinav 1710991029/dao/StockDao.java create mode 100644 Abhinav 1710991029/main/SalesApplication.java create mode 100644 Abhinav 1710991029/service/Administrator.java create mode 100644 Abhinav 1710991029/util/DBUtil.java diff --git a/Abhinav 1710991029/bean/Sales.java b/Abhinav 1710991029/bean/Sales.java new file mode 100644 index 0000000..e6b3029 --- /dev/null +++ b/Abhinav 1710991029/bean/Sales.java @@ -0,0 +1,40 @@ +package com.wipro.sales.bean; + +public class Sales { + String salesID; + java.util.Date salesDate; + String productID; + int quantitySold; + double salesPricePerUnit; + public String getSalesID() { + return salesID; + } + public void setSalesID(String salesID) { + this.salesID = salesID; + } + public java.util.Date getSalesDate() { + return salesDate; + } + public void setSalesDate(java.util.Date salesDate) { + this.salesDate = salesDate; + } + public String getProductID() { + return productID; + } + public void setProductID(String productID) { + this.productID = productID; + } + public int getQuantitySold() { + return quantitySold; + } + public void setQuantitySold(int quantitySold) { + this.quantitySold = quantitySold; + } + public double getSalesPricePerUnit() { + return salesPricePerUnit; + } + public void setSalesPricePerUnit(double salesPricePerUnit) { + this.salesPricePerUnit = salesPricePerUnit; + } + +} diff --git a/Abhinav 1710991029/bean/SalesReport.java b/Abhinav 1710991029/bean/SalesReport.java new file mode 100644 index 0000000..209c753 --- /dev/null +++ b/Abhinav 1710991029/bean/SalesReport.java @@ -0,0 +1,61 @@ +package com.wipro.sales.bean; + +public class SalesReport { + String salesID; + java.util.Date salesDate; + String productID; + String productName; + int quantitySold; + double productUnitPrice; + double salesPricePerUnit; + double profitAmount; + public String getSalesID() { + return salesID; + } + public void setSalesID(String salesID) { + this.salesID = salesID; + } + public java.util.Date getSalesDate() { + return salesDate; + } + public void setSalesDate(java.util.Date salesDate) { + this.salesDate = salesDate; + } + public String getProductID() { + return productID; + } + public void setProductID(String productID) { + this.productID = productID; + } + public String getProductName() { + return productName; + } + public void setProductName(String productName) { + this.productName = productName; + } + public int getQuantitySold() { + return quantitySold; + } + public void setQuantitySold(int quantitySold) { + this.quantitySold = quantitySold; + } + public double getProductUnitPrice() { + return productUnitPrice; + } + public void setProductUnitPrice(double productUnitPrice) { + this.productUnitPrice = productUnitPrice; + } + public double getSalesPricePerUnit() { + return salesPricePerUnit; + } + public void setSalesPricePerUnit(double salesPricePerUnit) { + this.salesPricePerUnit = salesPricePerUnit; + } + public double getProfitAmount() { + return profitAmount; + } + public void setProfitAmount(double profitAmount) { + this.profitAmount = profitAmount; + } + +} diff --git a/Abhinav 1710991029/bean/Stock.java b/Abhinav 1710991029/bean/Stock.java new file mode 100644 index 0000000..362a37d --- /dev/null +++ b/Abhinav 1710991029/bean/Stock.java @@ -0,0 +1,40 @@ +package com.wipro.sales.bean; + +public class Stock { + String productID; + String productName; + int quantityOnHand; + double productUnitPrice; + int reorderLevel; + public String getProductID() { + return productID; + } + public void setProductID(String productID) { + this.productID = productID; + } + public String getProductName() { + return productName; + } + public void setProductName(String productName) { + this.productName = productName; + } + public int getQuantityOnHand() { + return quantityOnHand; + } + public void setQuantityOnHand(int quantityOnHand) { + this.quantityOnHand = quantityOnHand; + } + public double getProductUnitPrice() { + return productUnitPrice; + } + public void setProductUnitPrice(double productUnitPrice) { + this.productUnitPrice = productUnitPrice; + } + public int getReorderLevel() { + return reorderLevel; + } + public void setReorderLevel(int reorderLevel) { + this.reorderLevel = reorderLevel; + } + +} diff --git a/Abhinav 1710991029/dao/SalesDao.java b/Abhinav 1710991029/dao/SalesDao.java new file mode 100644 index 0000000..aa9ba58 --- /dev/null +++ b/Abhinav 1710991029/dao/SalesDao.java @@ -0,0 +1,96 @@ +package com.wipro.sales.dao; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + +import com.wipro.sales.bean.*; +import com.wipro.sales.bean.SalesReport; +import com.wipro.sales.util.DBUtil; + +public class SalesDao { + + + public int insertSales(Sales salesobj) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "INSERT INTO TBL_SALES VALUES(?, ?, ?, ?, ?)"; + java.sql.Date sqlDate = new java.sql.Date(salesobj.getSalesDate().getTime()); + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, salesobj.getSalesID()); + pstmt.setDate(2, sqlDate); + pstmt.setString(3, salesobj.getProductID()); + pstmt.setInt(4, salesobj.getQuantitySold()); + pstmt.setDouble(5, salesobj.getSalesPricePerUnit()); + + if (pstmt.executeUpdate() == 1) return 1; + else return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + + + public String generateSalesID(Date salesDate) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT SEQ_SALES_ID.NEXTVAL FROM DUAL"; + + int SEQ_SALES_ID = 0; + String out = salesDate.toString().substring(salesDate.toString().length()-2, salesDate.toString().length()); + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + + rs.next(); + SEQ_SALES_ID = rs.getInt(1); + + out += SEQ_SALES_ID; + return out; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + + + public ArrayList getSalesReport(){ + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT * FROM V_SALES_REPORT"; + + ArrayList list = new ArrayList(); + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + + while (rs.next()) { + SalesReport salesReport = new SalesReport(); + salesReport.setSalesID(rs.getString(1)); + salesReport.setSalesDate(rs.getDate(2)); + salesReport.setProductID(rs.getString(3)); + salesReport.setProductName(rs.getString(4)); + salesReport.setQuantitySold(rs.getInt(5)); + salesReport.setProductUnitPrice(rs.getDouble(6)); + salesReport.setSalesPricePerUnit(rs.getDouble(7)); + salesReport.setProfitAmount(rs.getDouble(8)); + list.add(salesReport); + } + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + + return list; + } +} diff --git a/Abhinav 1710991029/dao/StockDao.java b/Abhinav 1710991029/dao/StockDao.java new file mode 100644 index 0000000..c4e2edc --- /dev/null +++ b/Abhinav 1710991029/dao/StockDao.java @@ -0,0 +1,132 @@ +package com.wipro.sales.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import com.wipro.sales.bean.Stock; +import com.wipro.sales.util.DBUtil; + +public class StockDao { + + public int insertStock(Stock stock) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "INSERT INTO TBL_STOCK VALUES(?, ?, ?, ?, ?)"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, stock.getProductID()); + pstmt.setString(2, stock.getProductName()); + pstmt.setInt(3, stock.getQuantityOnHand()); + pstmt.setDouble(4, stock.getProductUnitPrice()); + pstmt.setInt(5, stock.getReorderLevel()); + + if (pstmt.executeUpdate() == 1) return 1; + else return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + + + public String generateProductID(String productName) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT SEQ_PRODUCT_ID.NEXTVAL FROM DUAL"; + + int SEQ_PRODUCT_ID = 0; + String out = ""; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + + rs.next(); + SEQ_PRODUCT_ID = rs.getInt(1); + + out += productName.substring(0, 2); + out += SEQ_PRODUCT_ID; + + return out; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + + public int updateStock(String productID,int soldQty) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "UPDATE TBL_STOCK SET Quantity_On_Hand = Quantity_On_Hand - ?" + + "WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setInt(1, soldQty); + pstmt.setString(2, productID); + + if (pstmt.executeUpdate() == 1) return 1; + else return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + + + public Stock getStock(String productID) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT * FROM TBL_STOCK WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, productID); + + ResultSet rs = pstmt.executeQuery(); + + rs.next(); + Stock stock = new Stock(); + stock.setProductID(rs.getString(1)); + stock.setProductName(rs.getString(2)); + stock.setQuantityOnHand(rs.getInt(3)); + stock.setProductUnitPrice(rs.getDouble(4)); + stock.setReorderLevel(rs.getInt(5)); + + return stock; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + + public int deleteStock(String productID) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "DELETE TBL_STOCK WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, productID); + + if (pstmt.executeUpdate() == 1) + return 1; + else + return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + +} diff --git a/Abhinav 1710991029/main/SalesApplication.java b/Abhinav 1710991029/main/SalesApplication.java new file mode 100644 index 0000000..8fc7bfb --- /dev/null +++ b/Abhinav 1710991029/main/SalesApplication.java @@ -0,0 +1,79 @@ +package com.wipro.sales.main; + +import java.util.Scanner; +import com.wipro.sales.bean.*; +import com.wipro.sales.service.*; +import java.sql.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +public class SalesApplication { + + public static void main(String[] args) throws ParseException { + Scanner sc = new Scanner(System.in); + + Administrator admin = new Administrator(); + + int choice = 0; + + do { + System.out.println("1. Insert Stock"); + System.out.println("2. Delete Stock"); + System.out.println("3. Insert Sales"); + System.out.println("4. View Sales Report"); + System.out.print("Enter your Choice: "); + choice = sc.nextInt(); + + switch (choice) { + case 1: + Stock stock = new Stock(); + System.out.print("Enter product ID: "); + stock.setProductID(sc.nextLine()); + System.out.print("Enter product name: "); + stock.setProductName(sc.nextLine()); + System.out.print("Enter quantity on hand: "); + stock.setQuantityOnHand(sc.nextInt()); + sc.nextLine(); + System.out.print("Enter product unit price: "); + stock.setProductUnitPrice(sc.nextDouble()); + System.out.print("Enter product reorder level: "); + stock.setReorderLevel(sc.nextInt()); + sc.nextLine(); + admin.insertStock(stock); + break; + case 2: + System.out.print("Enter product id to be deleted: "); + String removeId = sc.nextLine(); + removeId = admin.deleteStock(removeId); + if (removeId != null) System.out.println(removeId + " removed successfully"); + break; + case 3: + Sales sales = new Sales(); + System.out.print("Enter sales id: "); + sales.setSalesID(sc.nextLine()); + System.out.print("Enter date (dd-mm-yyyy): "); + String sDate = sc.nextLine(); + Date date = (Date) new SimpleDateFormat("dd-mm-yyyy").parse(sDate); + sales.setSalesDate(date); + System.out.print("Enter product id: "); + sales.setProductID(sc.nextLine()); + System.out.print("Enter quantity sold: "); + sales.setQuantitySold(sc.nextInt()); + sc.nextLine(); + System.out.print("Enter sales price per unit: "); + sales.setSalesPricePerUnit(sc.nextDouble()); + admin.insertSales(sales); + break; + case 4: + admin.getSalesReport(); + break; + default: + System.out.println("Exiting..."); + choice = 0; + break; + } + } while (choice >= 1 && choice <= 4); + + sc.close(); + } + +} diff --git a/Abhinav 1710991029/service/Administrator.java b/Abhinav 1710991029/service/Administrator.java new file mode 100644 index 0000000..554cd22 --- /dev/null +++ b/Abhinav 1710991029/service/Administrator.java @@ -0,0 +1,65 @@ +package com.wipro.sales.service; + +import java.sql.*; +import java.util.ArrayList; +import com.wipro.sales.dao.*; +import com.wipro.sales.bean.*; + +public class Administrator { + + private static StockDao stockDao = new StockDao(); + private static SalesDao salesDao = new SalesDao(); + + public synchronized String insertStock(Stock stockobj) { + if (stockobj != null && stockobj.getProductName().length() >= 2) { + String productID = stockDao.generateProductID(stockobj.getProductName()); + stockobj.setProductID(productID); + if (stockDao.insertStock(stockobj) == 1) + return productID; + else + return "Data not Valid for insertion"; + } else { + return "Data not Valid for insertion"; + } + } + + + public String deleteStock(String productID) { + if (stockDao.deleteStock(productID) == 1) + return "deleted"; + else + return "record cannot be deleted"; + } + + + public String insertSales(Sales salesobj) { + if (salesobj == null) + return "Object not valid for insertion"; + + if (stockDao.getStock(salesobj.getProductID()) == null) + return "Unknown Product for sales"; + + if (stockDao.getStock(salesobj.getProductID()).getQuantityOnHand() < salesobj.getQuantitySold()) + return "Not enough stock on hand for sales"; + + if (salesobj.getSalesDate().before(new Date(0))) + return "Invalid date"; + + String salesID = salesDao.generateSalesID(salesobj.getSalesDate()); + salesobj.setSalesID(salesID); + + if (salesDao.insertSales(salesobj) == 1) { + if (stockDao.updateStock(salesobj.getProductID(), salesobj.getQuantitySold()) == 1) + return "sales record inserted successfully"; + else + return "Error"; + } else { + return "Error"; + } + } + + + public ArrayList getSalesReport(){ + return salesDao.getSalesReport(); + } +} diff --git a/Abhinav 1710991029/util/DBUtil.java b/Abhinav 1710991029/util/DBUtil.java new file mode 100644 index 0000000..9c1de02 --- /dev/null +++ b/Abhinav 1710991029/util/DBUtil.java @@ -0,0 +1,20 @@ +package com.wipro.sales.util; + +import java.sql.*; + +public class DBUtil { + static String db_url = "jdbc:oracle:thin:@localhost:1521:xe"; + static Connection con = null; + static String user = "username"; + static String pass = "password"; + public static Connection getDBConnection() { + try { + con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521", "scott", "tiger"); + return con; + } catch (SQLException e) { + System.out.println("Connection could not be estanlished"); + e.printStackTrace(); + return null; + } + } +} From 7098c376bb3d3fa78f61451346243fb8d2e0e042 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:14:19 +0530 Subject: [PATCH 02/10] JDBC Assignment --- bin/com/wipro/sales/bean/Sales.class | Bin 0 -> 1458 bytes bin/com/wipro/sales/bean/SalesReport.class | Bin 0 -> 2103 bytes bin/com/wipro/sales/bean/Stock.class | Bin 0 -> 1420 bytes bin/com/wipro/sales/dao/SalesDao.class | Bin 0 -> 3931 bytes bin/com/wipro/sales/dao/StockDao.class | Bin 0 -> 3893 bytes .../wipro/sales/main/SalesApplication.class | Bin 0 -> 3354 bytes .../wipro/sales/service/Administrator.class | Bin 0 -> 2713 bytes bin/com/wipro/sales/util/DBUtil.class | Bin 0 -> 1329 bytes src/com/wipro/sales/bean/Sales.java | 40 ++++++ src/com/wipro/sales/bean/SalesReport.java | 61 ++++++++ src/com/wipro/sales/bean/Stock.java | 40 ++++++ src/com/wipro/sales/dao/SalesDao.java | 96 +++++++++++++ src/com/wipro/sales/dao/StockDao.java | 132 ++++++++++++++++++ .../wipro/sales/main/SalesApplication.java | 79 +++++++++++ .../wipro/sales/service/Administrator.java | 65 +++++++++ src/com/wipro/sales/util/DBUtil.java | 23 +++ 16 files changed, 536 insertions(+) create mode 100644 bin/com/wipro/sales/bean/Sales.class create mode 100644 bin/com/wipro/sales/bean/SalesReport.class create mode 100644 bin/com/wipro/sales/bean/Stock.class create mode 100644 bin/com/wipro/sales/dao/SalesDao.class create mode 100644 bin/com/wipro/sales/dao/StockDao.class create mode 100644 bin/com/wipro/sales/main/SalesApplication.class create mode 100644 bin/com/wipro/sales/service/Administrator.class create mode 100644 bin/com/wipro/sales/util/DBUtil.class create mode 100644 src/com/wipro/sales/bean/Sales.java create mode 100644 src/com/wipro/sales/bean/SalesReport.java create mode 100644 src/com/wipro/sales/bean/Stock.java create mode 100644 src/com/wipro/sales/dao/SalesDao.java create mode 100644 src/com/wipro/sales/dao/StockDao.java create mode 100644 src/com/wipro/sales/main/SalesApplication.java create mode 100644 src/com/wipro/sales/service/Administrator.java create mode 100644 src/com/wipro/sales/util/DBUtil.java diff --git a/bin/com/wipro/sales/bean/Sales.class b/bin/com/wipro/sales/bean/Sales.class new file mode 100644 index 0000000000000000000000000000000000000000..cb4deed76e8ec6e4af537c4683c34e31af024723 GIT binary patch literal 1458 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 In+t#YKX$%WZU6uP literal 0 HcmV?d00001 diff --git a/bin/com/wipro/sales/main/SalesApplication.class b/bin/com/wipro/sales/main/SalesApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..88c850565c4c321be1d2fad8e5fe5873549de1fb GIT binary patch literal 3354 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 j(uX1bjo>hg^#3V7MD+J?pS} getSalesReport(){ + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT * FROM V_SALES_REPORT"; + + ArrayList list = new ArrayList(); + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + + while (rs.next()) { + SalesReport salesReport = new SalesReport(); + salesReport.setSalesID(rs.getString(1)); + salesReport.setSalesDate(rs.getDate(2)); + salesReport.setProductID(rs.getString(3)); + salesReport.setProductName(rs.getString(4)); + salesReport.setQuantitySold(rs.getInt(5)); + salesReport.setProductUnitPrice(rs.getDouble(6)); + salesReport.setSalesPricePerUnit(rs.getDouble(7)); + salesReport.setProfitAmount(rs.getDouble(8)); + list.add(salesReport); + } + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + + return list; + } +} diff --git a/src/com/wipro/sales/dao/StockDao.java b/src/com/wipro/sales/dao/StockDao.java new file mode 100644 index 0000000..3d68c4b --- /dev/null +++ b/src/com/wipro/sales/dao/StockDao.java @@ -0,0 +1,132 @@ +package com.wipro.sales.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import com.wipro.sales.bean.Stock; +import com.wipro.sales.util.DBUtil; + +public class StockDao { + + public int insertStock(Stock stock) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "INSERT INTO TBL_STOCK VALUES(?, ?, ?, ?, ?)"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, stock.getProductID()); + pstmt.setString(2, stock.getProductName()); + pstmt.setInt(3, stock.getQuantityOnHand()); + pstmt.setDouble(4, stock.getProductUnitPrice()); + pstmt.setInt(5, stock.getReorderLevel()); + + if (pstmt.executeUpdate() == 1) return 1; + else return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + + + public String generateProductID(String productName) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT SEQ_PRODUCT_ID.NEXTVAL FROM DUAL"; + + int SEQ_PRODUCT_ID = 0; + String out = ""; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + + rs.next(); + SEQ_PRODUCT_ID = rs.getInt(1); + + out += productName.substring(0, 2); + out += SEQ_PRODUCT_ID; + + return out; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + + public int updateStock(String productID,int soldQty) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "UPDATE TBL_STOCK SET Quantity_On_Hand = Quantity_On_Hand - ?" + + "WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setInt(1, soldQty); + pstmt.setString(2, productID); + + if (pstmt.executeUpdate() == 1) return 1; + else return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + + + public Stock getStock(String productID) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "SELECT * FROM TBL_STOCK WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, productID); + + ResultSet rs = pstmt.executeQuery(); + + rs.next(); + Stock stock = new Stock(); + stock.setProductID(rs.getString(1)); + stock.setProductName(rs.getString(2)); + stock.setQuantityOnHand(rs.getInt(3)); + stock.setProductUnitPrice(rs.getDouble(4)); + stock.setReorderLevel(rs.getInt(5)); + + return stock; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + + public int deleteStock(String productID) { + Connection conn = null; + PreparedStatement pstmt = null; + String sql = "DELETE TBL_STOCK WHERE Product_ID = ?"; + + try { + conn = DBUtil.getDBConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, productID); + + if (pstmt.executeUpdate() == 1) + return 1; + else + return 0; + } catch (SQLException e) { + e.printStackTrace(); + return 0; + } + } + +} diff --git a/src/com/wipro/sales/main/SalesApplication.java b/src/com/wipro/sales/main/SalesApplication.java new file mode 100644 index 0000000..13f1e6f --- /dev/null +++ b/src/com/wipro/sales/main/SalesApplication.java @@ -0,0 +1,79 @@ +package com.wipro.sales.main; + +import java.util.Scanner; +import com.wipro.sales.bean.*; +import com.wipro.sales.service.*; +import java.sql.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +public class SalesApplication { + + public static void main(String[] args) throws ParseException { + Scanner sc = new Scanner(System.in); + + Administrator admin = new Administrator(); + + int choice = 0; + + do { + System.out.println("1. Insert Stock"); + System.out.println("2. Delete Stock"); + System.out.println("3. Insert Sales"); + System.out.println("4. View Sales Report"); + System.out.print("Enter your Choice: "); + choice = sc.nextInt(); + + switch (choice) { + case 1: + Stock stock = new Stock(); + System.out.print("Enter product ID: "); + stock.setProductID(sc.nextLine()); + System.out.print("Enter product name: "); + stock.setProductName(sc.nextLine()); + System.out.print("Enter quantity on hand: "); + stock.setQuantityOnHand(sc.nextInt()); + sc.nextLine(); + System.out.print("Enter product unit price: "); + stock.setProductUnitPrice(sc.nextDouble()); + System.out.print("Enter product reorder level: "); + stock.setReorderLevel(sc.nextInt()); + sc.nextLine(); + admin.insertStock(stock); + break; + case 2: + System.out.print("Enter product id to be deleted: "); + String removeId = sc.nextLine(); + removeId = admin.deleteStock(removeId); + if (removeId != null) System.out.println(removeId + " removed successfully"); + break; + case 3: + Sales sales = new Sales(); + System.out.print("Enter sales id: "); + sales.setSalesID(sc.nextLine()); + System.out.print("Enter date (dd-mm-yyyy): "); + String sDate = sc.nextLine(); + Date date = (Date) new SimpleDateFormat("dd-mm-yyyy").parse(sDate); + sales.setSalesDate(date); + System.out.print("Enter product id: "); + sales.setProductID(sc.nextLine()); + System.out.print("Enter quantity sold: "); + sales.setQuantitySold(sc.nextInt()); + sc.nextLine(); + System.out.print("Enter sales price per unit: "); + sales.setSalesPricePerUnit(sc.nextDouble()); + admin.insertSales(sales); + break; + case 4: + admin.getSalesReport(); + break; + default: + System.out.println("Exiting..."); + choice = 0; + break; + } + } while (choice >= 1 && choice <= 4); + + sc.close(); + } + +} diff --git a/src/com/wipro/sales/service/Administrator.java b/src/com/wipro/sales/service/Administrator.java new file mode 100644 index 0000000..6067754 --- /dev/null +++ b/src/com/wipro/sales/service/Administrator.java @@ -0,0 +1,65 @@ +package com.wipro.sales.service; + +import java.sql.*; +import java.util.ArrayList; +import com.wipro.sales.dao.*; +import com.wipro.sales.bean.*; + +public class Administrator { + + private static StockDao stockDao = new StockDao(); + private static SalesDao salesDao = new SalesDao(); + + public synchronized String insertStock(Stock stockobj) { + if (stockobj != null && stockobj.getProductName().length() >= 2) { + String productID = stockDao.generateProductID(stockobj.getProductName()); + stockobj.setProductID(productID); + if (stockDao.insertStock(stockobj) == 1) + return productID; + else + return "Data not Valid for insertion"; + } else { + return "Data not Valid for insertion"; + } + } + + + public String deleteStock(String productID) { + if (stockDao.deleteStock(productID) == 1) + return "deleted"; + else + return "record cannot be deleted"; + } + + + public String insertSales(Sales salesobj) { + if (salesobj == null) + return "Object not valid for insertion"; + + if (stockDao.getStock(salesobj.getProductID()) == null) + return "Unknown Product for sales"; + + if (stockDao.getStock(salesobj.getProductID()).getQuantityOnHand() < salesobj.getQuantitySold()) + return "Not enough stock on hand for sales"; + + if (salesobj.getSalesDate().before(new Date(0))) + return "Invalid date"; + + String salesID = salesDao.generateSalesID(salesobj.getSalesDate()); + salesobj.setSalesID(salesID); + + if (salesDao.insertSales(salesobj) == 1) { + if (stockDao.updateStock(salesobj.getProductID(), salesobj.getQuantitySold()) == 1) + return "sales record inserted successfully"; + else + return "Error"; + } else { + return "Error"; + } + } + + + public ArrayList getSalesReport(){ + return salesDao.getSalesReport(); + } +} diff --git a/src/com/wipro/sales/util/DBUtil.java b/src/com/wipro/sales/util/DBUtil.java new file mode 100644 index 0000000..89210fa --- /dev/null +++ b/src/com/wipro/sales/util/DBUtil.java @@ -0,0 +1,23 @@ +package com.wipro.sales.util; + +import java.sql.*; + +public class DBUtil { + static String db_url = "jdbc:oracle:thin:@localhost:1521:xe"; + static Connection con = null; + static String user = "username"; + static String pass = "password"; + public static Connection getDBConnection() { + try { + //Register driver + Class.forName("oracle.jdbc.driver.OracleDriver"); + //create connection + con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521", "username", "password"); + return con; + } catch (Exception e) { + System.out.println("Connection could not be estanlished"); + e.printStackTrace(); + return null; + } + } +} From 085c0a04d7f424832dbde3e350ed508d984c69f1 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:14:58 +0530 Subject: [PATCH 03/10] Delete Sales.java --- Abhinav 1710991029/bean/Sales.java | 40 ------------------------------ 1 file changed, 40 deletions(-) delete mode 100644 Abhinav 1710991029/bean/Sales.java diff --git a/Abhinav 1710991029/bean/Sales.java b/Abhinav 1710991029/bean/Sales.java deleted file mode 100644 index e6b3029..0000000 --- a/Abhinav 1710991029/bean/Sales.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.wipro.sales.bean; - -public class Sales { - String salesID; - java.util.Date salesDate; - String productID; - int quantitySold; - double salesPricePerUnit; - public String getSalesID() { - return salesID; - } - public void setSalesID(String salesID) { - this.salesID = salesID; - } - public java.util.Date getSalesDate() { - return salesDate; - } - public void setSalesDate(java.util.Date salesDate) { - this.salesDate = salesDate; - } - public String getProductID() { - return productID; - } - public void setProductID(String productID) { - this.productID = productID; - } - public int getQuantitySold() { - return quantitySold; - } - public void setQuantitySold(int quantitySold) { - this.quantitySold = quantitySold; - } - public double getSalesPricePerUnit() { - return salesPricePerUnit; - } - public void setSalesPricePerUnit(double salesPricePerUnit) { - this.salesPricePerUnit = salesPricePerUnit; - } - -} From 62475420e184e679453c54634046804967c53ceb Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:06 +0530 Subject: [PATCH 04/10] Delete SalesReport.java --- Abhinav 1710991029/bean/SalesReport.java | 61 ------------------------ 1 file changed, 61 deletions(-) delete mode 100644 Abhinav 1710991029/bean/SalesReport.java diff --git a/Abhinav 1710991029/bean/SalesReport.java b/Abhinav 1710991029/bean/SalesReport.java deleted file mode 100644 index 209c753..0000000 --- a/Abhinav 1710991029/bean/SalesReport.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.wipro.sales.bean; - -public class SalesReport { - String salesID; - java.util.Date salesDate; - String productID; - String productName; - int quantitySold; - double productUnitPrice; - double salesPricePerUnit; - double profitAmount; - public String getSalesID() { - return salesID; - } - public void setSalesID(String salesID) { - this.salesID = salesID; - } - public java.util.Date getSalesDate() { - return salesDate; - } - public void setSalesDate(java.util.Date salesDate) { - this.salesDate = salesDate; - } - public String getProductID() { - return productID; - } - public void setProductID(String productID) { - this.productID = productID; - } - public String getProductName() { - return productName; - } - public void setProductName(String productName) { - this.productName = productName; - } - public int getQuantitySold() { - return quantitySold; - } - public void setQuantitySold(int quantitySold) { - this.quantitySold = quantitySold; - } - public double getProductUnitPrice() { - return productUnitPrice; - } - public void setProductUnitPrice(double productUnitPrice) { - this.productUnitPrice = productUnitPrice; - } - public double getSalesPricePerUnit() { - return salesPricePerUnit; - } - public void setSalesPricePerUnit(double salesPricePerUnit) { - this.salesPricePerUnit = salesPricePerUnit; - } - public double getProfitAmount() { - return profitAmount; - } - public void setProfitAmount(double profitAmount) { - this.profitAmount = profitAmount; - } - -} From 4b08e7b8db711b635d82e7e31b636e2881070e89 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:17 +0530 Subject: [PATCH 05/10] Delete Stock.java --- Abhinav 1710991029/bean/Stock.java | 40 ------------------------------ 1 file changed, 40 deletions(-) delete mode 100644 Abhinav 1710991029/bean/Stock.java diff --git a/Abhinav 1710991029/bean/Stock.java b/Abhinav 1710991029/bean/Stock.java deleted file mode 100644 index 362a37d..0000000 --- a/Abhinav 1710991029/bean/Stock.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.wipro.sales.bean; - -public class Stock { - String productID; - String productName; - int quantityOnHand; - double productUnitPrice; - int reorderLevel; - public String getProductID() { - return productID; - } - public void setProductID(String productID) { - this.productID = productID; - } - public String getProductName() { - return productName; - } - public void setProductName(String productName) { - this.productName = productName; - } - public int getQuantityOnHand() { - return quantityOnHand; - } - public void setQuantityOnHand(int quantityOnHand) { - this.quantityOnHand = quantityOnHand; - } - public double getProductUnitPrice() { - return productUnitPrice; - } - public void setProductUnitPrice(double productUnitPrice) { - this.productUnitPrice = productUnitPrice; - } - public int getReorderLevel() { - return reorderLevel; - } - public void setReorderLevel(int reorderLevel) { - this.reorderLevel = reorderLevel; - } - -} From 1473c33f4e8807e26a369b05866717c7a415d60b Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:31 +0530 Subject: [PATCH 06/10] Delete SalesDao.java --- Abhinav 1710991029/dao/SalesDao.java | 96 ---------------------------- 1 file changed, 96 deletions(-) delete mode 100644 Abhinav 1710991029/dao/SalesDao.java diff --git a/Abhinav 1710991029/dao/SalesDao.java b/Abhinav 1710991029/dao/SalesDao.java deleted file mode 100644 index aa9ba58..0000000 --- a/Abhinav 1710991029/dao/SalesDao.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.wipro.sales.dao; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.*; - -import com.wipro.sales.bean.*; -import com.wipro.sales.bean.SalesReport; -import com.wipro.sales.util.DBUtil; - -public class SalesDao { - - - public int insertSales(Sales salesobj) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "INSERT INTO TBL_SALES VALUES(?, ?, ?, ?, ?)"; - java.sql.Date sqlDate = new java.sql.Date(salesobj.getSalesDate().getTime()); - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setString(1, salesobj.getSalesID()); - pstmt.setDate(2, sqlDate); - pstmt.setString(3, salesobj.getProductID()); - pstmt.setInt(4, salesobj.getQuantitySold()); - pstmt.setDouble(5, salesobj.getSalesPricePerUnit()); - - if (pstmt.executeUpdate() == 1) return 1; - else return 0; - } catch (SQLException e) { - e.printStackTrace(); - return 0; - } - } - - - public String generateSalesID(Date salesDate) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "SELECT SEQ_SALES_ID.NEXTVAL FROM DUAL"; - - int SEQ_SALES_ID = 0; - String out = salesDate.toString().substring(salesDate.toString().length()-2, salesDate.toString().length()); - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - ResultSet rs = pstmt.executeQuery(); - - rs.next(); - SEQ_SALES_ID = rs.getInt(1); - - out += SEQ_SALES_ID; - return out; - } catch (SQLException e) { - e.printStackTrace(); - return null; - } - } - - - - public ArrayList getSalesReport(){ - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "SELECT * FROM V_SALES_REPORT"; - - ArrayList list = new ArrayList(); - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - ResultSet rs = pstmt.executeQuery(); - - while (rs.next()) { - SalesReport salesReport = new SalesReport(); - salesReport.setSalesID(rs.getString(1)); - salesReport.setSalesDate(rs.getDate(2)); - salesReport.setProductID(rs.getString(3)); - salesReport.setProductName(rs.getString(4)); - salesReport.setQuantitySold(rs.getInt(5)); - salesReport.setProductUnitPrice(rs.getDouble(6)); - salesReport.setSalesPricePerUnit(rs.getDouble(7)); - salesReport.setProfitAmount(rs.getDouble(8)); - list.add(salesReport); - } - } catch (SQLException e) { - e.printStackTrace(); - return null; - } - - return list; - } -} From 24153839b180e374a67fd0b941f61a023c243691 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:38 +0530 Subject: [PATCH 07/10] Delete StockDao.java --- Abhinav 1710991029/dao/StockDao.java | 132 --------------------------- 1 file changed, 132 deletions(-) delete mode 100644 Abhinav 1710991029/dao/StockDao.java diff --git a/Abhinav 1710991029/dao/StockDao.java b/Abhinav 1710991029/dao/StockDao.java deleted file mode 100644 index c4e2edc..0000000 --- a/Abhinav 1710991029/dao/StockDao.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.wipro.sales.dao; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import com.wipro.sales.bean.Stock; -import com.wipro.sales.util.DBUtil; - -public class StockDao { - - public int insertStock(Stock stock) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "INSERT INTO TBL_STOCK VALUES(?, ?, ?, ?, ?)"; - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setString(1, stock.getProductID()); - pstmt.setString(2, stock.getProductName()); - pstmt.setInt(3, stock.getQuantityOnHand()); - pstmt.setDouble(4, stock.getProductUnitPrice()); - pstmt.setInt(5, stock.getReorderLevel()); - - if (pstmt.executeUpdate() == 1) return 1; - else return 0; - } catch (SQLException e) { - e.printStackTrace(); - return 0; - } - } - - - public String generateProductID(String productName) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "SELECT SEQ_PRODUCT_ID.NEXTVAL FROM DUAL"; - - int SEQ_PRODUCT_ID = 0; - String out = ""; - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - ResultSet rs = pstmt.executeQuery(); - - rs.next(); - SEQ_PRODUCT_ID = rs.getInt(1); - - out += productName.substring(0, 2); - out += SEQ_PRODUCT_ID; - - return out; - } catch (SQLException e) { - e.printStackTrace(); - return null; - } - } - - - public int updateStock(String productID,int soldQty) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "UPDATE TBL_STOCK SET Quantity_On_Hand = Quantity_On_Hand - ?" - + "WHERE Product_ID = ?"; - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setInt(1, soldQty); - pstmt.setString(2, productID); - - if (pstmt.executeUpdate() == 1) return 1; - else return 0; - } catch (SQLException e) { - e.printStackTrace(); - return 0; - } - } - - - public Stock getStock(String productID) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "SELECT * FROM TBL_STOCK WHERE Product_ID = ?"; - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setString(1, productID); - - ResultSet rs = pstmt.executeQuery(); - - rs.next(); - Stock stock = new Stock(); - stock.setProductID(rs.getString(1)); - stock.setProductName(rs.getString(2)); - stock.setQuantityOnHand(rs.getInt(3)); - stock.setProductUnitPrice(rs.getDouble(4)); - stock.setReorderLevel(rs.getInt(5)); - - return stock; - } catch (SQLException e) { - e.printStackTrace(); - return null; - } - } - - - public int deleteStock(String productID) { - Connection conn = null; - PreparedStatement pstmt = null; - String sql = "DELETE TBL_STOCK WHERE Product_ID = ?"; - - try { - conn = DBUtil.getDBConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setString(1, productID); - - if (pstmt.executeUpdate() == 1) - return 1; - else - return 0; - } catch (SQLException e) { - e.printStackTrace(); - return 0; - } - } - -} From 5ca98e6469c3a467afbf85b0dd4ed879e2be1961 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:48 +0530 Subject: [PATCH 08/10] Delete SalesApplication.java --- Abhinav 1710991029/main/SalesApplication.java | 79 ------------------- 1 file changed, 79 deletions(-) delete mode 100644 Abhinav 1710991029/main/SalesApplication.java diff --git a/Abhinav 1710991029/main/SalesApplication.java b/Abhinav 1710991029/main/SalesApplication.java deleted file mode 100644 index 8fc7bfb..0000000 --- a/Abhinav 1710991029/main/SalesApplication.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.wipro.sales.main; - -import java.util.Scanner; -import com.wipro.sales.bean.*; -import com.wipro.sales.service.*; -import java.sql.*; -import java.text.ParseException; -import java.text.SimpleDateFormat; -public class SalesApplication { - - public static void main(String[] args) throws ParseException { - Scanner sc = new Scanner(System.in); - - Administrator admin = new Administrator(); - - int choice = 0; - - do { - System.out.println("1. Insert Stock"); - System.out.println("2. Delete Stock"); - System.out.println("3. Insert Sales"); - System.out.println("4. View Sales Report"); - System.out.print("Enter your Choice: "); - choice = sc.nextInt(); - - switch (choice) { - case 1: - Stock stock = new Stock(); - System.out.print("Enter product ID: "); - stock.setProductID(sc.nextLine()); - System.out.print("Enter product name: "); - stock.setProductName(sc.nextLine()); - System.out.print("Enter quantity on hand: "); - stock.setQuantityOnHand(sc.nextInt()); - sc.nextLine(); - System.out.print("Enter product unit price: "); - stock.setProductUnitPrice(sc.nextDouble()); - System.out.print("Enter product reorder level: "); - stock.setReorderLevel(sc.nextInt()); - sc.nextLine(); - admin.insertStock(stock); - break; - case 2: - System.out.print("Enter product id to be deleted: "); - String removeId = sc.nextLine(); - removeId = admin.deleteStock(removeId); - if (removeId != null) System.out.println(removeId + " removed successfully"); - break; - case 3: - Sales sales = new Sales(); - System.out.print("Enter sales id: "); - sales.setSalesID(sc.nextLine()); - System.out.print("Enter date (dd-mm-yyyy): "); - String sDate = sc.nextLine(); - Date date = (Date) new SimpleDateFormat("dd-mm-yyyy").parse(sDate); - sales.setSalesDate(date); - System.out.print("Enter product id: "); - sales.setProductID(sc.nextLine()); - System.out.print("Enter quantity sold: "); - sales.setQuantitySold(sc.nextInt()); - sc.nextLine(); - System.out.print("Enter sales price per unit: "); - sales.setSalesPricePerUnit(sc.nextDouble()); - admin.insertSales(sales); - break; - case 4: - admin.getSalesReport(); - break; - default: - System.out.println("Exiting..."); - choice = 0; - break; - } - } while (choice >= 1 && choice <= 4); - - sc.close(); - } - -} From 10c2adcb3e21ce197727c5afc38f9f047e0f8ca7 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:15:59 +0530 Subject: [PATCH 09/10] Delete Administrator.java --- Abhinav 1710991029/service/Administrator.java | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 Abhinav 1710991029/service/Administrator.java diff --git a/Abhinav 1710991029/service/Administrator.java b/Abhinav 1710991029/service/Administrator.java deleted file mode 100644 index 554cd22..0000000 --- a/Abhinav 1710991029/service/Administrator.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.wipro.sales.service; - -import java.sql.*; -import java.util.ArrayList; -import com.wipro.sales.dao.*; -import com.wipro.sales.bean.*; - -public class Administrator { - - private static StockDao stockDao = new StockDao(); - private static SalesDao salesDao = new SalesDao(); - - public synchronized String insertStock(Stock stockobj) { - if (stockobj != null && stockobj.getProductName().length() >= 2) { - String productID = stockDao.generateProductID(stockobj.getProductName()); - stockobj.setProductID(productID); - if (stockDao.insertStock(stockobj) == 1) - return productID; - else - return "Data not Valid for insertion"; - } else { - return "Data not Valid for insertion"; - } - } - - - public String deleteStock(String productID) { - if (stockDao.deleteStock(productID) == 1) - return "deleted"; - else - return "record cannot be deleted"; - } - - - public String insertSales(Sales salesobj) { - if (salesobj == null) - return "Object not valid for insertion"; - - if (stockDao.getStock(salesobj.getProductID()) == null) - return "Unknown Product for sales"; - - if (stockDao.getStock(salesobj.getProductID()).getQuantityOnHand() < salesobj.getQuantitySold()) - return "Not enough stock on hand for sales"; - - if (salesobj.getSalesDate().before(new Date(0))) - return "Invalid date"; - - String salesID = salesDao.generateSalesID(salesobj.getSalesDate()); - salesobj.setSalesID(salesID); - - if (salesDao.insertSales(salesobj) == 1) { - if (stockDao.updateStock(salesobj.getProductID(), salesobj.getQuantitySold()) == 1) - return "sales record inserted successfully"; - else - return "Error"; - } else { - return "Error"; - } - } - - - public ArrayList getSalesReport(){ - return salesDao.getSalesReport(); - } -} From 05c9c7946aa38b03e58030f9f356ecd3a4a51684 Mon Sep 17 00:00:00 2001 From: Abhinav Aggarwal <46458953+Technobug0877@users.noreply.github.com> Date: Tue, 19 May 2020 18:16:09 +0530 Subject: [PATCH 10/10] Delete DBUtil.java --- Abhinav 1710991029/util/DBUtil.java | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 Abhinav 1710991029/util/DBUtil.java diff --git a/Abhinav 1710991029/util/DBUtil.java b/Abhinav 1710991029/util/DBUtil.java deleted file mode 100644 index 9c1de02..0000000 --- a/Abhinav 1710991029/util/DBUtil.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.wipro.sales.util; - -import java.sql.*; - -public class DBUtil { - static String db_url = "jdbc:oracle:thin:@localhost:1521:xe"; - static Connection con = null; - static String user = "username"; - static String pass = "password"; - public static Connection getDBConnection() { - try { - con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521", "scott", "tiger"); - return con; - } catch (SQLException e) { - System.out.println("Connection could not be estanlished"); - e.printStackTrace(); - return null; - } - } -}