//details
import javax.swing.text.html.parser.DocumentParser;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.*;
public class Movie_XML implements Movie
{
ArrayList<MovieDB> movies = new ArrayList<MovieDB>();
public ArrayList<MovieDB> searchByActorName(String nm,String key)
{
try
{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("movie.xml");
NodeList nodeList = null;
if(key.equalsIgnoreCase("actor"))
nodeList = doc.getElementsByTagName("actor");
else if(key.equalsIgnoreCase("movie"))
nodeList = doc.getElementsByTagName("name");
else
nodeList = doc.getElementsByTagName("producer");
Node temp = null, parent=null;
NodeList childs = null;
for(int i=0;i<nodeList.getLength();i++)
{
temp = nodeList.item(i);
if(temp.getTextContent().equalsIgnoreCase(nm))
{
parent = temp.getParentNode();
childs = parent.getChildNodes();
MovieDB mDB = new MovieDB();
for(int j=0;j<childs.getLength();j++)
{
Node nd = childs.item(j);
if(nd.getNodeType() == Node.ELEMENT_NODE)
{
String name = nd.getNodeName();
//System.out.println(name);
if(name.equalsIgnoreCase("id"))
{
mDB.setId(nd.getTextContent());
}
if(name.equalsIgnoreCase("name"))
{
mDB.setName(nd.getTextContent());
}
if(name.equalsIgnoreCase("producer"))
{
mDB.setProducer(nd.getTextContent());
}
if(name.equalsIgnoreCase("director"))
{
mDB.setDirector(nd.getTextContent());
}
if(name.equalsIgnoreCase("music_director"))
{
mDB.setMusic_director(nd.getTextContent());
}
if(name.equalsIgnoreCase("actor"))
{
mDB.setActor(nd.getTextContent());
}
if(name.equalsIgnoreCase("actress"))
{
mDB.setActress(nd.getTextContent());
}
}
}
movies.add(mDB);
}
}
return movies;
}
catch(Exception e)
{
throw new CustomException("err in Searching by actor name",e);
}
}
}
//this class will call the above class by sending appropriate parmeters
import java.util.*;
import java.io.*;
public class XMLDemo
{
public static void main(String[] args)
{
try
{
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
while(true)
{
System.out.println("\n Enter the Choice : ");
System.out.println(" 1 : Search By Actor Name : ");
System.out.println(" 2 : Search By Movie Name : ");
System.out.println(" 3 : Search By Producer Name : ");
System.out.println(" 4 : Quit : ");
try
{
int ch = Integer.parseInt(br.readLine());
switch(ch)
{
case 1 :
System.out.println("Enter Actor Name : ");
String actorName = br.readLine();
search(actorName,"actor");
break;
case 2 :
System.out.println("Enter Movie Name");
String movieName = br.readLine();
search(movieName,"movie");
break;
case 3 :
System.out.println("Enter Producer Name");
String producerName = br.readLine();
search(producerName,"producer");
break;
case 4 :
System.out.println("Exiting");
System.exit(0);
default :
System.out.println("Invalid Choice !");
}
}
catch(Exception e)
{
System.out.println("Invalid Choice !");
}
}//end of while
}
catch(Exception e)
{
//e.printStackTrace();
throw new CustomException("err in main",e);
}
}
static void search(String name,String key)
{
try
{
ArrayList<MovieDB> movies = new ArrayList<MovieDB>();
Movie_XML obj = new Movie_XML();
movies = obj.searchByActorName(name,key);
int i =0;
System.out.println();
for(i=0;i<movies.size();i++)
{
MovieDB mDB = movies.get(i);
System.out.println("ID : "+mDB.getId());
System.out.println("Name : "+mDB.getName());
System.out.println("Producer : "+mDB.getProducer());
System.out.println("Director : "+mDB.getDirector());
System.out.println("Music : "+mDB.getMusic_director());
System.out.println("Actor : "+mDB.getActor());
System.out.println("Actress : "+mDB.getActress());
}
System.out.println(i+" Record Found!");
}
catch(Exception e)
{
throw new CustomException("err in byActor",e);
}
}
}
//this class will hold the details of the movie(id,name,---)
import java.util.*;
public class MovieDB
{
private String id,name,year;
private ArrayList<String> actor,actress;
private String director,producer,music_director;
public MovieDB()
{
actor = new ArrayList<String>();
actress = new ArrayList<String>();
}
public void setId(String id)
{
this.id = id;
}
public void setName(String name)
{
this.name = name;
}
public void setYear(String year)
{
this.year = year;
}
public void setDirector(String director)
{
this.director = director;
}
public void setProducer(String producer)
{
this.producer = producer;
}
public void setMusic_director(String music_director)
{
this.music_director = music_director;
}
public void setActor(String actor)
{
this.actor.add(actor);
}
public void setActress(String actress)
{
this.actress.add(actress);
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
public String getProducer()
{
return producer;
}
public String getDirector()
{
return director;
}
public String getMusic_director()
{
return music_director;
}
public ArrayList<String> getActor()
{
return actor;
}
public ArrayList<String> getActress()
{
return actress;
}
}
//movie interface
import java.util.*;
public interface Movie
{
public ArrayList<MovieDB> searchByActorName(String nm,String key);
}