Skip to content

Commit ad47737

Browse files
committed
Part 17: Add UserCreateEditMapper.java
1 parent d181201 commit ad47737

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package spring.oldboy.mapper;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.stereotype.Component;
5+
import spring.oldboy.database.entity.Company;
6+
import spring.oldboy.database.entity.User;
7+
import spring.oldboy.database.repository.company_repository.CompanyRepository;
8+
import spring.oldboy.dto.UserCreateEditDto;
9+
10+
import java.util.Optional;
11+
12+
@Component
13+
@RequiredArgsConstructor
14+
public class UserCreateEditMapper implements Mapper<UserCreateEditDto, User> {
15+
16+
private final CompanyRepository companyRepository;
17+
18+
/*
19+
Метод позволяем копировать полученные данные в старую
20+
запись user, используется в методе *.update() слоя сервисов.
21+
*/
22+
@Override
23+
public User map(UserCreateEditDto fromObject, User toObject) {
24+
copy(fromObject, toObject);
25+
return toObject;
26+
}
27+
28+
/* Метод позволяем создавать новую запись user, используется в методе *.create() слоя сервисов. */
29+
@Override
30+
public User map(UserCreateEditDto object) {
31+
User user = new User();
32+
copy(object, user);
33+
34+
return user;
35+
}
36+
37+
/* Копируем поля полученные через форму (или URL) в user */
38+
private void copy(UserCreateEditDto object, User user) {
39+
user.setUsername(object.getUsername());
40+
user.setFirstname(object.getFirstname());
41+
user.setLastname(object.getLastname());
42+
user.setBirthDate(object.getBirthDate());
43+
user.setRole(object.getRole());
44+
user.setCompany(getCompany(object.getCompanyId()));
45+
}
46+
47+
/* Получаем данные о компании связанной с user */
48+
public Company getCompany(Integer companyId) {
49+
return Optional.ofNullable(companyId)
50+
.flatMap(id -> companyRepository.findById(id))
51+
.orElse(null);
52+
}
53+
}

0 commit comments

Comments
 (0)