// 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/GetMoviesUseCase.java
// public class GetMoviesUseCase implements UseCase {
//     public interface Callback {
//         void onMoviesLoaded(List<Movie> movies);
// 
//         void onConnectionError();
//     }
// 
//     private MovieRepository movieRepository;
//     private AsyncExecutor asyncExecutor;
//     private MainExecutor mainExecutor;
//     private Callback callback;
// 
//     public GetMoviesUseCase(MovieRepository movieRepository, AsyncExecutor asyncExecutor,
//             MainExecutor mainExecutor) {
//         this.movieRepository = movieRepository;
//         this.mainExecutor = mainExecutor;
//         this.asyncExecutor = asyncExecutor;
//     }
// 
//     public void execute(final Callback callback) {
//         this.callback = callback;
// 
//         asyncExecutor.run(this);
//     }
// 
//     @Override
//     public void run() {
//         try {
//             List<Movie> movies = movieRepository.getMovies();
// 
//             notifyMoviesLoaded(movies);
//         } catch (Exception ex) {
//             notifyConnectionError();
//         }
//     }
// 
//     private void notifyConnectionError() {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onConnectionError();
//             }
//         });
//     }
// 
//     private void notifyMoviesLoaded(final List<Movie> movies) {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onMoviesLoaded(movies);
//             }
//         });
//     }
// 
// }
// 
// 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.GetMoviesUseCase;
import com.xurxodev.moviesandroidkata.presentation.presenter.boundary.Navigator;
import java.util.List;
import javax.inject.Inject;
package com.xurxodev.moviesandroidkata.presentation.presenter;




public class MoviesPresenter {

    GetMoviesUseCase getMoviesUseCase;
// 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/GetMoviesUseCase.java
// public class GetMoviesUseCase implements UseCase {
//     public interface Callback {
//         void onMoviesLoaded(List<Movie> movies);
// 
//         void onConnectionError();
//     }
// 
//     private MovieRepository movieRepository;
//     private AsyncExecutor asyncExecutor;
//     private MainExecutor mainExecutor;
//     private Callback callback;
// 
//     public GetMoviesUseCase(MovieRepository movieRepository, AsyncExecutor asyncExecutor,
//             MainExecutor mainExecutor) {
//         this.movieRepository = movieRepository;
//         this.mainExecutor = mainExecutor;
//         this.asyncExecutor = asyncExecutor;
//     }
// 
//     public void execute(final Callback callback) {
//         this.callback = callback;
// 
//         asyncExecutor.run(this);
//     }
// 
//     @Override
//     public void run() {
//         try {
//             List<Movie> movies = movieRepository.getMovies();
// 
//             notifyMoviesLoaded(movies);
//         } catch (Exception ex) {
//             notifyConnectionError();
//         }
//     }
// 
//     private void notifyConnectionError() {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onConnectionError();
//             }
//         });
//     }
// 
//     private void notifyMoviesLoaded(final List<Movie> movies) {
//         mainExecutor.run(new Runnable() {
//             @Override
//             public void run() {
//                 callback.onMoviesLoaded(movies);
//             }
//         });
//     }
// 
// }
// 
// 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/MoviesPresenter.java
import com.xurxodev.moviesandroidkata.domain.entity.Movie;
import com.xurxodev.moviesandroidkata.domain.usecase.GetMoviesUseCase;
import com.xurxodev.moviesandroidkata.presentation.presenter.boundary.Navigator;
import java.util.List;
import javax.inject.Inject;

package com.xurxodev.moviesandroidkata.presentation.presenter;




public class MoviesPresenter {

    GetMoviesUseCase getMoviesUseCase;
    Navigator navigator;