Skip to content

Instantly share code, notes, and snippets.

@GrakovNe
Created July 1, 2018 12:11
Show Gist options
  • Select an option

  • Save GrakovNe/f01dcdbfc287aa3b211c2f8518ea2e3d to your computer and use it in GitHub Desktop.

Select an option

Save GrakovNe/f01dcdbfc287aa3b211c2f8518ea2e3d to your computer and use it in GitHub Desktop.
package org.grakovne.mds.server.rest.converters;
import org.apache.commons.math3.util.Precision;
import org.grakovne.mds.server.domain.Author;
import org.grakovne.mds.server.domain.Story;
import org.grakovne.mds.server.domain.User;
import org.grakovne.mds.server.rest.responses.StoryResponse;
import org.grakovne.mds.server.services.BookmarkService;
import org.springframework.stereotype.Service;
import java.util.stream.Collectors;
import static java.util.Optional.ofNullable;
@Service
public class StoryConverter implements MdsConverter<Story, StoryResponse> {
private final BookmarkService bookmarkService;
public StoryConverter(BookmarkService bookmarkService) {
this.bookmarkService = bookmarkService;
}
@Override
public StoryResponse getBlankResponse() {
return new StoryResponse();
}
@Override
public StoryResponse feedWith(Story story, StoryResponse response) {
response.setId(story.getId());
response.setTitle(story.getTitle());
response.setYear(story.getYear());
response.setAuthors(story
.getAuthors()
.stream()
.map(Author::getName)
.collect(Collectors.joining(", "))
);
ofNullable(story.getRating()).ifPresent(r -> response.setRating(Precision.round(r.getValue(), 2)));
ofNullable(story.getCover()).ifPresent(c -> response.setCoverId(story.getCover().getId()));
response.setAnnotation(story.getAnnotation());
response.setFileSize(story.getFileSize());
response.setFileQuality(story.getFileQuality());
response.setLength(story.getLength());
return response;
}
@Override
public StoryResponse feedWithUserData(Story story, StoryResponse response, User user) {
bookmarkService
.findLast(story.getId(), user.getId())
.ifPresent(bookmark -> response.setProgress(bookmark.getTimestamp()));
return response;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment