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

63 lines
2.2 KiB
Java

package ru.bvn13.imdbspider.spider.composer;
import ru.bvn13.imdbspider.exceptions.composer.ComposerNotFoundException;
import ru.bvn13.imdbspider.imdb.*;
import ru.bvn13.imdbspider.spider.api.ApiFactory;
/**
* @author boyko_vn at 10.01.2019
*/
public class ImdbObjectComposerFactory {
private ApiFactory apiFactory;
public ImdbObjectComposerFactory(ApiFactory apiFactory) {
this.apiFactory = apiFactory;
}
private MovieListComposer movieListComposer;
private MovieComposer movieComposer;
private TaglineListComposer taglineListComposer;
private TaglineComposer taglineComposer;
private AkaListComposer akaListComposer;
private AkaComposer akaComposer;
public <C extends ImdbObject> ImdbObjectComposer getComposer(Class<C> clazz) throws ComposerNotFoundException {
if (clazz.isAssignableFrom(MovieList.class)) {
if (movieListComposer == null) {
movieListComposer = new MovieListComposer(apiFactory, this);
}
return movieListComposer;
} if (clazz.isAssignableFrom(Movie.class)) {
if (movieComposer == null) {
movieComposer = new MovieComposer(apiFactory, this);
}
return movieComposer;
} if (clazz.isAssignableFrom(TaglineList.class)) {
if (taglineListComposer == null) {
taglineListComposer = new TaglineListComposer(apiFactory, this);
}
return taglineListComposer;
} if (clazz.isAssignableFrom(Tagline.class)) {
if (taglineComposer == null) {
taglineComposer = new TaglineComposer(apiFactory, this);
}
return taglineComposer;
} if (clazz.isAssignableFrom(AkaList.class)) {
if (akaListComposer == null) {
akaListComposer = new AkaListComposer(apiFactory, this);
}
return akaListComposer;
} if (clazz.isAssignableFrom(Aka.class)) {
if (akaComposer == null) {
akaComposer = new AkaComposer(apiFactory, this);
}
return akaComposer;
}
throw new ComposerNotFoundException(String.format("Composer not found: %s", clazz.getName()));
}
}