Grosse MàJ

This commit is contained in:
olivier
2008-11-25 22:11:16 +01:00
parent 53195fdfcd
commit 3e719157ea
2980 changed files with 343846 additions and 0 deletions

View File

@ -0,0 +1,182 @@
package fr.blankoworld.connexionBDD;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author 3dossmanno
*/
public class Connexion {
// Donnees privees
private String serveur;
private String port;
private String bdd;
private String id;
private String mdp;
private Connection connection;
private ResultSet result;
// Constructeur
public Connexion(String server, String port, String database, String login, String password)
{
this.serveur = server;
this.port = port;
this.bdd = database;
this.id = login;
this.mdp = password;
}
// Ascesseurs, etc ...
public String getServer(){
return this.serveur;
}
public void setServer(String chaine){
this.serveur = chaine;
}
/**
* @return the port
* @uml.property name="port"
*/
public String getPort(){
return this.port;
}
/**
* @param port the port to set
* @uml.property name="port"
*/
public void setPort(String chaine){
this.port = chaine;
}
public String getDatabase(){
return this.bdd;
}
public void setDatabase(String chaine){
this.bdd = chaine;
}
public String getLogin(){
return this.id;
}
public void setLogin(String chaine){
this.id = chaine;
}
public String getPassword(){
return this.mdp;
}
public void setPassword(String chaine){
this.mdp = chaine;
}
// Verification presence du pilote
public String[] driverPresent(){
String[] tableau = new String[2];
try{
// On verifie que le pilote Oracle est disponible
Class.forName( "oracle.jdbc.driver.OracleDriver" );
tableau[0] = "0";
tableau[1] = "Pilote Oracle trouve";
}
catch(ClassNotFoundException ex){
tableau[0] = "1";
tableau[1] = "Pilote pas trouve";
}
return tableau;
}
// Connexion a la base
// Doit pouvoir retourner un tableau avec une chaine expliquant si oui ou non nous sommes connectes, et une autre donnant l'erreur
// Ceci permet d'avoir des messages en francais ...
public String[] connect(){
String[] tableau = new String[2];
// S'il l'est, nous continuons en preparant notre creme
connection = null;
String url = "jdbc:oracle:thin:@" + this.serveur + ":" + this.port + ":" + this.bdd;
String identifiant = this.id;
String mdp = this.mdp.toString();
// puis nous tentons d'appliquer la creme
try {
connection = DriverManager.getConnection(url, identifiant, mdp);
tableau[0] = "0";
tableau[1] = "Acces a la base: Accepte.\n";
tableau[1] += "Acces: " + url + "\n";
DatabaseMetaData metaData;
metaData = connection.getMetaData();
tableau[1] += "Driver: " + metaData.getDriverName() + "\n";
tableau[1] += "Version: " + metaData.getDriverVersion() + "\n";
}
catch(SQLException sqle) {
tableau[0] = "1";
tableau[1] = "Acces a la base: Refuse.\n" + sqle.getMessage();
}
return tableau;
}
// Deconnexion a la base de donnees
public String[] disconnect(){
String[] tableau = new String[2];
if(connection != null){
try{
connection.close();
tableau[0] = "0";
tableau[1] = "Connexion fermee.";
} catch(Exception e){
tableau[0] = "1";
tableau[1] = e.getMessage();
}
}
return tableau;
}
public String[] sendQuery(String query){
String[] tableau = new String[2];
try {
// Creation d'une requete
Statement requete = connection.createStatement();
// Recuperation du resultat de la requete
this.result = requete.executeQuery(query); // executeQuery ne retourne jamais null !
// Requete reussie
tableau[0] = "0";
tableau[1] = "Requete: Envoyee et recue.";
} catch (Exception ex){
tableau[0] = "1";
tableau[1] = "Requete: Non reussie.";
}
return tableau;
}
public ResultSet getQueryResult(){
return this.result;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,95 @@
package fr.blankoworld.connexionBDD;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Principal {
public static void main(String args[]){
System.out.println("## D<>but");
try{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
System.out.println("## Trouv<75>");
}
catch(ClassNotFoundException ex){
System.out.println("## Pas trouv<75>");
}
Connection connection = null;
String url = "jdbc:oracle:thin:@grive.u-strasbg.fr:1521:v920";
String identifiant = "dut";
String mdp = "dut";
try {
connection = DriverManager.getConnection(url, identifiant, mdp);
System.out.println("## Acc<63>s <20> la base: Accept<70>.");
try {
// Cr<43>ation d'une requ<71>te
Statement requete = connection.createStatement();
// R<>cup<75>ration du r<>sultat de la requ<71>te
ResultSet resultat = requete.executeQuery("SELECT * FROM ENSEIGNANTS"); // executeQuery ne retourne jamais null !
System.out.println("## Requ<71>te: Envoy<6F>e et re<72>ue.");
// On catalogue l'ensemble des donn<6E>es relatives <20> la table r<>sultante (pas le contenu mes les donn<6E>es de colonnes, etc ..)
ResultSetMetaData rsmd = resultat.getMetaData();
// Nombre de colonnes (Commence <20> 1 !)
// int i = rsmd.getColumnCount();
// System.out.println("Nombre de colonne: " + i);
// Donner les ent<6E>tes de colonnes
// for(int j = 1; j < i; j++){
// System.out.print(rsmd.getColumnName(j) + " ");
// }
System.out.println(resultat.toString());
System.out.println(rsmd.getColumnName(2) + " " + rsmd.getColumnName(3));
resultat.isBeforeFirst();
System.out.println();
resultat.next();
// On s'occupe de la premi<6D>re ligne
//System.out.println(resultat.toString()); // Donne la connexion actuelle
System.out.println(resultat.getObject("NOM") + " " + resultat.getObject("PRENOM"));
// Affichage du r<>sultat
resultat.next();
// traitement de la premi<6D>re ligne
System.out.println(resultat.getObject("NOM") + " " + resultat.getObject("PRENOM"));
while(resultat.next()){
//traitement des autres lignes
System.out.println(resultat.getObject("NOM") + " " + resultat.getObject("PRENOM"));
}
} catch (Exception ex){
System.out.println("## Requ<71>te: Non r<>ussie.");
}
} catch (SQLException sqle) {
System.out.println("## Acc<63>s <20> la base: Refus<75>.");
// TODO: handle exception
} finally {
if(connection!=null){
try{connection.close();
System.out.println("## Connexion ferm<72>e.");
} catch(Exception e){
e.printStackTrace();
}
}
}
System.out.println("## Fin");
}
}

View File

@ -0,0 +1,99 @@
package fr.blankoworld.connexionBDD;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class testConnexion {
public static void main(String args[]){
System.out.println("## D<>but");
try{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
System.out.println("## Trouv<75>");
}
catch(ClassNotFoundException ex){
System.out.println("## Pas trouv<75>");
}
Connection connection = null;
String url = "jdbc:oracle:thin:@grive.u-strasbg.fr:1521:v920";
String identifiant = "dut";
String mdp = "dut";
try {
connection = DriverManager.getConnection(url, identifiant, mdp);
System.out.println("## Acc<63>s <20> la base: Accept<70>.");
try {
// Cr<43>ation d'une requ<71>te
Statement requete = connection.createStatement();
// R<>cup<75>ration du r<>sultat de la requ<71>te
ResultSet resultat = requete.executeQuery("SELECT * FROM GAULOIS"); // executeQuery ne retourne jamais null !
System.out.println("## Requ<71>te: Envoy<6F>e et re<72>ue.");
int nbreLignes = 0;
while(resultat.next()){
nbreLignes++;
}
System.out.println("Nbre: " + nbreLignes);
// On catalogue l'ensemble des donn<6E>es relatives <20> la table r<>sultante (pas le contenu mes les donn<6E>es de colonnes, etc ..)
ResultSetMetaData rsmd = resultat.getMetaData();
// Nombre de colonnes (Commence <20> 1 !)
int i = rsmd.getColumnCount();
// System.out.println("Nombre de colonne: " + i);
// Donner les ent<6E>tes de colonnes
for(int j = 1; j < i; j++){
System.out.print(rsmd.getColumnName(j) + " ");
}
System.out.println();
// Cr<43>ation d'une requ<71>te
Statement requete2 = connection.createStatement();
// R<>cup<75>ration du r<>sultat de la requ<71>te
ResultSet jeu = requete2.executeQuery("SELECT * FROM GAULOIS"); // executeQuery ne retourne jamais null !
System.out.println("## Requ<71>te: Envoy<6F>e et re<72>ue.");
while(jeu.next()){
//traitement des autres lignes
for(int j = 1; j < i; j++){
System.out.print(jeu.getObject(j) + " ");
if(j != i - 1){
System.out.print("");
}
}
System.out.println();
}
} catch (Exception ex){
System.out.println("## Requ<71>te: Non r<>ussie.");
}
} catch (SQLException sqle) {
System.out.println("## Acc<63>s <20> la base: Refus<75>.");
// TODO: handle exception
} finally {
if(connection!=null){
try{connection.close();
System.out.println("## Connexion ferm<72>e.");
} catch(Exception e){
e.printStackTrace();
}
}
}
System.out.println("## Fin");
}
}

View File

@ -0,0 +1,223 @@
package fr.blankoworld.donnees;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;
import java.awt.GridLayout;
import fr.blankoworld.connexionBDD.Connexion;
public class JTableModel extends JPanel {
private static final long serialVersionUID = 1L;
// Utilise pour le debugage, lors de l'insertion de donnees (modification)
// private boolean DEBUG = false;
public JTableModel(Connexion connectionObject, String requete) {
super(new GridLayout(1,0));
JTable table = new JTable(new MyTableModel(connectionObject, requete));
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
// Ajout de la table dans un panneau deroulant.
JScrollPane scrollPane = new JScrollPane(table);
//Ajout du panneau deroulant dans ce panneau ci.
add(scrollPane);
}
class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private String[] columnNames;
private Object[][] data;
public MyTableModel(Connexion connectionObject, String requete){
ResultSet resultat = connectionObject.getQueryResult();
try {
// On catalogue l'ensemble des donnees relatives a la table resultante (pas le contenu mais les donnees de colonnes, et le nombre de lignes)
ResultSetMetaData rsmd = resultat.getMetaData();
// Nombre de colonnes (Commence a 1 !)
int i = rsmd.getColumnCount();
// Donner les entetes de colonnes
String[] enteteColonnes = new String[i];
for (int j = 1; j < i + 1; j++) {
enteteColonnes[j - 1] = rsmd.getColumnName(j);
}
// Nombre de lignes
int nbreLigne = 0;
while (resultat.next()){
nbreLigne++;
}
// Tableau de donnees
Object[][] tableauDonnees = new Object[nbreLigne][i];
for(int ligne = 0; ligne < nbreLigne; ligne++){
for(int colonne = 0; colonne < i; colonne++){
tableauDonnees[ligne][colonne] = "";
}
}
//On refait la requete qui semble avoir fonctionne la premiere fois
connectionObject.sendQuery(requete);
ResultSet donnees = connectionObject.getQueryResult();
// Incrementeur de ligne
int incrementeur = 0;
while (donnees.next()) {
//traitement des autres lignes
for (int j = 1; j < i + 1; j++) {
tableauDonnees[incrementeur][j - 1] = donnees.getObject(j);
}
incrementeur++;
}
columnNames = enteteColonnes;
data = tableauDonnees;
} catch (SQLException e) {
// On remplit par des tableaux vides
columnNames = null;
data = null;
}
// // Jeux de tests (pour voir si cela fonctionne)
// columnNames = new String[] {"First Name",
// "Last Name",
// "Sport",
// "# of Years",
// "Vegetarian"};
//
// data = new Object[][] {
// {"Mary", "Campione",
// "Snowboarding", new Integer(5), new Boolean(false)},
// {"Alison", "Huml",
// "Rowing", new Integer(3), new Boolean(true)},
// {"Kathy", "Walrath",
// "Knitting", new Integer(2), new Boolean(false)},
// {"Sharon", "Zakhour",
// "Speed reading", new Integer(20), new Boolean(true)},
// {"Philip", "Milne",
// "Pool", new Integer(10), new Boolean(false)}
// };
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
/*
* Commentaire donne par Sun, concernant les prochaines methodes
* JTable uses this method to determine the default renderer/
* editor for each cell. If we didn't implement this method,
* then the last column would contain text ("true"/"false"),
* rather than a check box.
*/
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/*
* Don't need to implement this method unless your table's
* editable.
*/
// public boolean isCellEditable(int row, int col) {
// //Note that the data/cell address is constant,
// //no matter where the cell appears onscreen.
// if (col < 2) {
// return false;
// } else {
// return true;
// }
// }
/*
* Don't need to implement this method unless your table's
* data can change.
*/
// public void setValueAt(Object value, int row, int col) {
// if (DEBUG) {
// System.out.println("Setting value at " + row + "," + col
// + " to " + value
// + " (an instance of "
// + value.getClass() + ")");
// }
//
// data[row][col] = value;
// fireTableCellUpdated(row, col);
//
// if (DEBUG) {
// System.out.println("New value of data:");
// printDebugData();
// }
// }
// private void printDebugData() {
// int numRows = getRowCount();
// int numCols = getColumnCount();
//
// for (int i=0; i < numRows; i++) {
// System.out.print(" row " + i + ":");
// for (int j=0; j < numCols; j++) {
// System.out.print(" " + data[i][j]);
// }
// System.out.println();
// }
// System.out.println("--------------------------");
// }
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
// private static void createAndShowGUI() {
// //Create and set up the window.
// JFrame frame = new JFrame("TableDemo");
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
// //Create and set up the content pane.
// JTableModel newContentPane = new JTableModel();
// newContentPane.setOpaque(true); //content panes must be opaque
// frame.setContentPane(newContentPane);
//
// //Display the window.
// frame.pack();
// frame.setVisible(true);
// }
//
// public static void main(String[] args) {
// //Schedule a job for the event-dispatching thread:
// //creating and showing this application's GUI.
// javax.swing.SwingUtilities.invokeLater(new Runnable() {
// public void run() {
// createAndShowGUI();
// }
// });
// }
}

View File

@ -0,0 +1,211 @@
package fr.blankoworld.ihm;
import fr.blankoworld.connexionBDD.Connexion;
import fr.blankoworld.ihm.IHMPrincipale;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* @author 3dossmanno
*/
public class IHMConnexion extends JFrame {
private static final long serialVersionUID = 1L;
// Donnees privees
// Creation des champs textes
private JTextField jtextServeur;
private JTextField jtextPort;
private JTextField jtextBase;
private JTextField jtextIdentifiant;
private JPasswordField jtextMdp;
private JButton jOk;
// Creation d'un principal, pour utiliser ses methodes
private IHMPrincipale pr;
// Creation de la classe permettant la connexion a la base de donnees
private Connexion connexionToBdd;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/**
* <h3>IHMConnexion</h3>
* <p>Interface graphique pour se connecter a une base de donnees.<br />
* Demande en parametre une IHMPrincipale, de type IHMPrincipale, et 5 parametres : Le serveur, le port, la base de donnees, l'identifiant
* et le mot de passe par defaut.</p>
* <p>Retourne en contrepartie un objet Connexion qui a tout les parametres de l'utilisateur et qui permet de se connecter.</p>
* <p>L'objet Connexion provient du paquet fr.blankoworld.connexionBDD.Connexion</p>
*/
public IHMConnexion(IHMPrincipale pr, String defaultServer, String defaultPort, String defaultDatabase, String defaultLogin, String defaultMdp) {
this.pr = pr;
connexionToBdd = new Connexion(defaultServer, defaultPort, defaultDatabase, defaultLogin, defaultMdp);
// Creation des etiquettes
JLabel jlabelServeur = new JLabel(" Serveur: ");
JLabel jlabelPort = new JLabel(" Port: ");
JLabel jlabelBase = new JLabel(" Base de donnees: ");
JLabel jlabelIdentifiant = new JLabel(" Identifiant: ");
JLabel jlabelMdp = new JLabel(" Mot de passe: ");
// Creation des champs textes
jtextServeur = new JTextField(connexionToBdd.getServer());
jtextPort = new JTextField(connexionToBdd.getPort());
jtextBase = new JTextField(connexionToBdd.getDatabase());
jtextIdentifiant = new JTextField(connexionToBdd.getLogin());
jtextMdp = new JPasswordField(connexionToBdd.getPassword());
jtextMdp.setEchoChar('*');
// Creation des boutons
jOk = new JButton("OK");
JButton jAnnuler = new JButton("Annuler");
//** Creation des panneaux **//
// Panneau au centre
JPanel Panneau_Centre = new JPanel();
Panneau_Centre.setLayout(new GridLayout(1,2));
// Donner un titre a notre panneau
//Panneau_Centre.setBorder(BorderFactory.createTitledBorder("Salut"));
// Panneau a gauche du panneau centre
JPanel Panneau_Centre_Gauche = new JPanel();
Panneau_Centre_Gauche.setLayout(new GridLayout(5,1));
// Panneau a droite du panneau centre
JPanel Panneau_Centre_Droite = new JPanel();
Panneau_Centre_Droite.setLayout(new GridLayout(5,1));
// Panneau en bas
JPanel Panneau_Bas = new JPanel();
// Ajout des etiquettes au panneau centre a gauche
Panneau_Centre_Gauche.add(jlabelServeur);
Panneau_Centre_Gauche.add(jlabelBase);
Panneau_Centre_Gauche.add(jlabelPort);
Panneau_Centre_Gauche.add(jlabelBase);
Panneau_Centre_Gauche.add(jlabelIdentifiant);
Panneau_Centre_Gauche.add(jlabelMdp);
// Ajout des champs textes au panneau centre droit
Panneau_Centre_Droite.add(jtextServeur);
Panneau_Centre_Droite.add(jtextBase);
Panneau_Centre_Droite.add(jtextPort);
Panneau_Centre_Droite.add(jtextBase);
Panneau_Centre_Droite.add(jtextIdentifiant);
Panneau_Centre_Droite.add(jtextMdp);
// Ajout des boutons au panneau bas
Panneau_Bas.add(jOk);
Panneau_Bas.add(jAnnuler);
// Ajout des panneaux droits et gauche au panneau centre
Panneau_Centre.add(Panneau_Centre_Gauche);
Panneau_Centre.add(Panneau_Centre_Droite);
// Ajout des panneaux a la fenetre
this.getContentPane().setLayout(new BorderLayout());
this.add(Panneau_Centre, BorderLayout.CENTER);
this.add(Panneau_Bas, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(350,200);
this.setLocation(200,200);
this.setResizable(false);
this.setTitle("Connexion a une base de donnees");
// ********************************************** //
jOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
valider();
}
});
jAnnuler.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
annuler();
}
});
}
private void valider(){
String message;
int resultatConfirmation;
// Recuperation des valeurs entrees dans les champs textes
message = "La connexion va etre etablie, les valeurs suivantes sont - elles exactes ? : \n\n";
message += "Serveur : " + this.jtextServeur.getText() + "\n";
message += "Port : " + this.jtextPort.getText() + "\n";
message += "Base de donnees : " + this.jtextBase.getText() + "\n";
message += "Identifiant : " + this.jtextIdentifiant.getText() + "\n";
message += "Mot de passe (crypte) : " + this.jtextMdp.getPassword().toString() + "\n";
// Affichage du message de confirmation
resultatConfirmation = JOptionPane.showConfirmDialog(this, message, "Confirmation", JOptionPane.YES_NO_OPTION);
// Nous confirmons ou pas ?
if(resultatConfirmation == 0){
String rose = new String(this.jtextMdp.getPassword());
// Si oui nous enregistrons les valeurs dans notre objet connexion
connexionToBdd.setServer(this.jtextServeur.getText());
connexionToBdd.setPort(this.jtextPort.getText());
connexionToBdd.setDatabase(this.jtextBase.getText());
connexionToBdd.setLogin(this.jtextIdentifiant.getText());
connexionToBdd.setPassword(rose);
// Puis nous recuperons la main et affichons a nouveau la fenetre principale en lui passant l'objet de connexion
this.dispose();
this.pr.setVisible(true);
this.pr.confirmationConnexion(connexionToBdd);
this.invalidate();
}
else{
// Sinon aucun traitement n'est effectue
}
}
private void annuler(){
this.dispose();
}
public void driverExist(){
// On verifie la presence du pilote JDBC, et de sa fonctionnalite
if(Integer.parseInt(connexionToBdd.driverPresent()[0]) == 1){
// Si pilote non present on desactive le bouton ok et autres boutons attaches
this.jtextServeur.setEnabled(false);
this.jtextPort.setEnabled(false);
this.jtextBase.setEnabled(false);
this.jtextIdentifiant.setEnabled(false);
this.jtextMdp.setEnabled(false);
this.jOk.setEnabled(false);
JOptionPane.showMessageDialog(this, "Pilote introuvable ou non fonctionnel.", "Avertissement", JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(this, "Pilote trouve.", "Information", JOptionPane.INFORMATION_MESSAGE);
}
}
}

