GestionBaseClient.java

import java.sql.*;
import java.net.URL;
import java.io.*;
import java.lang.*;
import java.net.*;


public class GestionBaseClient
     {
     
     private String base;
     private String table;
     private String login;
     private String url;
     
/*********************************************************************************/     
     public GestionBaseClient(String ba, String ta, String lo)
          {
          base=ba;
          table=ta;
          login=lo;
          url="jdbc:postgresql://svrlinux:5432/"+base;
          }
          
     public GestionBaseClient(String ba, String ta, String lo, String ur)
          {
          base=ba;
          table=ta;
          login=lo;
          url=ur+base;
          }
/*********************************************************************************/

public void envoiUpdate (String req) throws Exception
     {
     Class.forName("postgresql.Driver");
          //System.out.println("Avant établissement de la connexion!\n");
     Connection contact = DriverManager.getConnection(url,login,"");
          //System.out.println("après établissement de la connexion!\n");
     Statement Requete = contact.createStatement();
     // System.out.println("après CreateStatement!\n");
          //System.out.println("Requete envoyée : ");
          //System.out.println(req);     
     Requete.executeUpdate(req);
          //System.out.println( "après ExecuteUpdate de la requête!\n" );
     Requete.close();
     contact.close();
     }
      
/*************************************************************************************/

public ResultSet envoiRequete (String req)  
                         //Envoi d'une requete (req) et retourne la reponse
          {
                    
     
      ResultSet resultatSet=null;        
      try {
         // Création d'un objet 
         Class.forName("postgresql.Driver");

         // Création d'une liaison avec la base de données spécifiée
         Connection contact = DriverManager.getConnection(url,login,"");

         //System.out.println("après établissement de la connexion!\n");
         
         // Un objet Statement est nécessaire pour les requêtes SQL au pilote
         Statement Requete = contact.createStatement();
         

         //System.out.println("après CreateStatement!\n");

         //System.out.println("Requete envoyée : ");
         //System.out.println(req);     
         // Création d'une requête, puis d'un objet ResultSet
         
         resultatSet = Requete.executeQuery(req);
         //System.out.println( "après ExecutesQuery de la requête!\n" );

                
         //resultatSet.close();
         Requete.close();
         
         contact.close();
        
           }    // fin try
      catch (SQLException e) { System.out.println("Exception SQL!"); }
           
      catch(ClassNotFoundException e) { System.out.println("deuxième exception!"); }
       
        return(resultatSet);           
      
      }  //fin 
      
//***********************************************************************************************

public int nbConnections(String Whichadr)  //méthode qui renvoie le nombre de connections à WHichadr
          {                                             
          String requete;
          int exist=0;
          ResultSet reponseRequete=null;
          try
               {
               requete="SELECT * FROM "+table+" WHERE url='"+Whichadr+"'";
               reponseRequete=this.envoiRequete(requete);             //envoi de la requete
               reponseRequete.first();                              // on se positionne à la premiere ligne de la reponse
               exist = reponseRequete.getInt("nbconnection");    // on recupere le nombre de connexions
               }
          catch(SQLException e) {System.out.println("erreur SQL");}
          catch(Exception e) {exist=0;}
          
          return(exist);
          }

//***********************************************************************************************

public int sommeConnections(String Whichadr)  //méthode qui renvoie la some des connections
          {                                             
          String requete;
          int exist=0;
          ResultSet reponseRequete=null;
          try
               {
               requete="SELECT SUM(nbconnection) FROM "+table+Whichadr;
               reponseRequete=this.envoiRequete(requete);             //envoi de la requete
               reponseRequete.first();                              // on se positionne à la premiere ligne de la reponse
               exist = reponseRequete.getInt("SUM");    // on recupere le nombre de connexions
               }
          catch(SQLException e) {System.out.println("erreur SQL");}
          catch(Exception e) {System.out.println(e.toString());}
          
          return(exist);
          }
     

/**********************************************************************************************/

public void ajouteIncrementeActualise(String adr)  // incrémenter le nb de connexion à 'Adr'
          {
          int nbConnexion=0;
          java.util.Date ddd=new java.util.Date(); //recuperation de la date !!

          try{
              nbConnexion=this.nbConnections(adr);  //on recupere le nb de connexion à l'adresse voulue
              
              if (nbConnexion<=0) //si il n'y a pas encore eu de connection à l'adresse voulue
                        {
                        String req="INSERT INTO "+table+" VALUES('"+adr.toString()+"',1,'"+ddd.toString()+"')";
                    this.envoiUpdate(req);     
                        }
              else
                        {
                        nbConnexion++ ; //incrementation du nombre de connections
                        String requete="UPDATE "+table+" SET nbconnection="+nbConnexion+", dernier_acces='"+ddd.toString()+"' WHERE url like '"+adr+"'";
                        this.envoiUpdate(requete);   //on envoie l'update     
                        }
             }
          catch(Exception e) {System.out.println("Erreur dans la méthode ajouteIncremente de la classe GestionBase");}
          }

//******************************************************************************************************          

public String executeRequete(String requete,int nbrColonnes,int posURL,int posInt,int posDate,int longURL,int longInt,int longDate) 
//methode qui permet de voir toute la table
          {
          String resultat="";
          ResultSet reponseRequete=null;
          
          try {
               reponseRequete=envoiRequete(requete);     //envoi de la requete
               while(reponseRequete.next())          // tant qu'il reste des lignes dans la reponse...
                    {
                    int compteur;
                    for(compteur=0;compteur<nbrColonnes;compteur++)
                         {
                         if (compteur==(posInt-1)) //si on est au niveau du int
                              {
                              String tmpres=(reponseRequete.getInt("nbconnection")+"");
                              int len=tmpres.length();
                              len=(len<longInt)?len:longInt;
                              resultat=resultat+(tmpres.substring(0,len))+chaineVide(longInt-len);
                              }
                         if (compteur==(posURL-1)) //si on est au niveau de l'url
                              {
                              String tmpres=(reponseRequete.getString("url"));
                              int len=tmpres.length();
                              len=(len<longURL)?len:longURL;
                              resultat=resultat+(tmpres.substring(0,len))+chaineVide(longURL-len);
                              }
                         if (compteur==(posDate-1)) //si on est au niveau de le date
                              {
                              String tmpres=(reponseRequete.getString("dernier_acces"));
                              tmpres=tmpres.substring(8,10)+tmpres.substring(4,8)+tmpres.substring(0,4)+tmpres.substring(10);
                              int len=tmpres.length();
                              len=(len<longDate)?len:longDate;
                              resultat=resultat+(tmpres.substring(0,len))+chaineVide(longDate-len);
                              }
                         resultat=resultat+((compteur<(nbrColonnes-1))?" | ":"");
                         }
                    resultat=resultat+"\n";
                    }
               }
          catch(SQLException e) {return("erreur SQL dans executeRequete de GestionBaseClient");}
          catch(Exception e) {return("Erreur dans executeRequete de GestionBaseClient : "+e.toString());}
          return(resultat);
          }
//*******************************************************************************************************          

public String chaineVide(int nbr)
     {
     String result="";
     int i;
     for(i=0;i<nbr;i++)
          {
          result+=" ";
          }
     return result;
     }

//********************************************************************************************************

public boolean supprimerEnregistrement(String enregistrement,String comparaison)
     {
     try
          {
          envoiUpdate("DELETE FROM information WHERE "+enregistrement+" LIKE "+comparaison);
          return(true);
          }
     catch (Exception e)
          {
          return(false);
          }
          
     }
      

//********************************************************************************************************
public static void main (String args[])
          {
          GestionBaseClient gest = new GestionBaseClient("projet","information","daillyn");
          
          //System.out.println(gest.executeRequete("SELECT * FROM information",3,1,2,3,30,10,10));
          //int test=gest.sommeConnections("%mouquet%");
          //System.out.println(""+test);
          //gest.connectUrl();
          }


}