/** Movie represents a movie. It includes title of the move, director(s), casts, year made */
public class Movie {
    private String title;
    private String[] directors;
    private String[] casts;
    private int year;
    
    public Movie(String title, String[] directors, String[] casts, int year) {
        this.title = title;
        this.directors = new String[directors.length];
        for(int i = 0; i < directors.length; i++) {
             this.directors[i] = directors[i];
        }
        this.casts = new String[casts.length];
        for(int i = 0; i < casts.length; i++) {
              this.casts[i] = casts[i];
        }
        this.year = year;
    }
    
    public boolean searchTitle(String keyword) {
        String tempTitle = title.toLowerCase();
        String tempWord = keyword.toLowerCase();
        return tempTitle.indexOf(tempWord) != -1;
    }
    
    public boolean searchDirectors(String keyword) {
        String tempDir;
        String tempWord = keyword.toLowerCase();
        for(int i = 0; i < directors.length; i++) {
            tempDir = directors[i].toLowerCase();
            if(tempDir.indexOf(tempWord) != -1) {
                return true;
            } 
        }
        return false;
    }
    
    public boolean searchCasts(String keyword) {
        String tempCast;
        String tempWord = keyword.toLowerCase();
        for(int i = 0; i < casts.length; i++) {
            tempCast = casts[i].toLowerCase();
            if(tempCast.indexOf(tempWord) != -1) {
                return true;
            } 
        }
        return false;
    }
    
    public boolean search(String keyword) {
        return searchTitle(keyword) || searchDirectors(keyword) || searchCasts(keyword);
    }
    
    public void showInfo() {
        System.out.println("Title: " + title);
        System.out.print("Directors: " + directors[0]);
        for(int i = 1; i < directors.length; i++) {
            System.out.print(", " + directors[i]);
        }
        System.out.println();
        System.out.print("Casts: " + casts[0]);
        for(int i = 1; i < casts.length; i++) {
            System.out.print(", " + casts[i]);
        }
        System.out.println();
        System.out.println("Year: " + year);
    }
    
    public static void main(String[] args) {
        Movie movie = new Movie("The Matrix",  new String[]{"Andy Wachowski", "Larry Wachowski"}, 
                                                    new String[]{"Keanu Reeves", "Laurence Fishburne","Carrie-Anne Moss", "Hugo Weaving"},1999);
        movie.showInfo();
        System.out.println("searchTitle(\"matrix\") : " + movie.searchTitle("matrix"));
        System.out.println("searchTitle(\"hello\") : " + movie.searchTitle("hello"));
        System.out.println("searchDirectors(\"Andy\") : " + movie.searchDirectors("Andy"));
        System.out.println("searchDirectors(\"Charles\") : " + movie.searchDirectors("Charles"));
        System.out.println("searchDirectors(\"chowsk\") : " + movie.searchDirectors("chowsk"));
        System.out.println("searchCasts(\"Charles\") : " + movie.searchCasts("Charles"));
        System.out.println("searchCasts(\"Hugo Weaving\") :  " + movie.searchCasts("Hugo Weaving"));
        System.out.println("searchCasts(\"reeves\") : " + movie.searchCasts("reeves"));
    }
}
    
    
