|
1 | 1 | package com.csaba79coder.apifirstdevelopment.service;
|
2 | 2 |
|
3 | 3 | import com.csaba79coder.apifirstdevelopment.entity.Book;
|
| 4 | +import com.csaba79coder.apifirstdevelopment.entity.Log; |
4 | 5 | import com.csaba79coder.apifirstdevelopment.persistence.BookRepository;
|
| 6 | +import com.csaba79coder.apifirstdevelopment.persistence.LogRepository; |
| 7 | +import com.csaba79coder.apifirstdevelopment.util.ISBN13Validator; |
| 8 | +import com.csaba79coder.apifirstdevelopment.util.Mapper; |
5 | 9 | import com.csaba79coder.models.BookModel;
|
6 | 10 | import com.csaba79coder.models.ModifiedBookModel;
|
7 | 11 | import com.csaba79coder.models.NewBookModel;
|
8 | 12 | import lombok.RequiredArgsConstructor;
|
9 | 13 | import lombok.extern.slf4j.Slf4j;
|
10 | 14 | import org.springframework.stereotype.Service;
|
11 | 15 |
|
| 16 | +import java.util.InputMismatchException; |
12 | 17 | import java.util.List;
|
13 | 18 | import java.util.NoSuchElementException;
|
14 | 19 | import java.util.UUID;
|
|
17 | 22 | @RequiredArgsConstructor
|
18 | 23 | @Slf4j
|
19 | 24 | public class BookService {
|
| 25 | + private final LogRepository logRepository; |
20 | 26 |
|
21 | 27 | private final BookRepository bookRepository;
|
| 28 | + private Log systemLog; |
22 | 29 |
|
23 | 30 | public BookModel addNewBook(NewBookModel newModel) {
|
24 | | - |
25 | | - return null; |
| 31 | + if (newModel.getIsbn() == null || !ISBN13Validator.isValidISBN(newModel.getIsbn()) |
| 32 | + || newModel.getTitle().isEmpty() || newModel.getTitle().isBlank() |
| 33 | + || newModel.getGenre() == null) { |
| 34 | + String message = String.format("Please represent a valid isbn input, isbn: %s is not valid!", newModel.getIsbn()); |
| 35 | + systemLog = new Log(message); |
| 36 | + logRepository.save(systemLog); |
| 37 | + log.info(message); |
| 38 | + throw new InputMismatchException(message); |
| 39 | + } else { |
| 40 | + return Mapper.mapBookEntityToBookModel(bookRepository.save(Mapper.mapNewBookModelToBookEntity(newModel))); |
| 41 | + } |
26 | 42 | }
|
27 | 43 |
|
28 | 44 | public void deleteAnExistingBookById(UUID id) {
|
29 | 45 | Book book = bookRepository.findBookById(id)
|
30 | 46 | .orElseThrow(() -> {
|
31 | 47 | String message = String.format("Book with id: %s was not found", id);
|
| 48 | + systemLog = new Log(message); |
| 49 | + logRepository.save(systemLog); |
32 | 50 | log.info(message);
|
33 | 51 | return new NoSuchElementException(message);
|
34 | 52 | });
|
|
0 commit comments