57 lines
1.8 KiB
Java

package com.gipro.giprolab.services;
import com.gipro.giprolab.models.User;
import com.gipro.giprolab.models.UserDto;
import com.gipro.giprolab.models.UserRole;
import com.gipro.giprolab.models.UserRoleDto;
import com.gipro.giprolab.repositories.UserRoleRepository;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class UserMapper {
private final UserRoleRepository userRoleRepository;
public UserMapper(UserRoleRepository userRoleRepository) {
this.userRoleRepository = userRoleRepository;
}
public Set<UserRole> rolesFromDto(Set<UserRoleDto> strings) {
return Optional.ofNullable(strings).orElse(Collections.emptySet()).stream()
.filter(Objects::nonNull)
.map(role -> userRoleRepository.findById(role.getId()).orElse(null))
.filter(Objects::nonNull)
.collect(Collectors.toSet());
}
public UserDto userEntityToUserDto(User userEntity) {
if (userEntity == null) {
return null;
}
return new UserDto(userEntity);
}
public User userDtoToUserEntity(UserDto userDto) {
if (userDto == null) {
return null;
}
final User user = new User();
user.setId(userDto.getId());
user.setLogin(userDto.getLogin());
user.setFirstName(userDto.getFirstName());
user.setLastName(userDto.getLastName());
user.setEmail(userDto.getEmail());
user.setActivated(userDto.isActivated());
final Set<UserRole> roles = this.rolesFromDto(userDto.getRoles());
if (!roles.isEmpty()) {
user.setRoles(roles);
}
return user;
}
}