1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.catalog.jpa.service;
18
19 import java.util.List;
20 import java.util.Optional;
21
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
24 import org.apache.logging.log4j.catalog.jpa.dao.ProductRepository;
25 import org.apache.logging.log4j.catalog.jpa.model.ProductModel;
26 import org.springframework.beans.factory.annotation.Autowired;
27 import org.springframework.data.domain.Page;
28 import org.springframework.data.domain.Pageable;
29 import org.springframework.stereotype.Repository;
30 import org.springframework.stereotype.Service;
31 import org.springframework.transaction.annotation.Transactional;
32
33 @Service
34 @Repository
35 @Transactional
36 public class ProductServiceImpl extends AbstractPagingAndSortingService implements ProductService {
37 private static final Logger LOGGER = LogManager.getLogger();
38
39 @Autowired
40 private ProductRepository productRepository;
41
42 @Override
43 public List<ProductModel> getProducts() {
44 return productRepository.findAll();
45 }
46
47 @Override
48 public List<ProductModel> getProducts(String catalogId) {
49 return productRepository.findByCatalogId(catalogId);
50 }
51
52 @Override
53 public List<ProductModel> getProducts(int startPage, int itemsPerPage, String sortColumn, String direction) {
54 Pageable pageable = createPageRequest(startPage, itemsPerPage, sortColumn, direction);
55 Page<ProductModel> page = productRepository.findAll(pageable);
56 return page.getContent();
57 }
58
59 @Override
60 public List<ProductModel> getProducts(String catalogId, int startPage, int itemsPerPage, String sortColumn,
61 String direction) {
62 Pageable pageable = createPageRequest(startPage, itemsPerPage, sortColumn, direction);
63 Page<ProductModel> page = productRepository.findByCatalogId(catalogId, pageable);
64 return page.getContent();
65 }
66
67 @Override
68 public Optional<ProductModel> getProduct(Long productId) {
69 return productRepository.findOne(productId);
70 }
71
72
73 @Override
74 public Optional<ProductModel> getProduct(String catalogId, String name) {
75 return productRepository.findByCatalogIdAndName(catalogId, name);
76 }
77
78 @Override
79 public ProductModel saveProduct(ProductModel product) {
80 return productRepository.save(product);
81 }
82
83 @Override
84 public void deleteProduct(Long productId) {
85 productRepository.deleteById(productId);
86 }
87 }