|
1 | 1 | package clap.server.adapter.outbound.persistense.mapper; |
2 | 2 |
|
3 | 3 | import clap.server.adapter.outbound.persistense.entity.task.CommentEntity; |
4 | | - |
5 | | -import clap.server.adapter.outbound.persistense.mapper.common.PersistenceMapper; |
6 | | - |
| 4 | +import clap.server.domain.model.member.Member; |
7 | 5 | import clap.server.domain.model.task.Comment; |
8 | | - |
| 6 | +import org.hibernate.Hibernate; |
9 | 7 | import org.mapstruct.Mapper; |
10 | 8 | import org.mapstruct.Mapping; |
| 9 | +import org.springframework.beans.factory.annotation.Autowired; |
11 | 10 |
|
12 | 11 | @Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class, TaskPersistenceMapper.class}) |
13 | | -public interface CommentPersistenceMapper extends PersistenceMapper<CommentEntity, Comment> { |
| 12 | +public abstract class CommentPersistenceMapper { |
| 13 | + |
| 14 | + @Autowired |
| 15 | + MemberPersistenceMapper memberPersistenceMapper; |
14 | 16 |
|
15 | | - @Override |
16 | 17 | @Mapping(source = "modified", target = "isModified") |
17 | 18 | @Mapping(source = "deleted", target = "isDeleted") |
| 19 | + @Mapping(target = "member", expression = "java(mapMember(entity))") |
18 | 20 | @Mapping(target = "task", ignore = true) |
19 | | - Comment toDomain(final CommentEntity entity); |
| 21 | + public abstract Comment toDomain(final CommentEntity entity); |
20 | 22 |
|
21 | | - @Override |
22 | 23 | @Mapping(source = "modified", target = "isModified") |
23 | 24 | @Mapping(source = "deleted", target = "isDeleted") |
24 | | - CommentEntity toEntity(final Comment domain); |
| 25 | + public abstract CommentEntity toEntity(final Comment domain); |
| 26 | + |
| 27 | + protected Member mapMember(CommentEntity entity) { |
| 28 | + if (entity == null || entity.getMember() == null || !Hibernate.isInitialized(entity.getMember())) { |
| 29 | + return null; |
| 30 | + } |
| 31 | + return memberPersistenceMapper.toDomain(entity.getMember()); |
| 32 | + } |
| 33 | + |
25 | 34 | } |
0 commit comments