package com.refresh.pos.domain.inventory; import java.util.List; import com.refresh.pos.techicalservices.inventory.InventoryDao; /** * Book that keeps list of Product. * * @author Refresh Team * */ public class ProductCatalog { private InventoryDao inventoryDao; /** * Constructs Data Access Object of inventory in ProductCatalog. * @param inventoryDao DAO of inventory. */ public ProductCatalog(InventoryDao inventoryDao) { this.inventoryDao = inventoryDao; } /** * Constructs product and adds product to inventory. * @param name name of product. * @param barcode barcode of product. * @param salePrice price of product. * @return true if product adds in inventory success ; otherwise false. */ public boolean addProduct(String name, String barcode, double salePrice) { Product product = new Product(name, barcode, salePrice); int id = inventoryDao.addProduct(product); return id != -1; } /** * Edits product. * @param product the product to be edited. * @return true if product edits success ; otherwise false. */ public boolean editProduct(Product product) { boolean respond = inventoryDao.editProduct(product); return respond; } /** * Returns product from inventory finds by barcode. * @param barcode barcode of product. * @return product */ public Product getProductByBarcode(String barcode) { return inventoryDao.getProductByBarcode(barcode); } /** * Returns product from inventory finds by id. * @param id id of product. * @return product */ public Product getProductById(int id) { return inventoryDao.getProductById(id); } /** * Returns list of all products in inventory. * @return list of all products in inventory. */ public List<Product> getAllProduct() { return inventoryDao.getAllProduct(); } /** * Returns list of product in inventory finds by name. * @param name name of product. * @return list of product in inventory finds by name. */ public List<Product> getProductByName(String name) { return inventoryDao.getProductByName(name); } /** * Search product from string in inventory. * @param search string for searching. * @return list of product. */ public List<Product> searchProduct(String search) { return inventoryDao.searchProduct(search); } /** * Clears ProductCatalog. */ public void clearProductCatalog() { inventoryDao.clearProductCatalog(); } /** * Hidden product from inventory. * @param product The product to be hidden. */ public void suspendProduct(Product product) { inventoryDao.suspendProduct(product); } }