//-----------------------------------------------------------------------------
// CorrTD12.java
// tourne le 6 fevrier 2020
// corrige TDs 1 et 2
//-----------------------------------------------------------------------------

import java.io.*;
import java.sql.*;

class CorrTD12 {

    //-------------------------------------------------------------------------
    // adapte en utilisant les sequences du TD2a
    static void creerVillage(Connection c) 
	throws SQLException {
	String v = lireClavier("entrez ville : ");
	String a = lireClavier("entrez activite : ");
	int p = Integer.parseInt(lireClavier("entrez prix : "));
	int cap = Integer.parseInt(lireClavier("entrez capacite : "));
        String texte = 
	    "insert into village values(seq_village.nextval,'"
	    +v+"','"+a+"',"+p+","+cap+")";
        System.out.println(texte);
	Statement s = c.createStatement();
	s.executeUpdate(texte);
	s.close();
    }

    //-------------------------------------------------------------------------
    static void traitement3(Connection c) 
	throws SQLException {
	System.out.println("ici traitement3");

	// parametres :
	int jour = Integer.parseInt(lireClavier("entrez jour : "));

	// construction texte ordre :
        String texte = "delete sejour where jour<"+jour;
        System.out.println(texte);

	// acces serveur :
	Statement s = c.createStatement();
	int nb = s.executeUpdate(texte);
	s.close();

	// retours :
	System.out.println("Retour : nombre de sejours detruits : "+nb);
    }

    //-------------------------------------------------------------------------
    static Connection connexion(String login, String password, 
				String serveur, String base) 
	throws SQLException {
	System.out.println("ici connexion "+login);
	Connection c = DriverManager.getConnection(
            "jdbc:oracle:thin:"+login+"/"+password+"@"+serveur+":1522:"+base); 
	return c;
    }

    //-------------------------------------------------------------------------
    static void deconnexion(Connection c) 
	throws SQLException {
	System.out.println("ici deconnexion");
	c.close();
    }

    //-------------------------------------------------------------------------
    static void doubleConnexion(Connection c) 
	throws SQLException {
	System.out.println("ici doubleConnexion");

	int i = Integer.parseInt(lireClavier("entrez identifiant : "));
        String v = lireClavier("entrez ville : ");
        String a = lireClavier("entrez activite : ");
        int p = Integer.parseInt(lireClavier("entrez prix : "));
        int cap = Integer.parseInt(lireClavier("entrez capacite : "));
        String texte =
            "insert into village values("+i+",'"+v+"','"+a+"',"+p+","+cap+")";
        System.out.println(texte);

	Statement s = c.createStatement();
	s.executeUpdate(texte);
	s.close();

	c = connexion("c##ewaller2_a", "ewaller2_a", "tp-oracle", "dbinfo"); 
	s = c.createStatement();
	s.executeUpdate(texte);
	s.close();
	c.close();
    }

    //-------------------------------------------------------------------------
    static String lireClavier(String message) {
	try {
	    System.out.print(message);
	    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 {
	Class.forName("oracle.jdbc.driver.OracleDriver"); 
	Connection c = connexion("c##ewaller_a", "ewaller_a", "tp-oracle",
				 "dbinfo"); 
	while (true) {
	    System.out.println("-------------------------------");
	    System.out.println("Bienvenue dans le menu CorrJDBC");
	    System.out.println("0 : deconnexion");
	    System.out.println("1 : creer village (employe)");
	    System.out.println("2 : traitement 3 (employe)");
	    System.out.println("3 : double connexion");
	    System.out.println("-1 : terminer");
	    int n = Integer.parseInt(lireClavier("Entrez votre choix : "));
	    switch (n) {
	    case 0 : deconnexion(c); break;
	    case 1 : creerVillage(c); break;
	    case 2 : traitement3(c); break;
	    case 3 : doubleConnexion(c); break;
	    case -1 : return;
	    }
	}
    }
}

//-----------------------------------------------------------------------------
