Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5e2869d

Browse files
author
Ivan Franchin
committed
Refactor the mappings using the from() method in the classes
1 parent 3636f25 commit 5e2869d

File tree

7 files changed

+38
-32
lines changed

7 files changed

+38
-32
lines changed

‎book-api/src/main/java/com/ivanfranchin/bookapi/model/Book.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.ivanfranchin.bookapi.model;
22

3+
import com.ivanfranchin.bookapi.rest.dto.CreateBookRequest;
34
import jakarta.persistence.Entity;
45
import jakarta.persistence.Id;
56
import jakarta.persistence.Table;
@@ -18,4 +19,8 @@ public class Book {
1819
private String isbn;
1920

2021
private String title;
22+
23+
public static Book from(CreateBookRequest createBookRequest) {
24+
return new Book(createBookRequest.isbn(), createBookRequest.title());
25+
}
2126
}

‎book-api/src/main/java/com/ivanfranchin/bookapi/model/User.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.ivanfranchin.bookapi.model;
22

3+
import com.ivanfranchin.bookapi.rest.dto.SignUpRequest;
4+
import com.ivanfranchin.bookapi.security.SecurityConfig;
35
import jakarta.persistence.Entity;
46
import jakarta.persistence.GeneratedValue;
57
import jakarta.persistence.GenerationType;
@@ -35,4 +37,14 @@ public User(String username, String password, String name, String email, String
3537
this.email = email;
3638
this.role = role;
3739
}
40+
41+
public static User from(SignUpRequest signUpRequest) {
42+
return new User(
43+
signUpRequest.username(),
44+
signUpRequest.password(),
45+
signUpRequest.name(),
46+
signUpRequest.email(),
47+
SecurityConfig.USER
48+
);
49+
}
3850
}

‎book-api/src/main/java/com/ivanfranchin/bookapi/rest/AuthController.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.ivanfranchin.bookapi.rest.dto.AuthResponse;
66
import com.ivanfranchin.bookapi.rest.dto.LoginRequest;
77
import com.ivanfranchin.bookapi.rest.dto.SignUpRequest;
8-
import com.ivanfranchin.bookapi.security.SecurityConfig;
98
import com.ivanfranchin.bookapi.service.UserService;
109
import jakarta.validation.Valid;
1110
import lombok.RequiredArgsConstructor;
@@ -46,17 +45,7 @@ public AuthResponse signUp(@Valid @RequestBody SignUpRequest signUpRequest) {
4645
throw new DuplicatedUserInfoException(String.format("Email %s is already been used", signUpRequest.email()));
4746
}
4847

49-
User user = userService.saveUser(createUser(signUpRequest));
48+
User user = userService.saveUser(User.from(signUpRequest));
5049
return new AuthResponse(user.getId(), user.getName(), user.getRole());
5150
}
52-
53-
private User createUser(SignUpRequest signUpRequest) {
54-
User user = new User();
55-
user.setUsername(signUpRequest.username());
56-
user.setPassword(signUpRequest.password());
57-
user.setName(signUpRequest.name());
58-
user.setEmail(signUpRequest.email());
59-
user.setRole(SecurityConfig.USER);
60-
return user;
61-
}
6251
}

‎book-api/src/main/java/com/ivanfranchin/bookapi/rest/BookController.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,23 @@ public class BookController {
3636
public List<BookDto> getBooks(@RequestParam(value = "text", required = false) String text) {
3737
List<Book> books = (text == null) ? bookService.getBooks() : bookService.getBooksContainingText(text);
3838
return books.stream()
39-
.map(this::toBookDto)
39+
.map(BookDto::from)
4040
.collect(Collectors.toList());
4141
}
4242

4343
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
4444
@ResponseStatus(HttpStatus.CREATED)
4545
@PostMapping
4646
public BookDto createBook(@Valid @RequestBody CreateBookRequest createBookRequest) {
47-
Book book = toBook(createBookRequest);
48-
return toBookDto(bookService.saveBook(book));
47+
Book book = Book.from(createBookRequest);
48+
return BookDto.from(bookService.saveBook(book));
4949
}
5050

5151
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
5252
@DeleteMapping("/{isbn}")
5353
public BookDto deleteBook(@PathVariable String isbn) {
5454
Book book = bookService.validateAndGetBook(isbn);
5555
bookService.deleteBook(book);
56-
return toBookDto(book);
57-
}
58-
59-
private Book toBook(CreateBookRequest createBookRequest) {
60-
return new Book(createBookRequest.isbn(), createBookRequest.title());
61-
}
62-
63-
private BookDto toBookDto(Book book) {
64-
return new BookDto(book.getIsbn(), book.getTitle());
56+
return BookDto.from(book);
6557
}
6658
}

‎book-api/src/main/java/com/ivanfranchin/bookapi/rest/UserController.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,32 +29,28 @@ public class UserController {
2929
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
3030
@GetMapping("/me")
3131
public UserDto getCurrentUser(@AuthenticationPrincipal CustomUserDetails currentUser) {
32-
return toUserDto(userService.validateAndGetUserByUsername(currentUser.getUsername()));
32+
return UserDto.from(userService.validateAndGetUserByUsername(currentUser.getUsername()));
3333
}
3434

3535
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
3636
@GetMapping
3737
public List<UserDto> getUsers() {
3838
return userService.getUsers().stream()
39-
.map(this::toUserDto)
39+
.map(UserDto::from)
4040
.collect(Collectors.toList());
4141
}
4242

4343
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
4444
@GetMapping("/{username}")
4545
public UserDto getUser(@PathVariable String username) {
46-
return toUserDto(userService.validateAndGetUserByUsername(username));
46+
return UserDto.from(userService.validateAndGetUserByUsername(username));
4747
}
4848

4949
@Operation(security = {@SecurityRequirement(name = BASIC_AUTH_SECURITY_SCHEME)})
5050
@DeleteMapping("/{username}")
5151
public UserDto deleteUser(@PathVariable String username) {
5252
User user = userService.validateAndGetUserByUsername(username);
5353
userService.deleteUser(user);
54-
return toUserDto(user);
55-
}
56-
57-
public UserDto toUserDto(User user) {
58-
return new UserDto(user.getId(), user.getUsername(), user.getName(), user.getEmail(), user.getRole());
54+
return UserDto.from(user);
5955
}
6056
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
package com.ivanfranchin.bookapi.rest.dto;
22

3+
import com.ivanfranchin.bookapi.model.Book;
4+
35
public record BookDto(String isbn, String title) {
6+
7+
public static BookDto from(Book book) {
8+
return new BookDto(book.getIsbn(), book.getTitle());
9+
}
410
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
package com.ivanfranchin.bookapi.rest.dto;
22

3+
import com.ivanfranchin.bookapi.model.User;
4+
35
public record UserDto(Long id, String username, String name, String email, String role) {
6+
7+
public static UserDto from(User user) {
8+
return new UserDto(user.getId(), user.getUsername(), user.getName(), user.getEmail(), user.getRole());
9+
}
410
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /