package ru.ulstu.activity.timeline.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.timeline.model.EventDto; import ru.ulstu.activity.timeline.model.Timeline; import ru.ulstu.activity.timeline.model.TimelineDto; import ru.ulstu.activity.timeline.repository.TimelineRepository; import java.util.List; import static ru.ulstu.core.util.StreamApiUtils.convert; @Service public class TimelineService { private final TimelineRepository timelineRepository; private final EventService eventService; public TimelineService(TimelineRepository timelineRepository, EventService eventService) { this.timelineRepository = timelineRepository; this.eventService = eventService; } public List findAllDto() { return convert(timelineRepository.findAll(), TimelineDto::new); } public List findAll() { return timelineRepository.findAll(); } @Transactional public int create(TimelineDto timelineDto) { return timelineRepository.save(copyFromDto(new Timeline(), timelineDto)).getId(); } @Transactional public Timeline save(Timeline timeline) { return timelineRepository.save(timeline); } private Timeline copyFromDto(Timeline timeline, TimelineDto timelineDto) { timeline.setEvents(eventService.findByIds(convert(timelineDto.getEvents(), EventDto::getId))); return timeline; } @Transactional public Integer update(TimelineDto timelineDto) { Timeline timeline = timelineRepository.getOne(timelineDto.getId()); return timelineRepository.save(copyFromDto(timeline, timelineDto)).getId(); } @Transactional public void delete(Integer timelineId) { Timeline timeline = timelineRepository.getOne(timelineId); timelineRepository.delete(timeline); } }