
import org.apache.xerces.parsers.*;
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
 
public class Dom{

public Dom(){};

// public static void main(String[] args){
//       Dom obj = new Dom();
//       Dom.parser();
//       System.out.println(obj.num_calendars);
//       System.out.println(obj.getString());
// } 

public static void parser(){
                  
         DOMParser parser = new DOMParser();  
   
         try{
             parser.parse("http://people.cs.uchicago.edu/~benedikt/cs545/assigns/l2.locxml");
             Document doc = parser.getDocument();
             NodeList locations = doc.getElementsByTagName("location"); 
             length = locations.getLength();
             //System.out.println("The locxml document contains "+ length +" files"); 
               // int files_not_found = 0;      
	     // int files_not_parsed=0;
	        num_calendars = 0;
		for (int i=0; i<length; i++){
		Element locationnode  = (Element) locations.item(i);
                NamedNodeMap attrlist = locationnode.getAttributes();
                Node urlnode = attrlist.item(attrlist.getLength()-1);
                String url = urlnode.getNodeValue();
                try{ 
			parser.parse(url);
               	        Document doc1 = parser.getDocument();
                        NodeList calendars =doc1.getElementsByTagName("personalCalendar");
			int number_of_calendars = calendars.getLength();	
			num_calendars += number_of_calendars;
                }
                catch(SAXException e){

                     System.out.println(url + " not found.");
                             files_not_found++;
               }
		catch (IOException ioe){
		    // System.out.println("I/O Error in parsing : " + ioe);
                       
		}
           }   
     
		// System.out.println(files_not_found + " files not found.");
		// System.out.println("There are " + num_calendars + " calendars");		
        }
	catch (SAXNotRecognizedException saxre){
	    // System.out.println("Sax not recognized Error in parsing : " +saxre);
        }
        catch (SAXNotSupportedException saxse){
            //System.out.println("Sax not supported Error in parsing : " + saxse);
        }
        catch (SAXParseException saxpe){
	    // System.out.println("Sax parse Error in parsing : " + saxpe);
        }
        catch (SAXException e){
	    // System.out.println("Error in parsing: " + e);
        }
	catch (IOException ioe){
	    // System.out.println("I/O Error in parsing : " + ioe);
        }
   }	


 

  public int getCalendar(){
      return num_calendars;
  }    
  public int getLength(){
      return length;
   } 
       static int files_not_found;    
       static int length;
       static int num_calendars;
}









