gestetu05.Client.java Source code

Java tutorial

Introduction

Here is the source code for gestetu05.Client.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gestetu05;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javafx.scene.Node;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import jdk.internal.org.xml.sax.SAXException;
import static jdk.nashorn.tools.ShellFunctions.input;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import static org.jdom2.filter.Filters.document;
import org.jdom2.input.SAXBuilder;

/**
 *
 * @author ALEX-MOMO
 */
public class Client {

    public Client() {
        System.out.println("Cration d'une instance Client !");
    }

    static void LireXML(String NomFichier) {
        Element racine = new Element("repertoire");
        Document document = new Document(racine);

        //On cre une instance de SAXBuilder
        SAXBuilder sxb = new SAXBuilder();
        try {
            //On cre un nouveau document JDOM avec en argument le fichier XML
            //Le parsing est termin ;)
            document = sxb.build(new File(NomFichier));
        } catch (JDOMException | IOException e) {
        }

        //On initialise un nouvel lment racine avec l'lment racine du document.
        racine = document.getRootElement();
        //On cre une List contenant tous les noeuds "utilisateur" de l'Element racine
        List listUtilisateurs = racine.getChildren("utilisateur");
        //On cre un Iterator sur notre liste
        Iterator i = listUtilisateurs.iterator();
        System.out.println("--------------------Fil d'actualit--------------------");
        while (i.hasNext()) {
            //On recre l'Element courant  chaque tour de boucle afin de
            //pouvoir utiliser les mthodes propres aux Element comme :
            //slectionner un nud fils, modifier du texte, etc...
            Element courant = (Element) i.next();
            //On affiche le nom de llment courant
            System.out.println("L'utilisateur " + courant.getChild("nom").getText());
            System.out.println(" est " + courant.getChild("Profession").getText());

        }
    }

    static void ChercherInformation(String NomFichier, String recherche) {
        Element racine = new Element("repertoire");
        Document document = new Document(racine);
        //On cre une instance de SAXBuilder
        SAXBuilder sxb = new SAXBuilder();
        try {
            //On cre un nouveau document JDOM avec en argument le fichier XML
            //Le parsing est termin ;)
            document = sxb.build(new File(NomFichier));
        } catch (JDOMException | IOException e) {
        }

        //On initialise un nouvel lment racine avec l'lment racine du document.
        racine = document.getRootElement();
        //On cre une List contenant tous les noeuds "utilisateur" de l'Element racine
        List listUtilisateurs = racine.getChildren("utilisateur");
        //On cre un Iterator sur notre liste
        Iterator i = listUtilisateurs.iterator();
        System.out.println("Rsultat de la recherche:\n");
        while (i.hasNext()) {
            //On recre l'Element courant  chaque tour de boucle afin de
            //pouvoir utiliser les mthodes propres aux Element comme :
            //slectionner un nud fils, modifier du texte, etc...
            Element courant = (Element) i.next();
            //On affiche le nom de llment courant
            if (courant.getChild("nom").getText().equals(recherche)
                    || courant.getChild("Profession").getText().equals(recherche)) {
                System.out.println("Nom:" + courant.getChild("nom").getText());
                System.out.println("Profession:" + courant.getChild("Profession").getText() + "\n");
            }

        }
    }

