import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.Object.*;
import java.sql.*;
import java.util.List;
import java.util.LinkedList;

// servleti puhul kus luua ühendus?
//<img src='u.gif'>????
// mida tähendab implements?
//muutmise jaoks vaja eraldi vana kustutada ja uus luua?


/*
 * VAJA TEHA !
 * hetke asukoht failipuus
 * muutmine link
 */
public class EMaterjal extends HttpServlet{
	protected static int ID=0;	 				// hetkel käesolev teema
	protected static Connection cn;
	protected static HttpServletRequest kysimus;
	protected static HttpServletResponse vastus;
	protected static PrintWriter pw;
	protected static String pealkiri;
	protected static List asukohaTee;
	
	public EMaterjal(){
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");			
			cn=DriverManager.getConnection("jdbc:odbc:baas", "", "");			
		}catch(Exception e){
			System.out.println("viga(EMaterjal:konstruktor):"+e);
		}		
	}
	/*
	 * Pannakse kokku lehe üldine kujundus
	 */
	//*****************************************//
	private void koostaLeht(){
		try{
			//pw.println(asukohaTee);
			kuvaKaustad();
			kuvaSisu();
		}catch(Exception e){		
			pw.println("viga(EMaterjal:koostaLeht):"+e);
		}
	}
	/*
	 * Kuvab vastavalt käesolevale ID-le kaustad
	 */
	//*****************************************//
	private void kuvaKaustad(){
		Statement st; //
		ResultSet rs; // tulemuste kogum
		String lause; // sql päring
		String sisu;  // väljatrükk veebilehele
		String teemad="";		
		
		try{			
			st=cn.createStatement();				
			lause="SELECT * FROM teema WHERE vanem="+ID+" ORDER by teema";						
			rs=st.executeQuery(lause);								
			if(ID!=0){pealkiri=hetkeKaust();}else{pealkiri="E-Materjalide andmebaas";}
			sisu="<h1><font face='System' color='White'>"+pealkiri+"</font></h1><br/>\n"+
			"<table border=1 width=900>\n"+
			"<tr><td align=center><font face='System' color='White'>Teema</font></td><td align=center><font face='System' color='White'>Materjale</font></td></tr>\n";				
			
			//asukohaTee.add(hetkeKaust(ID));
			
			while(rs.next()){										
					
					sisu+="<tr>\n"+
						"<td width='700'>"+
						"<font face='System' color='White'>";						
						String nr=rs.getString("ID");
						String vanem=rs.getString("vanem");
						teemad=rs.getString("teema");
						sisu+="<img src=/examples/servlet/Pilt width=7 height=7><a href='"+kysimus.getRequestURI()+"?id="+nr+"'> "+teemad+												
						"</a></font></td>"+
						"<td align=center><font face='System' color='White'>"+failideArv(Integer.parseInt(nr))+"</font></td>"+						
						"<td align=center><a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=1&operatsioon=2&modifitseeritav="+nr+">muuda</a>  |  <a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=1&operatsioon=3&modifitseeritav="+nr+">kustuta</a></td>"+
					"\n</tr>\n";
			}			
			sisu+="</table><a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=2&operatsioon=1>Lisa uus materjal</a> | <a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=1&operatsioon=1>Lisa uus teema</a></center>";
			pw.println(sisu);					
		}catch(Exception e){
			pw.println("viga(EMaterjal:kuvaKaustad):"+e);
		}				
	}
	/*
	 * Kuvab ID-le vastava kausta materjalid
	 */
	//*****************************************//	
	private void kuvaSisu(){
			Statement st; //
			ResultSet rs; // tulemuste kogum
			String lause; // sql päring
			String sisu="";  // väljatrükk veebilehele
			String sort="teema.teema";
			String sorteeri;
			String nr="";
		try{
			sorteeri=kysimus.getParameter("sort");
			if(sorteeri==null){
				sorteeri="teema";
			}
			st=cn.createStatement();			
			lause="select count(teema) as nr from ebook where teema="+ID;			
			rs=st.executeQuery(lause);
			rs.next();			
			int arv=Integer.parseInt(rs.getString("nr"));
			if(arv==0){
				// 
			}else{				
				st=cn.createStatement();			
				lause="SELECT ebook.id, ebook.teema ,ebook.pealkiri as nimi, ebook.asukoht,ebook.avaldatud, autorid.perekonnanimi as perek, autorid.eesnimi as eesn, kirjastused.kirjastus,formaadid.formaat FROM ebook, autorid,kirjastused, formaadid WHERE autorid.id=ebook.autor and kirjastused.ID=ebook.kirjastus and formaadid.ID=ebook.formaat and ebook.teema="+ID+" order by ebook."+sorteeri+";";
				//lause="SELECT ebook.id, ebook.teema ,ebook.pealkiri as nimi, ebook.asukoht,ebook.avaldatud, autorid.perekonnanimi as perek, autorid.eesnimi as eesn, kirjastused.kirjastus,formaadid.formaat FROM ebook, autorid,kirjastused, formaadid WHERE ebook.teema="+ID+" autorid.id=ebook.autor and formaadid.ID=ebook.formaat order by "+sortLause(sorteeri)+";";
				rs=st.executeQuery(lause);
				sisu+="<center><table border=1 width=900>\n<tr>"+
				"<td align=center><font face='System' color='White'><a href="+kysimus.getRequestURI()+"?id="+ID+"&sort="+"pealkiri"+">Fail</a></font></td>"+
				"<td align=center><font face='System' color='White'><a href="+kysimus.getRequestURI()+"?id="+ID+"&sort="+"autor"+">Autor</a></font></td>"+
				"<td align=center><font face='System' color='White'><a href="+kysimus.getRequestURI()+"?id="+ID+"&sort="+"avaldatud"+">Avaldatud</a></font></td>"+
				"<td align=center><font face='System' color='White'><a href="+kysimus.getRequestURI()+"?id="+ID+"&sort="+"kirjastus"+">Kirjastus</a></font></td>"+
				"<td align=center><font face='System' color='White'><a href="+kysimus.getRequestURI()+"?id="+ID+"&sort="+"formaat"+">Formaat</a></font></td>"+
				"</tr>\n";
				while(rs.next()){
						nr=rs.getString("ID");
						sisu+="<tr>\n"+
							"<td width='400'><font face='System' color='White'>\n";
							String asukoht=rs.getString("asukoht");
							sisu+="<a href='"+asukoht+"'>"+
							rs.getString("nimi")+
							"</a>\n"+
							"</font></td><td><font face='System' color='White'>\n"+
							rs.getString("eesn")+" "+rs.getString("perek")+
							"</font></td>\n<td><font face='System' color='White'>\n"+
							rs.getString("avaldatud")+
							"</font></td>\n<td><font face='System' color='White'>\n"+
							rs.getString("kirjastus")+
							"</font></td>\n<td align=center><font face='System' color='White'>\n"+
							rs.getString("formaat")+
							"</font></td><td><font face='System' color='White'><a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=2&operatsioon=2&modifitseeritav="+nr+">muuda</a></font></td>"+
							"</font></td><td><font face='System' color='White'><a href=/examples/servlet/Administreerimine/?id="+ID+"&lk=2&operatsioon=3&modifitseeritav="+nr+">kustuta</a></font></td>"+
						"\n</tr>\n";
				}
				sisu+="</table>"+				
				"</center>";	
				pw.println(sisu);				
			}	
		}catch(Exception e){
			pw.println("viga(EMaterjal:kuvaSisu):"+e);
		}
	}
	private String sortLause(String sisse){
		if((sisse=="pealkiri")||(sisse=="avaldatud")){
			sisse="ebook."+sisse;
		}else if(sisse=="formaat"){
			sisse="formaadid."+sisse;
		}else if(sisse=="kirjastus"){
			sisse="kirjastused."+sisse;
		}else if(sisse=="autor"){
			sisse="autorid.eesnimi and autorid.perekonnanimi";
		}
		return sisse;
	}
	//*****************************************//
	private int failideArv(int kaust){
		int arv=0;	  // materjalide arv antud kaustas
		Statement st; //
		ResultSet rs; // tulemuste kogum
		String lause; // sql päring
		
		try{
			st=cn.createStatement();			
			lause="select count(teema) as nr from ebook where teema="+kaust;			
			rs=st.executeQuery(lause);
			rs.next();			
			arv=Integer.parseInt(rs.getString("nr"));
		}catch(Exception e){		
			pw.println("viga(EMaterjal:alamkaustadeArv):"+e);
		}
		
		return arv;
	}
	private String hetkeKaust(){
		Statement st; //
		ResultSet rs; // tulemuste kogum
		String lause; // sql päring								
		try{
			st=cn.createStatement();			
			lause="select teema,vanem from teema where id="+ID;			
			rs=st.executeQuery(lause);
			rs.next();								
			return rs.getString("teema");
		}catch(Exception e){		
			pw.println("viga(EMaterjal:alamkaustadeArv):"+e);
		}
		
			return " ";
	}
	//*****************************************//
	public void doGet(HttpServletRequest k, HttpServletResponse v) throws IOException, ServletException{			
		try{			
			kysimus=k;
			vastus=v;
			pw=v.getWriter();			
			
			vastus.setContentType("text/html");			
			pw.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
			pw.println("<HTML><HEAD>");
			pw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />");		
			pw.println("<TITLE>eMaterjalid</TITLE></HEAD>\n");
			pw.println("<BODY BGCOLOR=#535772 LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 LINK=#FFFFFF VLINK=#FFFFFF><CENTER>");				
			
			String s1=(kysimus.getParameter("id"));			

			if(s1==null){
				ID=0;	
	        }else{
	        	ID=Integer.parseInt(s1);
			}			
			koostaLeht();			
			pw.println("</CENTER></BODY></HTML>");		
		}catch(Exception e){
			pw.println("viga(EMaterjal:doGet):"+e);
		}
	}
	//*****************************************//
}