Skip to content

Commit e790787

Browse files
committed
ModelMapper code refactor using java generic
1 parent 57849c8 commit e790787

File tree

3 files changed

+50
-4
lines changed

3 files changed

+50
-4
lines changed

src/main/java/com/manir/springbootecommercerestapi/service/Impl/FaqServiceImpl.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.manir.springbootecommercerestapi.repository.FaqRepository;
77
import com.manir.springbootecommercerestapi.service.CommonService;
88
import com.manir.springbootecommercerestapi.service.FaqService;
9+
import com.manir.springbootecommercerestapi.service.MapperService;
910
import lombok.AllArgsConstructor;
1011
import org.modelmapper.ModelMapper;
1112
import org.springframework.stereotype.Service;
@@ -21,15 +22,15 @@ public class FaqServiceImpl implements FaqService {
2122
private final FaqRepository faqRepository;
2223
@Resource(name = "modelMapper")
2324
private final ModelMapper modelMapper;
24-
@Resource(name = "commonService")
25-
private final CommonService commonService;
25+
@Resource(name = "mapperService")
26+
private final MapperService<Faq, FaqDto> mapperService;
2627

2728
@Override
2829
public FaqDto addFaq(FaqDto faqDto) {
29-
Faq faq = mapToEntity(faqDto);
30+
Faq faq = mapperService.mapToEntity(faqDto);
3031
Faq addedFaq = faqRepository.save(faq);
3132

32-
return mapToDto(addedFaq);
33+
return mapperService.mapToDto(addedFaq);
3334
}
3435

3536
@Override
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.manir.springbootecommercerestapi.service;
2+
3+
public interface MapperService<E, D>{
4+
//entity mapper
5+
E mapToEntity(D type);
6+
7+
//dto mapper
8+
D mapToDto(E type);
9+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.manir.springbootecommercerestapi.service;
2+
3+
import lombok.AllArgsConstructor;
4+
import org.modelmapper.ModelMapper;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Component;
7+
import org.springframework.stereotype.Service;
8+
9+
import javax.annotation.Resource;
10+
11+
@AllArgsConstructor
12+
@Service
13+
@Component("mapperService")
14+
public class MapperServiceImpl<E, D> implements MapperService<E, D> {
15+
16+
17+
@Resource(name = "modelMapper")
18+
private final ModelMapper modelMapper;
19+
@Resource
20+
private final Class<E> entityClass;
21+
@Resource
22+
private final Class<D> dtoClass;
23+
24+
25+
@Override
26+
public E mapToEntity(D type) {
27+
E model = modelMapper.map(type, entityClass);
28+
return model;
29+
}
30+
31+
@Override
32+
public D mapToDto(E type) {
33+
D dto = modelMapper.map(type, dtoClass);
34+
return dto;
35+
}
36+
}

0 commit comments

Comments
 (0)