    public static Document readFromString(String xmlString) throws JDOMException, IOException {
        SAXBuilder builder = new SAXBuilder();
        return builder.build(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
    }

    public static String Menu() throws IOException {
        String userInput;
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        do {

            System.out.println("############ Veuillez faire votre choix : ######################");
            System.out.println("################################################################ \n");
            System.out.println("############ --> Connexion : tapez 1 ###########################");
            System.out.println("############ --> Inscription : tapez 2 ##########################");
            System.out.println("############ --> Modification : tapez 3 ##########################");
            System.out.println("############ --> Rechercher : tapez 4 ##########################");
            System.out.println("############ --> Quitter : tapez 5 ##########################");
            System.out.println("############ --> Chat : tapez 6 ##########################");

            if ((userInput = stdIn.readLine()) != null && !userInput.equalsIgnoreCase("exit")) {
                System.out.println("Votre choix : " + userInput);
            }
        } while (!"1".equals(userInput) && !"2".equals(userInput) && !"3".equals(userInput)
                && !"4".equals(userInput) && !"5".equals(userInput) && !"6".equals(userInput));
        return userInput;
    }

    public static void main(String[] args) throws IOException, JDOMException {
        String choix1 = "1";

        GestionProto GP = new GestionProto();
        String userInput;
        String srvRep;
        String xmlOut;
        GestionnaireUtilisateur monGU = null;
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        ///////////////////////  Cration du socket client<->serveur /////////////////////////////

        Socket sockClient = new Socket("127.0.0.1", 57000);
        PrintWriter outToServer = new PrintWriter(sockClient.getOutputStream(), true);
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(sockClient.getInputStream()));

        /////////////////////////////////////////////////////////////////////////////////////////

        System.out.println("################################################################");
        System.out.println("################################################################");
        System.out.println("############ BIENVENUE DANS NOTRE PROJET JAVA ##################");
        System.out.println("################################################################");
        userInput = Menu();
        do {
            System.out.println("TEST:" + userInput);
            if ("1".equals(userInput)) {

                String utilisateur;
                String mdp;

                System.out.println("Connexion: \n");
                System.out.println("Entrer vos informations: \n");
                do {
                    do {
                        System.out.println("Nom d'utilisateur: \n");

                        utilisateur = stdIn.readLine();
                        if ("".equals(utilisateur)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(utilisateur));

                    do {
                        System.out.println("Mot de passe: \n");

                        mdp = stdIn.readLine();
                        if ("".equals(mdp)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(mdp));

                    xmlOut = GP.GenererMess("requte", "Connexion", utilisateur, mdp, "Profession", "??");
                    outToServer.println(xmlOut + Character.toString((char) 4));

                    srvRep = inFromServer.readLine();
                    System.out.println("srvRep: " + srvRep);
                    if (!srvRep.equals("a")) {
                        System.out.println("Vous tes bien connect!");
                        LireXML("Exercice.xml");

                        /* Cration du socket ecoute de la messagerie instantanne */

                        ThreadEcouteurMI leThreadEcouteurMI = new ThreadEcouteurMI("127.0.0.1", 58000);
                        leThreadEcouteurMI.start();

                        userInput = Menu();
                    } else {
                        System.out.println("Nom d'utilisateur ou mot depasse erron, recommencez!");
                    }
                } while ("a".equals(srvRep));

            } else if ("2".equals(userInput)) {
                String utilisateur;
                String mdp;
                String prof;
                System.out.println("Inscription: \n");
                System.out.println("Entrer vos informations: \n");

                do {
                    do {
                        System.out.println("Nom d'utilisateur: \n");

                        utilisateur = stdIn.readLine();
                        if ("".equals(utilisateur)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(utilisateur));

                    do {
                        System.out.println("Mot de passe: \n");

                        mdp = stdIn.readLine();
                        if ("".equals(mdp)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(mdp));

                    do {
                        System.out.println("Profession: \n");

                        prof = stdIn.readLine();
                        if ("".equals(prof)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(prof));

                    xmlOut = GP.GenererMess("requte", "ajoutUtilisateur", utilisateur, mdp, prof, "??");

                    outToServer.println(xmlOut + Character.toString((char) 4));

                    srvRep = inFromServer.readLine();
                    System.out.println("srvRep: " + srvRep);
                    if (!srvRep.equals("a")) {
                        System.out.println("Vous tes bien inscrit!");
                        userInput = Menu();
                    } else {
                        System.out.println("Utilisateur dja prsent, Recommencez!");
                    }
                } while ("a".equals(srvRep));

                while ((srvRep = inFromServer.readLine()).contains("</dasProtokol>") != true)
                    System.out.println("echo: " + srvRep);

            } else if ("3".equals(userInput)) {

                String utilisateur;
                String mdp;

                System.out.println("Modification: \n");
                System.out.println("Entrer vos informations: \n");
                do {
                    do {
                        System.out.println("Nom d'utilisateur: \n");

                        utilisateur = stdIn.readLine();
                        if ("".equals(utilisateur)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(utilisateur));

                    do {
                        System.out.println("Mot de passe: \n");

                        mdp = stdIn.readLine();
                        if ("".equals(mdp)) {
                            System.out.println("Mauvaise entre, recommencez!");
                        }
                    } while ("".equals(mdp));

                    xmlOut = GP.GenererMess("requte", "Modification", utilisateur, mdp, "Profession", "??");
                    outToServer.println(xmlOut + Character.toString((char) 4));

                    srvRep = inFromServer.readLine();
                    System.out.println("srvRep: " + srvRep);
                    if (!srvRep.equals("a")) {
                        System.out.println("Vous avez t trouv!");

                        String uti;
                        String modepa;
                        String profe;
                        System.out.println("Modification: \n");
                        System.out.println("Entrer vos nouvelles informations: \n");
                        do {
                            System.out.println("Nom d'utilisateur: \n");

                            uti = stdIn.readLine();
                            if ("".equals(uti)) {
                                System.out.println("Mauvaise entre, recommencez!");
                            }
                        } while ("".equals(uti));

                        do {
                            System.out.println("Mot de passe: \n");

                            modepa = stdIn.readLine();
                            if ("".equals(modepa)) {
                                System.out.println("Mauvaise entre, recommencez!");
                            }
                        } while ("".equals(modepa));

                        do {
                            System.out.println("Profession: \n");

                            profe = stdIn.readLine();
                            if ("".equals(profe)) {
                                System.out.println("Mauvaise entre, recommencez!");
                            }
                        } while ("".equals(profe));

                        xmlOut = GP.GenererMess("requte", "ajoutUtilisateur", uti, modepa, profe, "??");

                        userInput = Menu();
                        outToServer.println(xmlOut + Character.toString((char) 4));

                        while ((srvRep = inFromServer.readLine()).contains("</dasProtokol>") != true)
                            System.out.println("echo: " + srvRep);

                    } else {
                        System.out.println("Nom d'utilisateur ou mot depasse erron, recommencez!");
                    }
                } while ("a".equals(srvRep));

            } else if ("4".equals(userInput)) {

                System.out.println("Rechercher:");
                String recherche;
                recherche = stdIn.readLine();
                ChercherInformation("Exercice.xml", recherche);
                userInput = Menu();

            } else if ("6".equals(userInput)) {
                InetAddress adresseLocale = InetAddress.getByName("127.0.0.1");
                try (Socket sockChat = new Socket("127.0.0.1", 58000, adresseLocale, 58001)) {
                    PrintWriter outToChat = new PrintWriter(sockChat.getOutputStream(), true);
                    BufferedReader inFromChat = new BufferedReader(
                            new InputStreamReader(sockChat.getInputStream()));

                    String userInput2;
                    String reponseChat;
                    while ((userInput2 = stdIn.readLine()) != null && !userInput2.equalsIgnoreCase("exit")) {
                        outToChat.println(
                                xmlOut = GP.GenererMess("chat", userInput2, "hello comment va ?!", "?", "?", "??")
                                        + Character.toString((char) 4));
                        //synchronized(System.out) {
                        System.out.println("rponse chat::");

                        reponseChat = inFromChat.readLine();
                        System.out.println(reponseChat);

                        System.out.println("::end rp chat");
                        //}
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                userInput = Menu();
            }

        } while (!userInput.equals("5"));
        sockClient.close();
    }
}