imdb-spider/core/src/main/java/ru/bvn13/imdbspider/spider/composer/MovieComposer.java

43 lines
1.7 KiB
Java

package ru.bvn13.imdbspider.spider.composer;
import ru.bvn13.imdbspider.exceptions.ImdbSpiderException;
import ru.bvn13.imdbspider.exceptions.composer.ComposerNotFoundException;
import ru.bvn13.imdbspider.imdb.AkaList;
import ru.bvn13.imdbspider.imdb.Movie;
import ru.bvn13.imdbspider.imdb.MovieDataType;
import ru.bvn13.imdbspider.imdb.TaglineList;
import ru.bvn13.imdbspider.spider.api.ApiFactory;
import ru.bvn13.imdbspider.spider.tasker.Task;
/**
* @author boyko_vn at 15.01.2019
*/
public class MovieComposer extends AbstractImdbObjectComposer implements ImdbObjectComposer<Movie> {
private TaglineListComposer taglineListComposer;
private AkaListComposer akaListComposer;
public MovieComposer(ApiFactory apiFactory, ImdbObjectComposerFactory imdbObjectComposerFactory) throws ComposerNotFoundException {
super(apiFactory, imdbObjectComposerFactory);
taglineListComposer = (TaglineListComposer) this.imdbObjectComposerFactory.getComposer(TaglineList.class);
akaListComposer = (AkaListComposer) this.imdbObjectComposerFactory.getComposer(AkaList.class);
}
@Override
public Movie compose(Task task) throws ImdbSpiderException {
Movie movie = new Movie();
apiFactory.fillUpImdbObject(movie, task);
for (Task nestedTask : task.getNestedTasks()) {
apiFactory.fillUpImdbObject(movie, nestedTask);
if (nestedTask.getDataType().equals(MovieDataType.TAGLINES)) {
movie.setTaglineList(taglineListComposer.compose(nestedTask));
}
if (nestedTask.getDataType().equals(MovieDataType.AKAS)) {
movie.setAkaList(akaListComposer.compose(nestedTask));
}
}
return movie;
}
}