Implement group dto to entity mapping

This commit is contained in:
René Pfeuffer
2018-06-13 10:17:30 +02:00
parent b94e83b334
commit b09bf67959
3 changed files with 64 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
package sonia.scm.api.v2.resources;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.Mappings;
import sonia.scm.group.Group;
import java.util.stream.Collectors;
@Mapper
public abstract class GroupDto2GroupMapper {
@Mappings({
@Mapping(target = "creationDate", ignore = true),
@Mapping(target = "lastModified", ignore = true)
})
public abstract Group groupDtoToGroup(GroupDto groupDto);
@AfterMapping
void mapMembers(GroupDto dto, @MappingTarget Group target) {
target.setMembers(dto.getEmbedded().getItemsBy("members").stream().map(m -> m.getAttribute("name").asText()).collect(Collectors.toList()));
}
}

View File

@@ -2,7 +2,6 @@ package sonia.scm.api.v2.resources;
import com.google.inject.AbstractModule;
import org.mapstruct.factory.Mappers;
import sonia.scm.group.Group;
public class MapperModule extends AbstractModule {
@Override
@@ -11,5 +10,6 @@ public class MapperModule extends AbstractModule {
bind(User2UserDtoMapper.class).to(Mappers.getMapper(User2UserDtoMapper.class).getClass());
bind(Group2GroupDtoMapper.class).to(Mappers.getMapper(Group2GroupDtoMapper.class).getClass());
bind(GroupDto2GroupMapper.class).to(Mappers.getMapper(GroupDto2GroupMapper.class).getClass());
}
}