// Path: app/src/main/java/com/xurxodev/moviesandroidkata/domain/entity/Movie.java
// public class Movie {
//     private String image;
//     private String title;
//     private String overview;
// 
//     public Movie(String image, String title, String overview) {
//         this.image = image;
//         this.title = title;
//         this.overview = overview;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public String getOverview() {
//         return overview;
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/domain/usecase/GetMovieDetailUseCase.java
// public class GetMovieDetailUseCase implements UseCase {
// 
//     public interface Callback {
//         void onCompetitorDetailLoaded(final Movie competitor);
// 
//         void onCompetitorDetailNotFound();
// 
//         void onConnectionError();
//     }
// 
//     private MovieRepository competitorRepository;
//     private AsyncExecutor asyncExecutor;
//     private MainExecutor mainExecutor;
//     private Callback callback;
//     private String movieTitle;
// 
//     public GetMovieDetailUseCase(MovieRepository competitorRepository, AsyncExecutor asyncExecutor,
//             MainExecutor mainExecutor) {
//         this.competitorRepository = competitorRepository;
//         this.asyncExecutor = asyncExecutor;
//         this.mainExecutor = mainExecutor;
//     }
// 
//     public void execute(String movieTitle, Callback callback) {
//         this.movieTitle = movieTitle;
// 
//         this.callback = callback;
//         this.asyncExecutor.run(this);
//     }
// 
//     @Override
//     public void run() {
//         Movie movie = competitorRepository.getMovieByTitle(this.movieTitle);
// 
//         notifyCompetitorDetailsLoaded(movie);
// 
//         //TODO:call to notify error
//     }
// 
//     private void notifyError() {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onConnectionError();
//             }
//         });
//     }
// 
//     private void notifyCompetitorDetailsLoaded(final Movie movie) {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onCompetitorDetailLoaded(movie);
//             }
//         });
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/presentation/presenter/boundary/Navigator.java
// public interface Navigator {
//     void openMovieDetail(Movie movie);
// }


import com.xurxodev.moviesandroidkata.domain.entity.Movie;
import com.xurxodev.moviesandroidkata.domain.usecase.GetMovieDetailUseCase;
import com.xurxodev.moviesandroidkata.presentation.presenter.boundary.Navigator;
package com.xurxodev.moviesandroidkata.presentation.presenter;


public class MovieDetailPresenter {

    private View view;
    private GetMovieDetailUseCase getMovieDetailUseCase;


// Path: app/src/main/java/com/xurxodev/moviesandroidkata/domain/entity/Movie.java
// public class Movie {
//     private String image;
//     private String title;
//     private String overview;
// 
//     public Movie(String image, String title, String overview) {
//         this.image = image;
//         this.title = title;
//         this.overview = overview;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public String getOverview() {
//         return overview;
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/domain/usecase/GetMovieDetailUseCase.java
// public class GetMovieDetailUseCase implements UseCase {
// 
//     public interface Callback {
//         void onCompetitorDetailLoaded(final Movie competitor);
// 
//         void onCompetitorDetailNotFound();
// 
//         void onConnectionError();
//     }
// 
//     private MovieRepository competitorRepository;
//     private AsyncExecutor asyncExecutor;
//     private MainExecutor mainExecutor;
//     private Callback callback;
//     private String movieTitle;
// 
//     public GetMovieDetailUseCase(MovieRepository competitorRepository, AsyncExecutor asyncExecutor,
//             MainExecutor mainExecutor) {
//         this.competitorRepository = competitorRepository;
//         this.asyncExecutor = asyncExecutor;
//         this.mainExecutor = mainExecutor;
//     }
// 
//     public void execute(String movieTitle, Callback callback) {
//         this.movieTitle = movieTitle;
// 
//         this.callback = callback;
//         this.asyncExecutor.run(this);
//     }
// 
//     @Override
//     public void run() {
//         Movie movie = competitorRepository.getMovieByTitle(this.movieTitle);
// 
//         notifyCompetitorDetailsLoaded(movie);
// 
//         //TODO:call to notify error
//     }
// 
//     private void notifyError() {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onConnectionError();
//             }
//         });
//     }
// 
//     private void notifyCompetitorDetailsLoaded(final Movie movie) {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onCompetitorDetailLoaded(movie);
//             }
//         });
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/presentation/presenter/boundary/Navigator.java
// public interface Navigator {
//     void openMovieDetail(Movie movie);
// }


// Path: app/src/main/java/com/xurxodev/moviesandroidkata/presentation/presenter/MovieDetailPresenter.java
import com.xurxodev.moviesandroidkata.domain.entity.Movie;
import com.xurxodev.moviesandroidkata.domain.usecase.GetMovieDetailUseCase;
import com.xurxodev.moviesandroidkata.presentation.presenter.boundary.Navigator;

package com.xurxodev.moviesandroidkata.presentation.presenter;


public class MovieDetailPresenter {

    private View view;
    private GetMovieDetailUseCase getMovieDetailUseCase;


    private Movie movie;