//-----------------------------------------------------------------------------
// MenuJDBC.java
// pour le TD 8
// (contient aussi le corrige du TD 7 deja fourni)
//-----------------------------------------------------------------------------

import java.io.*;
import java.sql.*;

class MenuJDBC {

    static Connection connexion() 
	throws SQLException, ClassNotFoundException {
	System.out.println("ici connexion");

	Class.forName("oracle.jdbc.driver.OracleDriver");
	Connection c = DriverManager.getConnection(
            "jdbc:oracle:thin:waller_a/AQWzsx34@servora:1521:dbinfo");

	return c;
    }

    static void deconnexion(Connection c) 
	throws SQLException {
	System.out.println("ici deconnexion");
	c.close();
    }

    static void traitement1Simplifie(Connection c) 
	throws SQLException {
	System.out.println("ici traitement1");

	// parametres :
	System.out.print("entrez le nom du client: ");
	String nom = lireClavier();
	System.out.print("entrez l'age : ");
	int age = Integer.parseInt(lireClavier());

	// construction texte ordre :
        String texte = 
            "insert into client(idc, nom, age) values(seq_client.nextval, '"
            +nom+"', "+age+")";
        System.out.println(texte);

	// acces serveur :
	Statement s = c.createStatement();
	s.executeUpdate(texte);
	s.close();

	// retours : neant dans TD 7
    }

    static void traitement3(Connection c) 
	throws SQLException {
	System.out.println("ici traitement3");

	// parametres :
	System.out.print("entrez le jour limite : ");
	int jour = Integer.parseInt(lireClavier());

	// construction texte ordre :
        String texte = "delete sejour where jour<"+jour;
        System.out.println(texte);

	// acces serveur :
	Statement stmt = c.createStatement();
	int nb = stmt.executeUpdate(texte);
	stmt.close();

	// retours :
	System.out.println("nombre de sejours detruits : "+nb);
    }

    static void consultationSejoursClient() 
	throws SQLException {
	System.out.println("ici consultationSejoursClient");
	// parametres :
	// retours :
    }

    static void traitement1() 
	throws SQLException {
	System.out.println("ici traitement1");
	// parametres :
	// retours :
    }

    static void traitement1Proc() 
	throws SQLException {
	System.out.println("ici traitement1Proc");
	// parametres :
	// retours :
    }

    static void traitement2Proc() 
	throws SQLException {
	System.out.println("ici traitement2Proc");
	// parametres :
	// retours :
    }

    static void traitement2() 
	throws SQLException {
	System.out.println("ici traitement2");
	// parametres :
	// retours :
    }

    static void verificationCompil() 
	throws SQLException {
	System.out.println("ici verificationCompil");
    }

    static void SQLDyn() 
	throws SQLException {
	System.out.println("ici SQLDyn");
    }

    static String lireClavier() {
	// Dans cette fonction l'exception est catchee pour ne pas avoir a la 
        // gerer dans le main, et donc mieux voir les exceptions BD. 
	try {
	    BufferedReader clavier =
		new BufferedReader(new InputStreamReader(System.in));
	    return clavier.readLine();
	} catch (Exception e) {
	    return "erreur dans fonction lireClavier";
	}
    }

    public static void main(String[] args) 
	throws SQLException, ClassNotFoundException {
	
	Connection c = connexion();
	while (true) {
	    System.out.println("-------------------------------");
	    System.out.println("Bienvenue dans le menu MenuJDBC");
	    System.out.println("0 : traitement1 simplifie TD 7");
	    System.out.println("1 : traitement1");
	    System.out.println("2 : traitement2");
	    System.out.println("3 : traitement3");
	    System.out.println("4 : consultationSejoursClient"); 
	    System.out.println("5 : traitement1Proc"); 
	    System.out.println("6 : traitement2Proc"); 
	    System.out.println("7 : verificationCompil"); 
	    System.out.println("8 : SQLDyn"); 
	    System.out.println("-1 : deconnexion");
	    System.out.println("-2 : terminer");
	    System.out.print("Entrez votre choix : ");
	    int n = Integer.parseInt(lireClavier());
	    switch (n) {
	    case 0 : traitement1Simplifie(c); break;
	    case 1 : traitement1(); break;
	    case 2 : traitement2(); break;
	    case 3 : traitement3(c); break;
	    case 4 : consultationSejoursClient(); break;
	    case 5 : traitement1Proc(); break;
	    case 6 : traitement2Proc(); break;
	    case 7 : verificationCompil(); break;
	    case 8 : SQLDyn(); break;
	    case -1 : deconnexion(c); break;
	    case -2 : return;
	    }
	}
    }
}

//-----------------------------------------------------------------------------
