Search in sources :

Example 11 with Category

use of com.tvd12.ezydata.example.jpa.entity.Category in project java-examples by tvd12.

the class BookController method getBook.

@GetMapping("/books/{bookId}")
public BookResponse getBook(@PathVariable Long bookId) {
    Book book = bookRepository.findById(bookId).orElseThrow(() -> new HttpNotFoundException("not found book with id: " + bookId));
    Author author = authorRepository.findById(book.getAuthorId()).orElseThrow(() -> new IllegalStateException("maybe someone has change redis"));
    Category category = categoryRepository.findById(book.getCategoryId()).orElseThrow(() -> new IllegalStateException("maybe someone has change redis"));
    return entityToResponseConverter.toBookResponse(book, author, category);
}
Also used : HttpNotFoundException(com.tvd12.example.spring_boot_redis.exception.HttpNotFoundException) Category(com.tvd12.example.spring_boot_redis.entity.Category) Book(com.tvd12.example.spring_boot_redis.entity.Book) Author(com.tvd12.example.spring_boot_redis.entity.Author)

Example 12 with Category

use of com.tvd12.ezydata.example.jpa.entity.Category in project ezyfox-examples by tvd12.

the class BookService method addBook.

public BookData addBook(AddBookData data) {
    Book existedBook = bookRepository.findByNameAndAuthorId(data.getBookName(), data.getAuthorId());
    if (existedBook != null) {
        throw new DuplicatedBookException("author: " + data.getAuthorId() + " has already registered book: " + data.getBookName());
    }
    final Author author = authorRepository.findById(data.getAuthorId());
    if (author == null) {
        throw new InvalidAuthorIdException("author: " + data.getAuthorId() + " not found");
    }
    final Category category = categoryRepository.findById(data.getCategoryId());
    if (category == null) {
        throw new InvalidCategoryIdException("category: " + data.getCategoryId() + " not found");
    }
    final Book book = dataToEntityConverter.toEntity(data);
    bookRepository.save(book);
    return entityToDataConverter.toData(book, author, category);
}
Also used : DuplicatedBookException(com.tvd12.ezydata.example.jpa.exception.DuplicatedBookException) Category(com.tvd12.ezydata.example.jpa.entity.Category) InvalidCategoryIdException(com.tvd12.ezydata.example.jpa.exception.InvalidCategoryIdException) Book(com.tvd12.ezydata.example.jpa.entity.Book) InvalidAuthorIdException(com.tvd12.ezydata.example.jpa.exception.InvalidAuthorIdException) Author(com.tvd12.ezydata.example.jpa.entity.Author)

Example 13 with Category

use of com.tvd12.ezydata.example.jpa.entity.Category in project ezyfox-examples by tvd12.

the class BookServiceTest method addBookSuccess.

