import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;
import java.sql.*;
import org.w3c.dom.*;

public class LoeAndmed{
  static Document d;
  static Element juur;
  static int suurim=0;
  static Connection cn;
  static Statement st;
  static Statement st2;
  static int i=0;
  
  public static void main(String argumendid[]) throws Exception{    
	d=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
	juur=d.createElement("Raamatud");
	d.appendChild(juur);  	
	failinimed(juur,"0");
  	
  	
  	
  }
  /*
   * Võtab ette teema ja trükib rekursiivselt välja kõik tema alamteemad,
   * iga kord kontrollides, kas antud teemal on raamatuid.
   * Vastasel juhul lisatakse kõik ka antud teema raamatud
   */
  static void failinimed(Element asukohtPuus,String vanem) throws Exception{
  	String teema;
  	String laps;
  		
	try{
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		cn=DriverManager.getConnection("jdbc:odbc:baas", "", "");		
		st=cn.createStatement();
		String lause="SELECT * FROM teema WHERE vanem="+vanem+" ORDER BY vanem";
		ResultSet rs1=st.executeQuery(lause);		
		while(rs1.next()){
			teema=rs1.getString("teema");
			laps=rs1.getString("id");
			Element e=d.createElement("Teema");							
			
			Element laps0=d.createElement("pealkiri");				
			laps0.appendChild(d.createTextNode(rs1.getString("teema"))); 
			e.appendChild(laps0);
			
			asukohtPuus.appendChild(e);
			String ID=rs1.getString("id");
			lisaLehed(e,ID);
			
			failinimed(e,laps);
		}
	}catch(Exception e){
		System.out.println("error:"+e);
	}
   	
   	
  	// Kirjuta kogu kupatus faili
    Transformer t=TransformerFactory.newInstance().newTransformer();
    t.transform(new DOMSource(d), new StreamResult(new FileOutputStream("DomTest.xml")));
  }
  /*
   * Leiab vastavalt ette antud ID'le konkreetse raamatu ning tema detailid
   */
 	static void lisaLehed(Element asukohtPuus, String id)throws Exception{
 		st2=cn.createStatement();
 		//String lause2="SELECT * FROM ebook WHERE teema="+id+"";
 		String lause2="SELECT ebook.pealkiri, ebook.avaldatud, autorid.perekonnanimi as autor, kirjastused.kirjastus, formaadid.formaat FROM ebook, autorid, formaadid,kirjastused WHERE ebook.teema="+id+" AND autorid.id="+id+" AND kirjastused.id="+id+" AND formaadid.id="+id+"";
		ResultSet rs2=st2.executeQuery(lause2);	
				
		while(rs2.next()){
				Element vanem=d.createElement("raamatud");
		asukohtPuus.appendChild(vanem);
			
			
			
  					Element atribuut=d.createElement("raamat");  					
	  				vanem.appendChild(atribuut);
  					// detailid
  					
  					
  					Element laps0=d.createElement("pealkiri");
			  		laps0.appendChild(d.createTextNode(rs2.getString("pealkiri")));
			  		atribuut.appendChild(laps0);
			  			  				
	  				
	  				Element laps1=d.createElement("avaldatud");
			  		laps1.appendChild(d.createTextNode(rs2.getString("avaldatud")));
			  		atribuut.appendChild(laps1);
			  		
			  		
			  		Element laps2=d.createElement("autor");
			  		laps2.appendChild(d.createTextNode(rs2.getString("autor")));
			  		atribuut.appendChild(laps2);
	  				 
	  				
	  				Element laps3=d.createElement("kirjastus");
			  		laps3.appendChild(d.createTextNode(rs2.getString("kirjastus")));
			  		atribuut.appendChild(laps3); 
			  		
			  		
			  		Element laps4=d.createElement("formaat");
			  		laps4.appendChild(d.createTextNode(rs2.getString("formaat")));
			  		atribuut.appendChild(laps4);
	  	}
 		
 	}

}