import java.awt.event.*;
import java.awt.Color;
import javax.swing.*;
import java.applet.*;
import java.lang.*;
import java.util.*;
import java.awt.*;
import java.io.*;

public class Movies extends Applet implements ActionListener 
{
    String[] yearStr=new String[100];
    String[] genreStr=new String[100];
    String[] movieStr=new String[100];
    String[] actorStr=new String[100];
    String[] actressStr=new String[100];
    String[] directorStr=new String[100];
    
    void readList(String[] yrstr, String[] gnstr,
                    String[] mvstr, String[] arstr,
                    String[] acstr, String[] drstr)
    {
        for(int i=0; i<100; i++)
        {
            yearStr[i]=yrstr[i];
            genreStr[i]=gnstr[i];
            movieStr[i]=mvstr[i];
            actorStr[i]=arstr[i];
            actressStr[i]=acstr[i];
            directorStr[i]=drstr[i];
        }
    }
        
        
    Choice year=new Choice();
    Label yearLb=new Label("Year");
    Choice genre=new Choice();
    Label genreLb=new Label("Genre");
    
    TextField movie=new TextField(70);
    Label movieLb=new Label("Movie");
    TextField actor=new TextField(30);
    Label actorLb=new Label("Actor");
    TextField actress=new TextField(30);
    Label actressLb=new Label("Actress");
    TextField director=new TextField(30);
    Label directorLb=new Label("Director");
    
    Button search=new Button("Search");    
    TextArea results=new TextArea(10,75);

    FileReader yearSm;
    FileReader genreSm;
    FileReader movieSm;
    FileReader actorSm;
    FileReader actressSm;
    FileReader directorSm;

    BufferedReader yearIn;
    BufferedReader genreIn;
    BufferedReader movieIn;
    BufferedReader actorIn;
    BufferedReader actressIn;
    BufferedReader directorIn;

    public void init()
    {
            setBackground(Color.LIGHT_GRAY);
        
            genre.insert("Drama",0);
            genre.insert("Comedy",1);
            genre.insert("Romance",2);
            genre.insert("Suspense",3);
            genre.insert("Action",4);
            genre.insert("Sci-Fi",5);
        
            year.insert("2000",0);
            year.insert("2001",1);
        
            add(movieLb); add(movie); add(actorLb); add(actor);
            add(actressLb); add(actress); add(directorLb); 
            add(director); add(yearLb); add(year);
            add(genreLb); add(genre); add(search); add(results);
        
            search.addActionListener(this);

        try
        {
            String[] yearRd=new String[100];
            String[] genreRd=new String[100];
            String[] movieRd=new String[100];
            String[] actorRd=new String[100];
            String[] actressRd=new String[100];
            String[] directorRd=new String[100];
            
            yearSm=new FileReader("Year.txt");
            genreSm=new FileReader("Genre.txt");
            movieSm=new FileReader("Movie.txt");
            actorSm=new FileReader("Actor.txt");
            actressSm=new FileReader("Actress.txt");
            directorSm=new FileReader("Director.txt");
                       
            yearIn=new BufferedReader(yearSm);
            genreIn=new BufferedReader(genreSm);
            movieIn=new BufferedReader(movieSm);
            actorIn=new BufferedReader(actorSm);
            actressIn=new BufferedReader(actressSm);
            directorIn=new BufferedReader(directorSm);
            
            for(int i=0; i<100; i++)
            {
                yearRd[i]=yearIn.readLine();
                genreRd[i]=genreIn.readLine();
                movieRd[i]=movieIn.readLine();
                actorRd[i]=actorIn.readLine();
                actressRd[i]=actressIn.readLine();
                directorRd[i]=directorIn.readLine();
            }
            
            readList(yearRd,genreRd,movieRd,
                        actorRd,actressRd,directorRd);
            yearIn.close();

        }
        catch(IOException e)
        {
             System.out.println("Exception: "+e);

        }
        finally
        {
            ;
        }

    }
 
    public void actionPerformed(ActionEvent e) 
    {
        int x=0;
        int index=0;
        int range=0;
        int[] list;
        list=new int[20];
        String msgstr="";
                    
        Object buttonPressed=e.getSource();
        
        if(buttonPressed==search)
        {
            results.setText("");
            if(genre.getItem(0).compareTo("2000")==0)
            {
                range=0;
            }
            else
            {
                range=50;
            }
            if(movie.getText().length()>0)
            {
                for(int i=range; i<range+50; i++)
                {
                    if(movie.getText().compareToIgnoreCase(
                    movieStr[i])==0)
                    {
                        index=i;
                        break;
                    }
                }
                results.setText("Actor: "+actorStr[index]+"\n"+
                                "Actress: "+actressStr[index]+"\n"+
                                "Director: "+directorStr[index]+"\n"+
                                "Genre: "+genreStr[index]+"\n"+
                                "Year: "+yearStr[index]);
            }
            else
            {
                ;
            }
            if(actor.getText().length()>0)
            {                
                for(int i=range; i<range+50; i++)
                {
                    if(actor.getText().compareToIgnoreCase(
                    actorStr[i])==0)
                    {
                        list[x]=i;
                        x++;
                    }
                } x=0;
                msgstr+="Recommendations:\n\n";
                for(int i=range; i<range+50; i++)
                {
                    if(list[x]==i)
                    {
                        x++;
                        msgstr+=yearStr[i]+" "+movieStr[i]+"\n";
                    }
                    results.setText(msgstr);
                }x=0;
            }
            else
            {
                ;
            }
            if(actress.getText().length()>0)
            {
                for(int i=range; i<range+50; i++)
                {
                    if(actress.getText().compareToIgnoreCase(
                    actressStr[i])==0)
                    {
                        list[x]=i;
                        x++;
                    }
                } x=0;
                msgstr+="Recommendations:\n\n";
                for(int i=range; i<range+50; i++)
                {
                    if(list[x]==i)
                    {
                        x++;
                        msgstr+=yearStr[i]+" "+movieStr[i]+"\n";
                    }
                    results.setText(msgstr);
                } x=0;
            }
            else
            {
                ;
            }
            if(director.getText().length()>0)
            {
                for(int i=range; i<range+50; i++)
                {
                    if(director.getText().compareToIgnoreCase(
                    directorStr[i])==0)
                    {
                        list[x]=i;
                        x++;
                    }
                } x=0;
                msgstr+="Recommendations:\n\n";
                for(int i=range; i<range+50; i++)
                {
                    if(list[x]==i)
                    {
                        x++;
                        msgstr+=yearStr[i]+" "+movieStr[i]+"\n";
                    }
                    results.setText(msgstr);
                }
            }
            else
            {
                ;
            }
            movie.setText("");
            actor.setText("");
            actress.setText("");
            director.setText("");
        }
    }
}