@Test
public void addBookSuccess() {
    // given
    final AddBookData addBookData = randomAddBookData();
    when(bookRepository.findByNameAndAuthorId(addBookData.getBookName(), addBookData.getAuthorId())).thenReturn(null);
    final Author author = new Author(RandomUtil.randomLong(), RandomUtil.randomShortAlphabetString());
    when(authorRepository.findById(addBookData.getAuthorId())).thenReturn(author);
    final Category category = new Category(RandomUtil.randomLong(), RandomUtil.randomShortAlphabetString());
    when(categoryRepository.findById(addBookData.getCategoryId())).thenReturn(category);
    final Book book = new Book(0L, addBookData.getCategoryId(), addBookData.getAuthorId(), addBookData.getBookName(), addBookData.getPrice(), addBookData.getReleaseDate(), addBookData.getReleaseTime(), LocalDateTime.now(), LocalDateTime.now());
    when(dataToEntityConverter.toEntity(addBookData)).thenReturn(book);
    doAnswer(it -> {
        Book inputBook = (Book) it.getArguments()[0];
        inputBook.setId(RandomUtil.randomLong());
        return null;
    }).when(bookRepository).save(book);
    BookData bookData = BookData.builder().id(book.getId()).name(book.getName()).author(AuthorData.builder().id(author.getId()).name(author.getName()).build()).category(CategoryData.builder().id(category.getId()).name(category.getName()).build()).price(addBookData.getPrice()).releaseDate(addBookData.getReleaseDate()).releaseTime(addBookData.getReleaseTime()).build();
    when(entityToDataConverter.toData(book, author, category)).thenReturn(bookData);
    // when
    BookData actual = sut.addBook(addBookData);
    // then
    assertThat(actual).isEqualsTo(bookData);
    verify(bookRepository, times(1)).findByNameAndAuthorId(addBookData.getBookName(), addBookData.getAuthorId());
    verify(authorRepository, times(1)).findById(addBookData.getAuthorId());
    verify(categoryRepository, times(1)).findById(addBookData.getCategoryId());
    verify(bookRepository, times(1)).save(book);
    verify(dataToEntityConverter, times(1)).toEntity(addBookData);
    verify(entityToDataConverter, times(1)).toData(book, author, category);
    validateMockitoUsage();
}
Also used : Category(com.tvd12.ezydata.example.jpa.entity.Category) Book(com.tvd12.ezydata.example.jpa.entity.Book) AddBookData(com.tvd12.ezydata.example.jpa.data.AddBookData) Author(com.tvd12.ezydata.example.jpa.entity.Author) BookData(com.tvd12.ezydata.example.jpa.data.BookData) AddBookData(com.tvd12.ezydata.example.jpa.data.AddBookData) Test(org.junit.jupiter.api.Test)

Example 14 with Category

use of com.tvd12.ezydata.example.jpa.entity.Category in project ezyfox-examples by tvd12.

the class DataToEntityConverter method toEntity.

public Category toEntity(AddCategoryData data) {
    final Category entity = new Category();
    entity.setName(data.getCategoryName());
    entity.setCreatedTime(LocalDateTime.now());
    entity.setUpdatedTime(LocalDateTime.now());
    return entity;
}
Also used : Category(com.tvd12.ezydata.example.jpa.entity.Category)

Aggregations

Category (com.tvd12.ezydata.example.jpa.entity.Category)5 HttpBadRequestException (com.tvd12.ezyhttp.core.exception.HttpBadRequestException)4 Category (com.tvd12.example.spring_boot_redis.entity.Category)3 Author (com.tvd12.ezydata.example.jpa.entity.Author)3 Book (com.tvd12.ezydata.example.jpa.entity.Book)3 Category (com.tvd12.ezydata.example.mongo.entity.Category)3 Category (com.tvd12.ezydata.example.redis.entity.Category)3 Author (com.tvd12.example.spring_boot_redis.entity.Author)2 Book (com.tvd12.example.spring_boot_redis.entity.Book)2 HttpBadRequestException (com.tvd12.example.spring_boot_redis.exception.HttpBadRequestException)2 Author (com.tvd12.ezydata.example.mongo.entity.Author)2 Book (com.tvd12.ezydata.example.mongo.entity.Book)2 Author (com.tvd12.ezydata.example.redis.entity.Author)2 EzyRedisAtomicLong (com.tvd12.ezydata.redis.EzyRedisAtomicLong)2 HttpNotFoundException (com.tvd12.ezyhttp.core.exception.HttpNotFoundException)2 DoPost (com.tvd12.ezyhttp.server.core.annotation.DoPost)2 lombok.val (lombok.val)2 BookNameAndAuthorId (com.tvd12.example.spring_boot_redis.entity.BookNameAndAuthorId)1 HttpNotFoundException (com.tvd12.example.spring_boot_redis.exception.HttpNotFoundException)1 RedisAtomicLong (com.tvd12.example.spring_boot_redis.repository.RedisAtomicLong)1