mirror of https://github.com/bvn13/imdb-spider.git
63 lines
2.2 KiB
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()));
|
|
}
|
|
|
|
}
|