Skip to content

Commit 4cdb0cf

Browse files
committed
Part 17: Add UserReadMapper.java
1 parent ad47737 commit 4cdb0cf

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package spring.oldboy.mapper;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.stereotype.Component;
5+
import spring.oldboy.database.entity.User;
6+
import spring.oldboy.dto.CompanyReadDto;
7+
import spring.oldboy.dto.UserReadDto;
8+
9+
import java.util.Optional;
10+
11+
/* Будет bean-ом */
12+
@Component
13+
/* При наличии final полей в классе используем аннотацию ниже */
14+
@RequiredArgsConstructor
15+
public class UserReadMapper implements Mapper<User, UserReadDto> {
16+
17+
private final CompanyReadMapper companyReadMapper;
18+
19+
@Override
20+
public UserReadDto map(User object) {
21+
/*
22+
В зависимости от ситуации у нашего User может отсутствовать запись в поле
23+
компания, и такая ситуация требует обработки - мы либо возвращаем компанию,
24+
при наличии, в противном случае отдаем null.
25+
*/
26+
CompanyReadDto company = Optional.ofNullable(object.getCompany())
27+
.map(companyReadMapper::map)
28+
.orElse(null);
29+
30+
return new UserReadDto(
31+
object.getId(),
32+
object.getUsername(),
33+
object.getBirthDate(),
34+
object.getFirstname(),
35+
object.getLastname(),
36+
object.getRole(),
37+
company
38+
);
39+
}
40+
}

0 commit comments

Comments
 (0)