/**
 * Classe para fazer a comunicação com o bco de dados e a Página
 * Autora: Juliana Terumi Takahashi
 * Data: 01/06/2001
 */

import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
import java.awt.*;

public class pageServlet extends HttpServlet{

	private Statement stat;
	private Connection con;
	private String url = "jdbc:odbc:Cadastro";
	private String username = "";
	private String password = "";
	
	/**
	 *Método construtor para carregar o driver
	 */
	public pageServlet(){
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection(url,username,password);
		}catch(ClassNotFoundException cnfex){			
			System.err.println("Failed to load jdbc/odbc driver.");
			cnfex.printStackTrace();
			con = null;
		}catch(SQLException sqlex){
			System.err.println("Unable to connect");
			sqlex.printStackTrace();
		}
	}
	
	/**
	 *Método inicial 
	 */ 
	public void init(ServletConfig config)
		throws ServletException		
		{
			super.init(config);			
		}
	
	/**
	  *Método para tratar os dados recebidos
	  */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException
		{
			response.setContentType("text/html");
			PrintWriter output = response.getWriter();
						
			String revista,titulo,autor,nomerevista,anorevista,numerorevista,
				   volumerevista,palavra,localizador;
			
			titulo = request.getParameter("txttitulo");
			autor = request.getParameter("lstAutor");
			nomerevista = request.getParameter("txtnomerevista");
			anorevista = request.getParameter("txtanorevista");
			numerorevista = request.getParameter("txtnumerorevista");
			volumerevista = request.getParameter("txtvolumerevista");
			palavra = request.getParameter("txtpalavra");
			localizador = request.getParameter("txtlocalizador");
			
			if(titulo.equals("") || autor.equals("") || nomerevista.equals("") || anorevista.equals("") ||
			   numerorevista.equals("") || volumerevista.equals("") || palavra.equals("") || localizador.equals("")){
				output.println("<h2>Por favor clique em voltar e preencha todos os campos!</h2>");
				output.close();				
			}else{
				getRegistroTitulo(titulo);
				getRegistroAutor(autor);
				revista = ""+nomerevista+"+"+anorevista+"+"+numerorevista+"+"+volumerevista+"+"+palavra+"+"+localizador+"";
				getRegistroRevista(revista);
				output.println("<h2>Cadastramento Concluído</h2>");
				output.close();
			}
		}
		
	/**
	 *Método para inserir um registro na tabela autor
	 */
	public void setRegistroAutor(String stringtoinsert){	
		try{	
			stat = con.createStatement();
			stat.executeUpdate("INSERT TO autor values("+stringtoinsert+");");
		}catch(SQLException sqlex){
		
		}
	}
	
	/**
	 *Método para inserir um registro na tabela titulo
	 */
	public void setRegistroTitulo(String stringtoinsert){		
		try{
			stat = con.createStatement();
			stat.executeUpdate("INSERT TO titulo values ("+stringtoinsert+");");
		}catch(SQLException sqlex){
		}
	}
	
	/**
	 *Método para inserir um registro na tabela Revista
	 */
	public void setRegistroRevista(String stringtoinsert){		
		try{
			stat = con.createStatement();
			stat.executeUpdate("INSERT TO revista values ("+stringtoinsert+");");
		}catch(SQLException sqlex){
		}
	}
	
	/**
	 *Método para inserir um registro na tabela Relacionamento
	 */
	public void setRegistroRelacionamento(String stringtoinsert){		
		try{
			stat = con.createStatement();
			stat.executeUpdate("INSERT TO relacionamento values ("+stringtoinsert+");");
		}catch(SQLException sqlex){
		}
	}
	
	/**
	 *Método para fazer uma consulta na tabela titulo
	 */
	public void getRegistroTitulo(String stringtoget){
		try{	
			stat = con.createStatement();
			String query = "SELECT * FROM titulo WHERE &stringtoget == nome_titulo";
			ResultSet rs = stat.executeQuery(query);
			while(rs.next()){
				String nome_titulo = rs.getString("nome_titulo");
				if(nome_titulo == ""){
					setRegistroTitulo(stringtoget);
				}	
			}
		}catch(SQLException sqlex){
			sqlex.printStackTrace();
		}
	}
	
	/**
	 *Método para fazer uma consulta na tabela autor
	 */
	public void getRegistroAutor(String stringtoget){
		try{	
			stat = con.createStatement();
			String query = "SELECT * FROM autor WHERE &stringtoget == nome_autor";		
			ResultSet rs = stat.executeQuery(query);
			while(rs.next()){
				String nome_titulo = rs.getString("nome_autor");
				if(nome_titulo == ""){
					setRegistroAutor(stringtoget);
				}	
			}
		}catch(SQLException sqlex){
			sqlex.printStackTrace();
		}
	}
	
	/**
	 *Método para fazer uma consulta na tabela revista
	 */
	public void getRegistroRevista(String stringtoget){
		try{
			stat = con.createStatement();
			String query = "SELECT * FROM revista WHERE &stringtoget == nome_revista";		
			ResultSet rs = stat.executeQuery(query);
			while(rs.next()){
				String nome_titulo = rs.getString("nome_revista");
				if(nome_titulo == ""){
					setRegistroRevista(stringtoget);
				}	
			}
		}catch(SQLException sqlex){
			sqlex.printStackTrace();
		}
	}

	/**
	 *Método para fechar as conexões com o bco de dados
	 */
	public void destroy(){
		try{
			stat.close();
			con.close();
		}catch(Exception e ){
			System.err.println("Problemas fechando o Banco de Dados");
		}
	}
}
