ProductDAO.java

package com.company.sms.dao; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.company.sms.entity.Product; import com.company.sms.repository.ProductRepo; @Repository public class ProductDAO {//CRUD Operations @Autowired ProductRepo repo; public void addProduct(Product product){ repo.save(product); } public List<Product> viewProduct(){ List<Product> list = repo.findAll(); return list; } public void updateProduct(Product product){ repo.save(product); } public void deleteProduct(int id){ repo.deleteById(id); } } 

ProductService.java

package com.company.sms.service; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import com.company.sms.dao.ProductDAO; import com.company.sms.entity.Product; import com.company.sms.repository.ProductRepo; @Service public class ProductService { @Autowired ProductDAO dao; // @PostMapping public void addProduct(Product product){ dao.addProduct(product); } // @GetMapping("/students") public List<Product> viewProduct(){ return dao.viewProduct(); } // @PutMapping public void updateProduct(Product product){ dao.updateProduct(product); } // @DeleteMapping public void deleteProduct(int id){ dao.deleteProduct(id); } public Product findTopPrice(){ List<Product> arr = dao.viewProduct(); Product topPrice = arr.get(0); for(Product product : arr){ if(topPrice.getPrice() < product.getPrice()){ topPrice = product; } } return topPrice; } public ArrayList<Product> findByCategory(String category){ List<Product> arr = dao.viewProduct(); ArrayList<Product> arrCategory= new ArrayList(); for(Product product : arr){ if(product.getCategory().equals(category)){ arrCategory.add(product); } } return arrCategory; } public HashSet<String> findUniqueCategory(){ List<Product> arr = dao.viewProduct(); //container to add only unique category to avoid duplication HashSet<String> set = new HashSet(); for(Product product : arr){ set.add(product.getCategory()); } return set; } public HashSet<String> findUniqueDuplicateCategory(){ List<Product> arr = dao.viewProduct(); HashSet<String> set = new HashSet(); for(Product product : arr){ if(set.add(product.getCategory())){ System.out.println("Unique Category: "+ product.getCategory()); }else{ System.out.println("Duplicate Category: "+ product.getCategory()); } } return set; } public HashSet<String> findDuplicateUniqueCategory(){ List<Product> arr = dao.viewProduct(); HashSet<String> uniqueSet = new HashSet(); HashSet<String> duplicateSet = new HashSet(); for(Product product : arr){ boolean unique = uniqueSet.add(product.getCategory()); if(!unique){ duplicateSet.add(product.getCategory()); } } return duplicateSet; } public Product getById(int id){ List<Product> arr = dao.viewProduct(); HashMap<Integer, Product> map = new HashMap<>(); for(Product product : arr){ map.put(product.getId(), product); } return map.get(id); } // public Product getById(int id){ // HashMap<Integer, Student> map = this.getMap(); // return map.get(id); // } public HashMap<String, Integer> countByCategory(){ List<Product> arr = dao.viewProduct(); HashMap<String, Integer> map = new HashMap<>(); for(Product product : arr){ if(map.containsKey(product.getCategory())){ map.put(product.getCategory(), map.get(product.getCategory()) + 1); }else{ map.put(product.getCategory(),1); } } return map; } public HashMap<String, Integer> countCategory(){ List<Product> arr = dao.viewProduct(); HashMap<String, Integer> map = new HashMap<>(); for(Product product : arr){ map.put(product.getCategory(),map.getOrDefault(product.getCategory(),0) + 1); } return map; } } 

ProductController.java

package com.company.sms.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.company.sms.entity.Product; import com.company.sms.service.ProductService; @RestController @RequestMapping("/products") public class ProductController { @Autowired ProductService service; @PostMapping public void addProduct(@RequestBody Product product) { service.addProduct(product); } @GetMapping public List<Product> viewProduct() { return service.viewProduct(); } @PutMapping public void updateProduct(@RequestBody Product product) { service.updateProduct(product); } @DeleteMapping("/{id}") public void deleteProduct(@PathVariable int id) { service.deleteProduct(id); } } 

Output:

[ { "id": 1, "name": "Pant", "category": "Clothing", "price": 2000 }, { "id": 3, "name": "TV", "category": "Electronic", "price": 30000 }, { "id": 4, "name": "AC", "category": "ELectronic", "price": 50000 }, { "id": 5, "name": "Jeans", "category": "CLothing", "price": 2000 } ]