View File

@ -0,0 +1,282 @@
package fr.blankoworld.ihm;
// Importations automatiques
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.BevelBorder;
import fr.blankoworld.connexionBDD.Connexion;
import fr.blankoworld.donnees.JTableModel;
/**
* @author 3dossmanno
*/
public class IHMPrincipale extends JFrame {
private static final long serialVersionUID = 1L;
private JTextArea zoneTexteStatut;
private JMenuItem MenuBdd_Connexion;
private JMenuItem MenuBdd_Fermer;
private JMenu MenuAction;
private JPanel Panneau_Centre;
private boolean connecte = false;
private IHMConnexion conn;
private Connexion objetConnexion;
private JTableModel tableDonnees;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new IHMPrincipale().setVisible(true);
}
private IHMPrincipale() {
// Creation du menu Base de donnees
JMenu MenuBdd = new JMenu("Base de donnees");
MenuBdd_Connexion = new JMenuItem("Connexion");
MenuBdd_Fermer = new JMenuItem("Fermer");
MenuBdd_Fermer.setEnabled(false);
JMenuItem MenuBdd_Quitter = new JMenuItem("Quitter");
MenuBdd.add(MenuBdd_Connexion);
MenuBdd.add(MenuBdd_Fermer);
MenuBdd.addSeparator();
MenuBdd.add(MenuBdd_Quitter);
// Creation du menu Action
MenuAction = new JMenu("Action");
JMenuItem MenuAction_Requete = new JMenuItem("Faire une requete");
MenuAction.add(MenuAction_Requete);
MenuAction.setVisible(false);
// Creation du menu Aide
JMenu MenuAide = new JMenu("Aide");
JMenuItem MenuAide_Apropos = new JMenuItem("A propos");
MenuAide.add(MenuAide_Apropos);
// Creation de la barre de menus
JMenuBar MenuPrincipal = new JMenuBar();
MenuPrincipal.add(MenuBdd);
MenuPrincipal.add(MenuAction);
MenuPrincipal.add(MenuAide);
//** Modification de la zone de texte
zoneTexteStatut = new JTextArea(6,60);
zoneTexteStatut.setEditable(false);
zoneTexteStatut.setBorder(new BevelBorder(BevelBorder.LOWERED));
//** Creation des panneaux **//
// Panneau au centre
Panneau_Centre = new JPanel();
Panneau_Centre.setLayout(new BorderLayout());
Panneau_Centre.setOpaque(true); // Apparemment utile pour le JTable
Panneau_Centre.setBorder(BorderFactory.createTitledBorder("Resultat des requetes"));
// Panneau en bas
JPanel Panneau_Bas = new JPanel();
Panneau_Bas.setBorder(BorderFactory.createTitledBorder("Statut"));
// Ajout des boutons et zones de texte au panneau bas
Panneau_Bas.add(zoneTexteStatut);
// Ajout des panneaux a la fenetre
this.getContentPane().setLayout(new BorderLayout());
this.add(Panneau_Centre, BorderLayout.CENTER);
this.add(Panneau_Bas, BorderLayout.SOUTH);
this.add(MenuPrincipal, BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(700,300);
this.setLocation(200,200);
this.setResizable(false);
this.setTitle("SQLNavigator v0.1");
// ***************************************************** //
// Creation des fenetres secondaires //
// ***************************************************** //
conn = new IHMConnexion(this, "grive.u-strasbg.fr", "1521", "v920", "dut", "dut");
conn.setLocation(400,350);
// ***************************************************** //
// menu Jeu - bouton Nouveau
MenuBdd_Connexion.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
menuBddConnexion();
}
});
MenuBdd_Fermer.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
menuBddFermer();
}
});
// menu Jeu - bouton Quitter
MenuBdd_Quitter.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
menuBddQuitter();
}
});
MenuAction_Requete.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
menuActionRequete();
}
});
// menu Apropos - bouton
MenuAide_Apropos.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
menuApropos();
}
});
}
private void menuBddConnexion(){
// Affichage de la fenetre de connexion
conn.setVisible(true);
conn.driverExist();
// Mise en place d'une ecoute sur la fenetre
conn.addWindowListener(new WindowListener(){
public void windowActivated(WindowEvent ev){
}
public void windowClosed(WindowEvent ev){
}
public void windowClosing(WindowEvent ev){
conn.dispose();
}
public void windowDeactivated(WindowEvent ev){
}
public void windowDeiconified(WindowEvent ev){
}
public void windowIconified(WindowEvent ev){
}
public void windowOpened(WindowEvent ev){
}
});
}
private void menuBddFermer(){
String[] resultatFermeture;
resultatFermeture = new String[2];
resultatFermeture = this.objetConnexion.disconnect();
if(Integer.parseInt(resultatFermeture[0]) == 0){
this.MenuBdd_Fermer.setEnabled(false);
this.MenuBdd_Connexion.setEnabled(true);
this.zoneTexteStatut.setText("Base de donnees fermee: " + resultatFermeture[1]);
this.MenuAction.setVisible(false);
}
else{
this.zoneTexteStatut.setText("Impossible de fermer la base de donnees : " + resultatFermeture[1]);
}
}
private void menuBddQuitter(){
String[] resultatFermeture;
// On verifie si une connexion a une BDD est en cours
// - Si oui, on ferme d'abord la connexion
if(this.connecte){
resultatFermeture = new String[2];
resultatFermeture = this.objetConnexion.disconnect();
if(Integer.parseInt(resultatFermeture[0]) == 0){
System.exit(0);
}
else{
this.zoneTexteStatut.setText("Impossible de fermer la base de donnees : " + resultatFermeture[1]);
}
}
// - Si non, alors on peut quitter de suite
else{
System.exit(0);
}
}
private void menuActionRequete(){
IHMRequete ihmRequete = new IHMRequete(this);
ihmRequete.setLocation(800, 400);
ihmRequete.setVisible(true);
}
/**
* <p>Action du bouton Apropos du menu Aide</p>
* @param args
*/
private void menuApropos(){
JOptionPane.showMessageDialog(null, "SQLNavigator\n\n" +
"Version 0.1\n" +
"Developpe par Olivier DOSSMANN\n\n",
"A propos de SQLNavigator",
JOptionPane.QUESTION_MESSAGE);
}
public void confirmationConnexion(Connexion objetConnexion){
String[] resultatConnexion;
this.objetConnexion = objetConnexion;
resultatConnexion = new String[2];
resultatConnexion = this.objetConnexion.connect();
this.zoneTexteStatut.setText(resultatConnexion[1]);
if(Integer.parseInt(resultatConnexion[0]) == 0){
this.MenuBdd_Connexion.setEnabled(false);
this.MenuBdd_Fermer.setEnabled(true);
this.MenuAction.setVisible(true);
this.MenuAction.setEnabled(true);
this.connecte = true;
this.repaint();
}
}
public void envoiRequete(String laRequete){
if(Integer.parseInt(objetConnexion.sendQuery(laRequete)[0]) == 0){
// Tableau
tableDonnees = new JTableModel(objetConnexion, laRequete);
tableDonnees.setVisible(true);
Panneau_Centre.add(tableDonnees, BorderLayout.CENTER);
Panneau_Centre.validate();
}
else {
this.zoneTexteStatut.setText("L'envoi de la requete a echoue.");
}
}
}

