1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package br.com.treinaweb.twjobs.config;
import java.util.List;
import org.modelmapper.Converter;
import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import br.com.treinaweb.twjobs.api.jobs.dtos.JobRequest;
import br.com.treinaweb.twjobs.api.jobs.dtos.JobResponse;
import br.com.treinaweb.twjobs.core.models.Job;
import br.com.treinaweb.twjobs.core.models.Skill;
import br.com.treinaweb.twjobs.core.repositories.SkillRepository;
import lombok.RequiredArgsConstructor;
@Configuration
@RequiredArgsConstructor
public class ModelMapperConfig {
private final SkillRepository skillRepository;
@Bean
ModelMapper modelMapper() {
var modelmapper = new ModelMapper();
modelmapper.createTypeMap(JobRequest.class, Job.class)
.addMappings(mapper -> mapper
.using(toListOfSkills())
.map(JobRequest::getSkills, Job::setSkills)
);
modelmapper.createTypeMap(Job.class, JobResponse.class)
.addMappings(mapper -> mapper
.map(src -> src.getCompany().getName(), JobResponse::setCompany)
);
return modelmapper;
}
private Converter<List<Long>, List<Skill>> toListOfSkills() {
return context -> skillRepository.findAllById(context.getSource());
}
}