Skip to content

Commit a34887d

Browse files
author
veosaf
committed
add rental operations
1 parent 52fe5ae commit a34887d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1536
-397
lines changed

src/main/java/com/veosaf/bookRental/DataLoader.java

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.veosaf.bookRental;
22

33
import java.util.GregorianCalendar;
4+
import java.util.HashSet;
5+
import java.util.Iterator;
6+
import java.util.Set;
47

58
import javax.inject.Inject;
69
import javax.transaction.Transactional;
@@ -12,9 +15,11 @@
1215
import org.springframework.stereotype.Component;
1316

1417
import com.veosaf.bookRental.models.Book;
18+
import com.veosaf.bookRental.models.Rental;
1519
import com.veosaf.bookRental.models.User;
1620
import com.veosaf.bookRental.models.UserCredential;
1721
import com.veosaf.bookRental.repository.BookRepository;
22+
import com.veosaf.bookRental.repository.RentalRepository;
1823
import com.veosaf.bookRental.repository.UserCredentialRepository;
1924
import com.veosaf.bookRental.repository.UserRepository;
2025

@@ -29,28 +34,39 @@ public class DataLoader implements ApplicationListener<ContextRefreshedEvent> {
2934
@Inject
3035
private UserRepository userRepository;
3136

37+
@Inject
38+
private RentalRepository rentalRepository;
39+
3240
@Inject
3341
private UserCredentialRepository userCredentialRepository;
3442

43+
private Set<Long> bookIds = new HashSet<Long>(0);
44+
private Set<Long> userIds = new HashSet<Long>(0);
45+
3546
@Override
3647
@Transactional
3748
public void onApplicationEvent(ContextRefreshedEvent arg0) {
3849
addBooks();
3950
addUsers();
51+
addRentals();
4052
}
4153

4254
private void addBooks() {
4355
Book book = new Book();
44-
book.setTitle(null);
45-
book.setPublicationDate(new GregorianCalendar(2017, 0, 31).getTime());
56+
book.setTitle("Java Book");
57+
book.setPublicationDate(new GregorianCalendar(2000, 0, 31).getTime());
4658
book.setAuthor("Simon");
47-
bookRepository.save(book);
59+
book.setStockQuantity(new Long(5));
60+
book = bookRepository.save(book);
61+
bookIds.add(book.getId());
4862

4963
book = new Book();
5064
book.setTitle("Php Book");
51-
book.setPublicationDate(new GregorianCalendar(2016, 0, 31).getTime());
65+
book.setStockQuantity(new Long(7));
66+
book.setPublicationDate(new GregorianCalendar(2000, 0, 31).getTime());
5267
book.setAuthor("Chris");
53-
bookRepository.save(book);
68+
book = bookRepository.save(book);
69+
bookIds.add(book.getId());
5470
}
5571

5672
private void addUsers() {
@@ -59,6 +75,7 @@ private void addUsers() {
5975
user.setLastName("Jackson");
6076
user.setEmail("john@gmail.com");
6177
user = userRepository.save(user);
78+
userIds.add(user.getId());
6279

6380
UserCredential userCredential = new UserCredential();
6481
user.setUserCredential(userCredential);
@@ -67,6 +84,48 @@ private void addUsers() {
6784
userCredential.setPassword("abc");
6885
userCredential = userCredentialRepository.save(userCredential);
6986

87+
user = new User();
88+
user.setFirstName("Joelle");
89+
user.setLastName("Doe");
90+
user.setEmail("joelle@gmail.com");
91+
user = userRepository.save(user);
92+
userIds.add(user.getId());
93+
94+
userCredential = new UserCredential();
95+
user.setUserCredential(userCredential);
96+
userCredential.setUser(user);
97+
userCredential.setUsername("joelle");
98+
userCredential.setPassword("abc");
99+
userCredential = userCredentialRepository.save(userCredential);
100+
101+
}
102+
103+
private void addRentals() {
104+
105+
Iterator<Long> userIterator = userIds.iterator();
106+
User user1 = userRepository.getOne((Long) userIterator.next());
107+
User user2 = userRepository.getOne((Long) userIterator.next());
108+
109+
Iterator<Long> bookIterator = bookIds.iterator();
110+
Book book1 = bookRepository.getOne((Long) bookIterator.next());
111+
Book book2 = bookRepository.getOne((Long) bookIterator.next());
112+
113+
Rental rental = new Rental();
114+
rental.setUser(user1);
115+
rental.setBook(book1);
116+
rental.setStartDate(new GregorianCalendar(2005, 0, 31).getTime());
117+
rental.setEndDate(new GregorianCalendar(2005, 1, 15).getTime());
118+
rental.setEffectiveEndDate(null);
119+
rental = rentalRepository.save(rental);
120+
121+
rental = new Rental();
122+
rental.setUser(user2);
123+
rental.setBook(book2);
124+
rental.setStartDate(new GregorianCalendar(2006, 0, 31).getTime());
125+
rental.setEndDate(new GregorianCalendar(2006, 1, 20).getTime());
126+
rental.setEffectiveEndDate(null);
127+
rental = rentalRepository.save(rental);
128+
70129
}
71130

72131
}

src/main/java/com/veosaf/bookRental/dto/BookDto.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public class BookDto implements Serializable {
1414

1515
private String title;
1616

17+
private Long stockQuantity;
18+
1719
private String author;
1820

1921
private Date publicationDate;
@@ -50,4 +52,12 @@ public void setPublicationDate(Date publicationDate) {
5052
this.publicationDate = publicationDate;
5153
}
5254

55+
public Long getStockQuantity() {
56+
return stockQuantity;
57+
}
58+
59+
public void setStockQuantity(Long stockQuantity) {
60+
this.stockQuantity = stockQuantity;
61+
}
62+
5363
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.veosaf.bookRental.dto;
2+
3+
import java.io.Serializable;
4+
import java.util.Date;
5+
6+
public class RentalDto implements Serializable {
7+
8+
/**
9+
*
10+
*/
11+
private static final long serialVersionUID = 1L;
12+
13+
private Long id;
14+
15+
private BookDto book;
16+
17+
private UserDto user;
18+
19+
private Date startDate;
20+
21+
private Date endDate;
22+
23+
private Date effectiveEndDate;
24+
25+
public Long getId() {
26+
return id;
27+
}
28+
29+
public void setId(Long id) {
30+
this.id = id;
31+
}
32+
33+
public BookDto getBook() {
34+
return book;
35+
}
36+
37+
public void setBook(BookDto book) {
38+
this.book = book;
39+
}
40+
41+
public UserDto getUser() {
42+
return user;
43+
}
44+
45+
public void setUser(UserDto user) {
46+
this.user = user;
47+
}
48+
49+
public Date getStartDate() {
50+
return startDate;
51+
}
52+
53+
public void setStartDate(Date startDate) {
54+
this.startDate = startDate;
55+
}
56+
57+
public Date getEndDate() {
58+
return endDate;
59+
}
60+
61+
public void setEndDate(Date endDate) {
62+
this.endDate = endDate;
63+
}
64+
65+
public Date getEffectiveEndDate() {
66+
return effectiveEndDate;
67+
}
68+
69+
public void setEffectiveEndDate(Date effectiveEndDate) {
70+
this.effectiveEndDate = effectiveEndDate;
71+
}
72+
73+
}

src/main/java/com/veosaf/bookRental/dto/UserDto.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
package com.veosaf.bookRental.dto;
22

3-
public class UserDto {
3+
import java.io.Serializable;
4+
5+
public class UserDto implements Serializable {
6+
7+
/**
8+
*
9+
*/
10+
private static final long serialVersionUID = 1L;
411

512
private Long id;
613

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.veosaf.bookRental.dtoMappers;
2+
3+
import java.util.List;
4+
5+
import com.veosaf.bookRental.dto.RentalDto;
6+
import com.veosaf.bookRental.exception.DataNotFoundException;
7+
import com.veosaf.bookRental.models.Rental;
8+
9+
public interface RentalDtoMapper {
10+
11+
RentalDto toRentalDto(Rental rental);
12+
13+
List<RentalDto> toRentalsDto(List<Rental> rentals);
14+
15+
Rental toRental(RentalDto rentalDto) throws DataNotFoundException;
16+
17+
}
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.veosaf.bookRental.dtoMappers;
22

3+
import java.util.List;
4+
35
import com.veosaf.bookRental.dto.UserDto;
46
import com.veosaf.bookRental.models.User;
57

68
public interface UserDtoMapper {
79

8-
UserDto toUsrDto(User user);
10+
UserDto toUserDto(User user);
11+
12+
List<UserDto> toUsersDto(List<User> findAll);
913

1014
}

src/main/java/com/veosaf/bookRental/dtoMappers/impl/BookDtoMapperImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public BookDto toBookDto(Book book) {
1818
if (book != null) {
1919
bookDto = new BookDto();
2020
bookDto.setId(book.getId());
21+
bookDto.setStockQuantity(book.getStockQuantity());
2122
bookDto.setTitle(book.getTitle());
2223
bookDto.setAuthor(book.getAuthor());
2324
bookDto.setPublicationDate(book.getPublicationDate());
@@ -41,6 +42,7 @@ public Book toBook(BookDto bookDto) {
4142
}
4243
Book book = new Book();
4344
book.setTitle(bookDto.getTitle());
45+
book.setStockQuantity(bookDto.getStockQuantity());
4446
book.setAuthor(bookDto.getAuthor());
4547
book.setId(bookDto.getId());
4648
book.setPublicationDate(bookDto.getPublicationDate());
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.veosaf.bookRental.dtoMappers.impl;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import javax.inject.Inject;
7+
8+
import org.springframework.stereotype.Service;
9+
10+
import com.veosaf.bookRental.dto.RentalDto;
11+
import com.veosaf.bookRental.dtoMappers.BookDtoMapper;
12+
import com.veosaf.bookRental.dtoMappers.RentalDtoMapper;
13+
import com.veosaf.bookRental.dtoMappers.UserDtoMapper;
14+
import com.veosaf.bookRental.exception.DataNotFoundException;
15+
import com.veosaf.bookRental.models.Book;
16+
import com.veosaf.bookRental.models.Rental;
17+
import com.veosaf.bookRental.models.User;
18+
import com.veosaf.bookRental.services.BookService;
19+
import com.veosaf.bookRental.services.UserService;
20+
21+
@Service
22+
public class RentalDtoMapperImpl implements RentalDtoMapper {
23+
24+
@Inject
25+
private BookDtoMapper bookDtoMapper;
26+
27+
@Inject
28+
private UserDtoMapper userDtoMapper;
29+
30+
@Inject
31+
private BookService bookService;
32+
33+
@Inject
34+
private UserService userService;
35+
36+
@Override
37+
public RentalDto toRentalDto(Rental rental) {
38+
RentalDto rentalDto = null;
39+
if (rental != null) {
40+
rentalDto = new RentalDto();
41+
rentalDto.setId(rental.getId());
42+
rentalDto.setEffectiveEndDate(rental.getEffectiveEndDate());
43+
rentalDto.setEndDate(rental.getEndDate());
44+
rentalDto.setStartDate(rental.getStartDate());
45+
if (rental.getBook() != null) {
46+
rentalDto.setBook(bookDtoMapper.toBookDto(rental.getBook()));
47+
}
48+
if (rental.getUser() != null) {
49+
rentalDto.setUser(userDtoMapper.toUserDto(rental.getUser()));
50+
}
51+
52+
}
53+
return rentalDto;
54+
}
55+
56+
@Override
57+
public List<RentalDto> toRentalsDto(List<Rental> rentals) {
58+
List<RentalDto> rentalsDto = new ArrayList<RentalDto>();
59+
if (rentals != null) {
60+
rentals.stream().forEach(rental -> rentalsDto.add(toRentalDto(rental)));
61+
}
62+
return rentalsDto;
63+
}
64+
65+
@Override
66+
public Rental toRental(RentalDto rentalDto) throws DataNotFoundException {
67+
if (rentalDto == null) {
68+
return null;
69+
}
70+
Rental rental = new Rental();
71+
rental.setId(rentalDto.getId());
72+
rental.setEffectiveEndDate(rentalDto.getEffectiveEndDate());
73+
rental.setEndDate(rentalDto.getEndDate());
74+
rental.setStartDate(rentalDto.getStartDate());
75+
Book book = null;
76+
if (rentalDto.getBook() != null && rentalDto.getBook().getId() != null) {
77+
book = bookService.getBookById(rentalDto.getBook().getId());
78+
if (book == null) {
79+
throw new DataNotFoundException("No book with id " + rentalDto.getBook().getId());
80+
}
81+
}
82+
rental.setBook(book);
83+
User user = null;
84+
if (rentalDto.getUser() != null && rentalDto.getUser().getId() != null) {
85+
user = userService.getById(rentalDto.getUser().getId());
86+
if (user == null) {
87+
throw new DataNotFoundException("No user with id " + rentalDto.getUser().getId());
88+
}
89+
}
90+
rental.setUser(user);
91+
return rental;
92+
}
93+
94+
}

0 commit comments

Comments
 (0)