2019-07-07 17:22:42 +04:00

61 lines
1.9 KiB
Java

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<TimelineDto> findAllDto() {
return convert(timelineRepository.findAll(), TimelineDto::new);
}
public List<Timeline> 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);
}
}