View File

@ -0,0 +1,92 @@
package fr.blankoworld.ihm;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
public class IHMRequete extends JFrame {
// Requis par la classe JFrame (ne pas demander pourquoi)
private static final long serialVersionUID = 1L;
// Creation de la zone de texte
private JTextPane panneauTexte;
private IHMPrincipale pr;
public IHMRequete(IHMPrincipale pr){
this.pr = pr;
// Creation d'une etiquette
JLabel jRequete = new JLabel("Entrez votre requete : ");
// Creation des boutons
JButton jOk = new JButton("Ok");
JButton jAnnuler = new JButton("Quitter");
// Creation de la zone de texte
panneauTexte = new JTextPane();
panneauTexte.setCaretPosition(0);
panneauTexte.setMargin(new Insets(5,5,5,5));
JScrollPane zoneTexteRequete = new JScrollPane(panneauTexte);
zoneTexteRequete.setPreferredSize(new Dimension(200, 130));
// Creation des panneaux bas et centre
JPanel Panneau_Bas = new JPanel();
JPanel Panneau_Centre = new JPanel();
Panneau_Centre.setLayout(new BorderLayout());
// Ajout des boutons a chacun des panneaux
Panneau_Centre.add(jRequete, BorderLayout.NORTH);
Panneau_Centre.add(zoneTexteRequete, BorderLayout.CENTER);
Panneau_Bas.add(jOk);
Panneau_Bas.add(jAnnuler);
// Gestionnaire de contenus
this.getContentPane().setLayout(new BorderLayout());
this.add(Panneau_Centre, BorderLayout.CENTER);
this.add(Panneau_Bas, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,200);
this.setLocation(200,200);
this.setResizable(false);
this.setTitle("Requete");
// ******************************** //
// Mise en place des <20>couteurs //
// ******************************** //
jOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
valider();
}
});
jAnnuler.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
annuler();
}
});
}
private void valider(){
this.pr.envoiRequete(this.panneauTexte.getText());
}
private void annuler(){
dispose();
}
}