Réorganistion totale du projet pour en simplifier l'utilisation, correction de quelques bugs et oublis.
This commit is contained in:
parent
f36198ca15
commit
a6d0af1222
43 changed files with 291 additions and 228 deletions
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="src" path="Projet_POO/src"/>
|
||||
<classpathentry kind="output" path="Projet_POO/bin"/>
|
||||
</classpath>
|
17
.project
17
.project
|
@ -1,17 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Projet_POO</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
BIN
Projet_POO-1.0-jar-with-dependencies.jar
Normal file
BIN
Projet_POO-1.0-jar-with-dependencies.jar
Normal file
Binary file not shown.
|
@ -1,15 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-14">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="C:/Program Files/Java/mysql-connector-java-8.0.22.jar" sourcepath="C:/Users/Marin/.m2/repository/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22-sources.jar">
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
|
1
Projet_POO/.gitignore
vendored
1
Projet_POO/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/bin/
|
|
@ -10,8 +10,14 @@
|
|||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
4
Projet_POO/.settings/org.eclipse.core.resources.prefs
Normal file
4
Projet_POO/.settings/org.eclipse.core.resources.prefs
Normal file
|
@ -0,0 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding/<project>=UTF-8
|
|
@ -1,14 +1,8 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=14
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=14
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=14
|
||||
|
|
4
Projet_POO/.settings/org.eclipse.m2e.core.prefs
Normal file
4
Projet_POO/.settings/org.eclipse.m2e.core.prefs
Normal file
|
@ -0,0 +1,4 @@
|
|||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
115
Projet_POO/pom.xml
Normal file
115
Projet_POO/pom.xml
Normal file
|
@ -0,0 +1,115 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>mbp</groupId>
|
||||
<artifactId>Projet_POO</artifactId>
|
||||
<version>1.0</version>
|
||||
|
||||
<name>Projet_POO</name>
|
||||
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>14</maven.compiler.source>
|
||||
<maven.compiler.target>14</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.11</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.23</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
|
||||
<plugins>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<configuration>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>defaut.Main</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-assembly</id> <!-- this is used for inheritance merges -->
|
||||
<phase>package</phase> <!-- bind to the packaging phase -->
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
|
||||
<plugin>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.22.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.0.2</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<index>true</index>
|
||||
<manifest>
|
||||
<mainClass>defaut.Main</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<version>2.5.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
</plugin>
|
||||
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-project-info-reports-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</project>
|
|
@ -1,74 +0,0 @@
|
|||
package clavardage;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import liste.GestionnaireListeUtilisateur;
|
||||
import liste.TypeListeUtilisateur;
|
||||
import nom.GestionnaireNom;
|
||||
import ui.DiscussionUI;
|
||||
|
||||
public class test {
|
||||
|
||||
public test() {
|
||||
|
||||
}
|
||||
/*
|
||||
public static void main2(String[] args) {
|
||||
ArrayList<GestionnaireSessionsLocales> l = new ArrayList<GestionnaireSessionsLocales>();
|
||||
int i;
|
||||
for (i = 0; i < 15; i++) {
|
||||
GestionnaireSessionsLocales gc = new GestionnaireSessionsLocales(i * 10 + 4, 5, "localhost");
|
||||
l.add(gc);
|
||||
if (i>=1) gc.createSession(4);
|
||||
}
|
||||
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.print("Nb de sessions de gc0: " + l.get(0).getSessions().size() + "\n");
|
||||
l.get(0).printSessions();
|
||||
System.out.print("Nb de sessions de gc2: " + l.get(1).getSessions().size() + "\n");
|
||||
l.get(1).printSessions();
|
||||
for (i=0; i<l.get(0).getSessions().size();i++) {
|
||||
sessionClavardage session = l.get(0).getSessions().get(i);
|
||||
String message = "Message de " + session.getIdSource() +" vers " + session.getIdDestination() +".\n";
|
||||
session.send(message);
|
||||
}
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
for (i = 1; i<l.size();i++) l.get(i).fermerSessions();
|
||||
|
||||
}
|
||||
*/
|
||||
/*public static void main(String[] args) {
|
||||
GestionnaireListeUtilisateur glu = GestionnaireListeUtilisateur.instance();
|
||||
ArrayList<TypeListeUtilisateur> list = new ArrayList<TypeListeUtilisateur>();
|
||||
list.add(new TypeListeUtilisateur("10", "User1", "localhost", "online"));
|
||||
list.add(new TypeListeUtilisateur("11", "User2", "localhost", "online"));
|
||||
glu.setListeUtilisateur(list);
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
gn.setId("11");
|
||||
gn.setIp("localhost");
|
||||
gn.setNom("User2");
|
||||
GestionnaireSessionsLocales gc = GestionnaireSessionsLocales.instance();
|
||||
gc.createSession("User1");
|
||||
|
||||
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
package defaut;
|
||||
|
||||
|
||||
public class Constante {
|
||||
|
||||
public static final String IP_BROADCAST = "255.255.255.255";
|
||||
public static final int SIZE_ORDRE = 100;
|
||||
public static final int NUM_PORT_SERVER_UDP = 2000;
|
||||
|
||||
|
||||
public static final String URL_SERVLET_MESSAGES = "https://srv-gei-tomcat.insa-toulouse.fr/Servlet_MBP/messageServlet";
|
||||
public static final String URL_SERVLET_PRESENCE = "https://srv-gei-tomcat.insa-toulouse.fr/Servlet_MBP/Servlet";
|
||||
|
||||
//Intervalle, en seconde, entre les requêtes envoyés périodiquement par chaque client au servlet
|
||||
public static final float POLL_FREQUENCY = 1;
|
||||
|
||||
|
||||
public static final boolean debug = true; // indique si l'on debug en local sur un seul ordinateur
|
||||
}
|
|
@ -14,11 +14,11 @@ public class GestionnaireHistorique {
|
|||
//Instance du gestionnaire d'historique
|
||||
static private GestionnaireHistorique uniqueInstance = null;
|
||||
|
||||
//Renvoie le gestionnaire d'historique, ou le crée s'il n'existe pas encore
|
||||
//Renvoie le gestionnaire d'historique, ou le crée s'il n'existe pas encore
|
||||
static public GestionnaireHistorique instance() {
|
||||
|
||||
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
if (GestionnaireHistorique.uniqueInstance == null) {
|
||||
GestionnaireHistorique.uniqueInstance = new GestionnaireHistorique();
|
||||
|
||||
|
@ -59,7 +59,7 @@ public class GestionnaireHistorique {
|
|||
"CREATE TABLE IF NOT EXISTS " + id
|
||||
+ "(id INT NOT NULL AUTO_INCREMENT,"
|
||||
+ "expediteur VARCHAR(50),"
|
||||
+ "msg VARCHAR(70),"
|
||||
+ "msg VARCHAR(5000),"
|
||||
+ "PRIMARY KEY (id) );";
|
||||
|
||||
String query2 = "SELECT * FROM " + id
|
||||
|
@ -79,11 +79,11 @@ public class GestionnaireHistorique {
|
|||
|
||||
while(rs2.next()) {
|
||||
System.out.println("Historic SUCCESS");
|
||||
history.append(GestionnaireNom.instance().nomFromId(rs2.getString(2)) + ": "); //indice commence à 1
|
||||
history.append(GestionnaireNom.instance().nomFromId(rs2.getString(2)) + ": "); //indice commence à 1
|
||||
history.append(rs2.getString(3) + System.lineSeparator());
|
||||
}
|
||||
|
||||
// à mettre dans un finally
|
||||
// à mettre dans un finally
|
||||
|
||||
|
||||
}
|
||||
|
@ -164,4 +164,5 @@ public class GestionnaireHistorique {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -36,7 +36,7 @@ public class GestionnaireMessagesDistants implements Runnable{
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//On essai de récupérer les nouveaux messages qui nous sont destinés sur le serveur, si il y en a.
|
||||
//On essai de récupérer les nouveaux messages qui nous sont destinés sur le serveur, si il y en a.
|
||||
ServletResponse res = new ServletResponse(0, null);
|
||||
|
||||
try {
|
|
@ -24,7 +24,7 @@ public class GestionnaireSessionsDistantes {
|
|||
//this.thread.start();
|
||||
}
|
||||
|
||||
//notifyRemoteClient vaut true si la fonction doit notifier le client distant de la création de la session, false sinon.
|
||||
//notifyRemoteClient vaut true si la fonction doit notifier le client distant de la création de la session, false sinon.
|
||||
public void createSession(String name, boolean notifyRemoteClient) throws IOException {
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
SessionClavardageDistante session = new SessionClavardageDistante(gn.getId(), gn.idFromNom(name));
|
||||
|
@ -32,7 +32,7 @@ public class GestionnaireSessionsDistantes {
|
|||
if (notifyRemoteClient) {
|
||||
EnvoiMessageDistance.envoiMessage("command", gn.getId(), gn.idFromNom(name), "startSession");
|
||||
}
|
||||
//Lancement de la fenêtre de session
|
||||
//Lancement de la fenêtre de session
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
|
@ -4,13 +4,12 @@ import java.io.IOException;
|
|||
import java.net.Socket;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import defaut.Constante;
|
||||
import nom.GestionnaireNom;
|
||||
import tcp.*;
|
||||
import ui.DiscussionUI;
|
||||
|
||||
public class GestionnaireSessionsLocales implements Runnable{
|
||||
public static final int PORT_REQUETE_NOUVELLE_SESSION = 19999;
|
||||
public static final int BACKLOG = 10;
|
||||
private static GestionnaireSessionsLocales uniqueInstance = null;
|
||||
private ConcurrentHashMap <String, SessionClavardageLocale> sessions = new ConcurrentHashMap <String, SessionClavardageLocale>();
|
||||
private TCPServer requestServer = null;
|
||||
|
@ -18,7 +17,7 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
|
||||
public static GestionnaireSessionsLocales instance() {
|
||||
if (uniqueInstance == null) {
|
||||
uniqueInstance = new GestionnaireSessionsLocales(BACKLOG);
|
||||
uniqueInstance = new GestionnaireSessionsLocales(Constante.BACKLOG);
|
||||
}
|
||||
return GestionnaireSessionsLocales.uniqueInstance;
|
||||
}
|
||||
|
@ -28,7 +27,12 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
if (GestionnaireNom.instance().getDansReseau()) {
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
System.out.print(gn.getIp());
|
||||
this.requestServer = new TCPServer(gn.getIp(), backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||
if (Constante.debug) {
|
||||
this.requestServer = new TCPServer(gn.getIp(), backlog, Constante.PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||
}
|
||||
else {
|
||||
this.requestServer = new TCPServer(gn.getIp(), backlog, Constante.PORT_REQUETE_NOUVELLE_SESSION);
|
||||
}
|
||||
this.thread = new Thread(this);
|
||||
this.thread.start();
|
||||
}
|
||||
|
@ -36,13 +40,20 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
|
||||
public void createSession(String name) {
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
TCPClient client = new TCPClient(gn.ipFromNom(name), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.idFromNom(name))) ;
|
||||
TCPClient client = null;
|
||||
if (Constante.debug) {
|
||||
client = new TCPClient(gn.ipFromNom(name), Constante.PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.idFromNom(name))) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
client = new TCPClient(gn.ipFromNom(name), Constante.PORT_REQUETE_NOUVELLE_SESSION) ;
|
||||
}
|
||||
SessionClavardageLocale session = new SessionClavardageLocale(gn.getId(), gn.idFromNom(name), client, null);
|
||||
this.sessions.put(gn.idFromNom(name), session);
|
||||
client.send(gn.getId()+System.lineSeparator());
|
||||
System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n");
|
||||
System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n");
|
||||
|
||||
//Lancement de la fenêtre de session
|
||||
//Lancement de la fenêtre de session
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
|
@ -68,11 +79,11 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
public void run() {
|
||||
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
//On ne lance pas le thread pour les clients à distance
|
||||
//On ne lance pas le thread pour les clients à distance
|
||||
while (gn.getDansReseau()) {
|
||||
|
||||
Socket ssocket = this.requestServer.accept();
|
||||
System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n");
|
||||
System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n");
|
||||
for (SessionClavardageLocale s : this.sessions.values()) System.out.print(s);
|
||||
TCPServerThread client = new TCPServerThread(ssocket,false);
|
||||
String idClient = null;
|
||||
|
@ -91,14 +102,20 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
else if (this.sessions.get(idClient) == null) {
|
||||
//Il n'existe pas encore de session entre les deux utilisateurs
|
||||
System.out.print("Nouvelle session sur le serveur de " + gn.getId() + "\n");
|
||||
TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(idClient));
|
||||
SessionClavardageLocale session = new SessionClavardageLocale(gn.getId(), idClient, clientEnvoi, client);
|
||||
TCPClient clientEnvoi = null;
|
||||
if (Constante.debug) {
|
||||
clientEnvoi = new TCPClient(client.getAdresseCible(), Constante.PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(idClient));
|
||||
}
|
||||
else {
|
||||
clientEnvoi = new TCPClient(client.getAdresseCible(), Constante.PORT_REQUETE_NOUVELLE_SESSION);
|
||||
}
|
||||
SessionClavardageLocale session = new SessionClavardageLocale(gn.getId(), idClient, clientEnvoi, client);
|
||||
this.sessions.put(idClient, session);
|
||||
clientEnvoi.send(gn.getId()+System.lineSeparator());
|
||||
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||
System.out.println("Il y a actuellement " + sessions.size() + " session(s) ouverte(s).");
|
||||
|
||||
//Lancement de la fenêtre de session
|
||||
//Lancement de la fenêtre de session
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
|
@ -112,14 +129,14 @@ public class GestionnaireSessionsLocales implements Runnable{
|
|||
}
|
||||
else if (this.sessions.get(idClient).getClientReception() == null) {
|
||||
System.out.print("Suite de la configuration sur le serveur de " + gn.getId() + "\n");
|
||||
//il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée
|
||||
//il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée
|
||||
this.sessions.get(idClient).setClientReception(client);
|
||||
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||
System.out.println("Il y a actuellement " + sessions.size() + " session(s) ouverte(s).");
|
||||
}
|
||||
|
||||
else {
|
||||
//Il existe déjà une connexion établie entre les deux machines
|
||||
//Il existe déjà une connexion établie entre les deux machines
|
||||
System.out.print("Tentative de session multiple sur le serveur de " + gn.getId() + "\n");
|
||||
client.stop();
|
||||
}
|
|
@ -61,7 +61,7 @@ public class SessionClavardageDistante extends SessionClavardage{
|
|||
}
|
||||
|
||||
public String toString() {
|
||||
return "Session à distance entre " + this.getIdSource() + " et " + this.getIdDestination() + System.lineSeparator();
|
||||
return "Session à distance entre " + this.getIdSource() + " et " + this.getIdDestination() + System.lineSeparator();
|
||||
}
|
||||
|
||||
|
|
@ -34,8 +34,8 @@ public class SessionClavardageLocale extends SessionClavardage{
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Session locale entre " + this.idSource + " à l'adresse " + this.clientEmission.getAdresseSource()
|
||||
+ ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + System.lineSeparator();
|
||||
return "Session locale entre " + this.idSource + " à l'adresse " + this.clientEmission.getAdresseSource()
|
||||
+ ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + System.lineSeparator();
|
||||
}
|
||||
|
||||
public TCPClient getClientReception() {
|
||||
|
@ -58,7 +58,7 @@ public class SessionClavardageLocale extends SessionClavardage{
|
|||
|
||||
@Override
|
||||
public void addPropertyChangeListener(PropertyChangeListener p) {
|
||||
while (this.getClientReception() == null); //On attends que le client soit configuré
|
||||
while (this.getClientReception() == null); //On attends que le client soit configuré
|
||||
this.getClientReception().addPropertyChangeListener(p);;
|
||||
|
||||
}
|
|
@ -23,7 +23,7 @@ public class ServletResponse {
|
|||
|
||||
public String toString (){
|
||||
if (this.messageList != null) {
|
||||
return "Status code: " + this.statusCode +", " + this.messageList.size() + " messages reçus.";
|
||||
return "Status code: " + this.statusCode +", " + this.messageList.size() + " messages reçus.";
|
||||
}
|
||||
else {
|
||||
return "Status code: " + this.statusCode;
|
25
Projet_POO/src/main/java/defaut/Constante.java
Normal file
25
Projet_POO/src/main/java/defaut/Constante.java
Normal file
|
@ -0,0 +1,25 @@
|
|||
package defaut;
|
||||
|
||||
import java.time.ZoneOffset;
|
||||
|
||||
public class Constante {
|
||||
|
||||
public static final String IP_BROADCAST = "255.255.255.255";
|
||||
public static final int SIZE_ORDRE = 100;
|
||||
public static final int NUM_PORT_SERVER_UDP = 2000;
|
||||
|
||||
//URL du serveur sur lequel se trouve le servlet
|
||||
public static final String URL_SERVLET = "https://srv-gei-tomcat.insa-toulouse.fr/Servlet_MBP";
|
||||
public static final String URL_SERVLET_MESSAGES = URL_SERVLET + "/messageServlet";
|
||||
public static final String URL_SERVLET_PRESENCE = URL_SERVLET + "/Servlet";
|
||||
|
||||
public static final boolean debug = true; // indique si l'on debug en local sur un seul ordinateur
|
||||
|
||||
//Port sur lequelle le serveur TCP reçoit les demandes d'ouverture de sessions
|
||||
public static final int PORT_REQUETE_NOUVELLE_SESSION = 19999;
|
||||
//Nombre maximal de demandes dans la file d'attente du serveur
|
||||
public static final int BACKLOG = 10;
|
||||
|
||||
//écart par rapport au fuseau horraire UTC
|
||||
public static final ZoneOffset TIME_ZONE_OFFSET = ZoneOffset.UTC;
|
||||
}
|
|
@ -5,13 +5,13 @@ import ui.Login_RegisterUI;
|
|||
|
||||
public class Main {
|
||||
|
||||
public static final int UDP_SERVER_PORT_DEBUG = 2004;
|
||||
public static final int UDP_SERVER_PORT_DEBUG = 2000;
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
// les méthode finissant par 2 sont le double de celle sans 2, servant à tester en local.
|
||||
//Elles sont utilisés lorsque la constante debug vaut true
|
||||
// les méthode finissant par 2 sont le double de celle sans 2, servant à tester en local.
|
||||
//Elles sont utilisés lorsque la constante debug vaut true
|
||||
|
||||
|
||||
//on lance le UI
|
|
@ -11,17 +11,17 @@ import servlet.Post;
|
|||
|
||||
public class GestionnaireListeUtilisateur {
|
||||
|
||||
//contient la liste Utilisateur à jour
|
||||
//contient la liste Utilisateur à jour
|
||||
private ArrayList<TypeListeUtilisateur> listeUtilisateur = new ArrayList<TypeListeUtilisateur>();
|
||||
|
||||
|
||||
//Instance du gestionnaire de liste
|
||||
static private GestionnaireListeUtilisateur uniqueInstance = null;
|
||||
|
||||
//Renvoie le gestionnaire de liste, ou le crée s'il n'existe pas encore
|
||||
//Renvoie le gestionnaire de liste, ou le crée s'il n'existe pas encore
|
||||
static public GestionnaireListeUtilisateur instance() {
|
||||
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
if (GestionnaireListeUtilisateur.uniqueInstance == null) {
|
||||
GestionnaireListeUtilisateur.uniqueInstance = new GestionnaireListeUtilisateur();
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class GestionnaireListeUtilisateur {
|
|||
|
||||
|
||||
|
||||
//Demande à tout le monde d'envoyer leur infos (TypeListeUtilisateur) --> Uniquement lors de la connexion
|
||||
//Demande à tout le monde d'envoyer leur infos (TypeListeUtilisateur) --> Uniquement lors de la connexion
|
||||
public void majListe() {
|
||||
if (GestionnaireNom.instance().getDansReseau()) {
|
||||
envoie("listRequest"+ "$$$" + " " + "$$$" + " " + "$$$" + " " + "$$$" + " " + "$$$" + " ");
|
||||
|
@ -57,7 +57,7 @@ public class GestionnaireListeUtilisateur {
|
|||
+ GestionnaireNom.instance().getStatut() );
|
||||
}
|
||||
catch (IOException e) {
|
||||
//TODO Là aussi traiter l'erreur
|
||||
//TODO Là aussi traiter l'erreur
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -72,11 +72,11 @@ public class GestionnaireListeUtilisateur {
|
|||
+ GestionnaireNom.instance().getStatut() );
|
||||
}
|
||||
catch (IOException e) {
|
||||
//TODO Là aussi traiter l'erreur
|
||||
//TODO Là aussi traiter l'erreur
|
||||
}
|
||||
}
|
||||
|
||||
//ecoute le port de broadcast pour recevoir le message personnalisé
|
||||
//ecoute le port de broadcast pour recevoir le message personnalisé
|
||||
public void ecoute() { //static ??
|
||||
Thread ecouteThread = new Thread(new UdpBroadcastServer(Constante.NUM_PORT_SERVER_UDP));
|
||||
ecouteThread.start();
|
|
@ -26,7 +26,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
|
||||
public void run() {
|
||||
try {
|
||||
//On décompose la cmd
|
||||
//On décompose la cmd
|
||||
String ordre = cmd[0]; // add / delete / listRequest / statut
|
||||
String id = cmd[1];
|
||||
String nom = cmd[2];
|
||||
|
@ -67,7 +67,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
changeStatut(id, statut);
|
||||
}
|
||||
|
||||
//System.out.println("libéré");
|
||||
//System.out.println("libéré");
|
||||
semaphore.release();
|
||||
|
||||
|
||||
|
@ -84,7 +84,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
private void envoyerNom() { //localHost TODO (gerer IP, unhandle exception ...)
|
||||
GestionnaireListeUtilisateur.instance().envoie(
|
||||
"add"+ "$$$" + GestionnaireNom.instance().getId() + "$$$" +
|
||||
GestionnaireNom.instance().getNom() + "$$$" + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() );
|
||||
GestionnaireNom.instance().getNom() + "$$$" + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" + GestionnaireNom.instance().getStatut() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -92,13 +92,13 @@ public class TraitementCmdListe implements Runnable{
|
|||
private void envoyerNom2(int port) { //localHost TODO (gerer IP, unhandle exception ...)
|
||||
GestionnaireListeUtilisateur.instance().envoie2(
|
||||
"add"+ "$$$" + GestionnaireNom.instance().getId() + "$$$" +
|
||||
GestionnaireNom.instance().getNom() + "$$$" + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() );
|
||||
GestionnaireNom.instance().getNom() + "$$$" + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" + GestionnaireNom.instance().getStatut());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//Ajoute les utilisateurs à la listeUtilisateur
|
||||
//Ajoute les utilisateurs à la listeUtilisateur
|
||||
private void ajouteUtilisateur(String id, String nom, String ip, String statut, boolean local) {
|
||||
|
||||
boolean inListe = false;
|
||||
|
@ -121,7 +121,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
|
||||
}
|
||||
|
||||
//mise à jour des graphismes
|
||||
//mise à jour des graphismes
|
||||
ListUI.update();
|
||||
}
|
||||
|
||||
|
@ -139,12 +139,12 @@ public class TraitementCmdListe implements Runnable{
|
|||
}
|
||||
}
|
||||
|
||||
//mise à jour des graphismes
|
||||
//mise à jour des graphismes
|
||||
ListUI.update();
|
||||
}
|
||||
|
||||
|
||||
// Met à jour le Statut d'un utilisateur
|
||||
// Met à jour le Statut d'un utilisateur
|
||||
private void changeStatut(String id, String statut) {
|
||||
for (TypeListeUtilisateur user : GestionnaireListeUtilisateur.instance().getListeUtilisateur()) {
|
||||
if (user.id.equals(id)) {
|
||||
|
@ -153,7 +153,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
}
|
||||
}
|
||||
|
||||
//mise à jour des graphismes
|
||||
//mise à jour des graphismes
|
||||
ListUI.update();
|
||||
|
||||
}
|
|
@ -46,7 +46,7 @@ public class UdpBroadcastClient implements Runnable{
|
|||
try {
|
||||
serverSocket.close();
|
||||
} catch (Exception e) {
|
||||
System.out.println("Erreur : pas de Client Socket à fermer (UDP)");
|
||||
System.out.println("Erreur : pas de Client Socket à fermer (UDP)");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
|
@ -50,7 +50,7 @@ public class UdpBroadcastServer implements Runnable{
|
|||
try {
|
||||
serverSocket.close();
|
||||
} catch (Exception e) {
|
||||
System.out.println("Erreur : pas de Server Socket à fermer (UDP)");
|
||||
System.out.println("Erreur : pas de Server Socket à fermer (UDP)");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -20,11 +20,11 @@ public class GestionnaireNom{
|
|||
//Instance du gestionnaire de nom
|
||||
static private GestionnaireNom uniqueInstance = null;
|
||||
|
||||
//Renvoie le gestionnaire de nom, ou le crée s'il n'existe pas encore
|
||||
//Renvoie le gestionnaire de nom, ou le crée s'il n'existe pas encore
|
||||
static public GestionnaireNom instance() {
|
||||
|
||||
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
//Si l'instance n'existe pas, on la crée
|
||||
if (GestionnaireNom.uniqueInstance == null) {
|
||||
GestionnaireNom.uniqueInstance = new GestionnaireNom();
|
||||
|
||||
|
@ -131,7 +131,7 @@ public class GestionnaireNom{
|
|||
}
|
||||
|
||||
|
||||
//renvoie le nom associé à un id ou "null" s'il n'existe pas (ou non en ligne)
|
||||
//renvoie le nom associé à un id ou "null" s'il n'existe pas (ou non en ligne)
|
||||
public String nomFromId(String id) {
|
||||
for (int i=0; i<GestionnaireListeUtilisateur.instance().getListeUtilisateur().size(); i++) {
|
||||
if (GestionnaireListeUtilisateur.instance().getListeUtilisateur().get(i).id.equals(id) ) {
|
||||
|
@ -157,7 +157,7 @@ public class GestionnaireNom{
|
|||
|
||||
|
||||
|
||||
// Associe un nom à l'utilisateur et prévient les autres.
|
||||
// Associe un nom à l'utilisateur et prévient les autres.
|
||||
public void nommer(String nom) {
|
||||
setNom(nom);
|
||||
if (GestionnaireNom.instance().getDansReseau()) {
|
||||
|
@ -191,7 +191,7 @@ public class GestionnaireNom{
|
|||
|
||||
|
||||
|
||||
// Supprime l'utilisateur et prévient les autres.
|
||||
// Supprime l'utilisateur et prévient les autres.
|
||||
public void supprimer() {
|
||||
if (GestionnaireNom.instance().getDansReseau()) {
|
||||
GestionnaireListeUtilisateur.instance().envoie("delete"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + getIp() + "$$$" + getDansReseau() + "$$$" + getStatut());
|
|
@ -156,9 +156,9 @@ public class TCPClient {
|
|||
//TCPClient client = new TCPClient("LAPTOP-944OJJB9", 19999);
|
||||
TCPClient client = new TCPClient("srv-gei-tomcat.insa-toulouse.fr", 19999);
|
||||
String message = "Bonjour.";
|
||||
System.out.printf("Message envoyé: %s", message);
|
||||
System.out.printf("Message envoyé: %s", message);
|
||||
client.send(message);
|
||||
System.out.printf("Message reçu: %s"+System.lineSeparator(), client.receive());
|
||||
System.out.printf("Message reçu: %s"+System.lineSeparator(), client.receive());
|
||||
client.stop();
|
||||
}
|
||||
}
|
|
@ -11,7 +11,7 @@ import nom.GestionnaireNom;
|
|||
public class TCPServerThread extends TCPClient implements Runnable{
|
||||
|
||||
Thread thread;
|
||||
boolean terminé = false;
|
||||
boolean terminé = false;
|
||||
private Message lastMessage = null;
|
||||
private LinkedList <Message> messageQueue = new LinkedList <Message> ();
|
||||
|
||||
|
@ -35,7 +35,7 @@ public class TCPServerThread extends TCPClient implements Runnable{
|
|||
|
||||
|
||||
public void stop() {
|
||||
this.terminé = true;
|
||||
this.terminé = true;
|
||||
try {
|
||||
this.socket.close();
|
||||
}
|
||||
|
@ -63,16 +63,16 @@ public class TCPServerThread extends TCPClient implements Runnable{
|
|||
|
||||
|
||||
public void run() {
|
||||
while (!terminé) {
|
||||
while (!terminé) {
|
||||
try {
|
||||
Message message = this.receiveObject();
|
||||
addMessage(message);
|
||||
System.out.print("Terminé : " + terminé + ", message reçu : " + message + "\n");
|
||||
System.out.print("Terminé : " + terminé + ", message reçu : " + message + "\n");
|
||||
}
|
||||
|
||||
catch(EOFException e) {
|
||||
//La connexion a été interrompue par l'autre client
|
||||
this.terminé = true;
|
||||
//La connexion a été interrompue par l'autre client
|
||||
this.terminé = true;
|
||||
System.out.println("L'interruption de la connection a eu lieu");
|
||||
Message messageStop = new Message();
|
||||
messageStop.setType("command");
|
||||
|
@ -83,11 +83,11 @@ public class TCPServerThread extends TCPClient implements Runnable{
|
|||
|
||||
catch (IOException e) {
|
||||
//La connexion est interrompue par notre client/une erreur
|
||||
this.terminé = true;
|
||||
this.terminé = true;
|
||||
System.out.print("Connection sur le port " + this.port + " vers " + this.adresseCible +" interrompue.\n");
|
||||
}
|
||||
catch (Exception e) {
|
||||
this.terminé = true;
|
||||
this.terminé = true;
|
||||
System.out.print(e);
|
||||
}
|
||||
}
|
|
@ -14,10 +14,12 @@ import java.awt.event.ActionListener;
|
|||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.io.IOException;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.ArrayList;
|
||||
import java.awt.event.ActionEvent;
|
||||
import clavardage.*;
|
||||
import data.Message;
|
||||
import defaut.Constante;
|
||||
import nom.GestionnaireNom;
|
||||
|
||||
public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
||||
|
@ -54,13 +56,14 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
ArrayList <Message> list = session.getNewMessages();
|
||||
for (Message msg : list) {
|
||||
if (msg.getType().equals("command") && msg.getBody().equals("stopSession")) {
|
||||
historicField.setText(historicField.getText() + GestionnaireNom.instance().nomFromId(session.getIdDestination()) + " s'est déconnecté(e)."+System.lineSeparator());
|
||||
historicField.setText(historicField.getText() + GestionnaireNom.instance().nomFromId(session.getIdDestination()) + " s'est déconnecté(e)."+System.lineSeparator());
|
||||
this.finDeSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.print(msg);
|
||||
String message = GestionnaireNom.instance().nomFromId(msg.getSender()) + ": " + msg.getBody();
|
||||
String temps = msg.getDate().atZone(Constante.TIME_ZONE_OFFSET).getHour()+":"+msg.getDate().atZone(Constante.TIME_ZONE_OFFSET).getMinute();
|
||||
String message = GestionnaireNom.instance().nomFromId(msg.getSender()) + ": " + msg.getBody() +" (" + temps + ")";
|
||||
historicField.setText(historicField.getText() + message + System.lineSeparator());
|
||||
|
||||
}
|
||||
|
@ -68,7 +71,7 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
}
|
||||
|
||||
public void finDeSession() {
|
||||
this.session.removePropertyChangeListener(this); //On arrête d'écouter les messages provenant du client en face
|
||||
this.session.removePropertyChangeListener(this); //On arrête d'écouter les messages provenant du client en face
|
||||
GestionnaireSessionsLocales.instance().deleteSession(session);
|
||||
this.setSession(null);
|
||||
System.out.println(this.session);
|
||||
|
@ -83,17 +86,18 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
message.setSender(this.session.getIdSource());
|
||||
message.setRecipient(this.session.getIdDestination());
|
||||
textField.setText("");
|
||||
historicField.append(GestionnaireNom.instance().nomFromId(message.getSender()) +": " + message.getBody() + System.lineSeparator());
|
||||
String temps = message.getDate().atZone(Constante.TIME_ZONE_OFFSET).getHour()+":"+message.getDate().atZone(Constante.TIME_ZONE_OFFSET).getMinute();
|
||||
historicField.append(GestionnaireNom.instance().nomFromId(message.getSender()) + ": " + message.getBody() + " (" + temps + ")" + System.lineSeparator());
|
||||
try {
|
||||
session.sendObject(message);
|
||||
} catch (IOException e) {
|
||||
System.out.println("Echec lors de l'envoi de l'objet message.");
|
||||
}
|
||||
GestionnaireHistorique.instance().ajouter(this.session.getIdSource(), this.session.getIdDestination(), this.session.getIdSource(), message.getBody());
|
||||
GestionnaireHistorique.instance().ajouter(this.session.getIdSource(), this.session.getIdDestination(), this.session.getIdSource(), message.getBody() + " (" + temps + ")");
|
||||
}
|
||||
}
|
||||
|
||||
private void récupérerHistorique() {
|
||||
private void récupérerHistorique() {
|
||||
historicField.append(GestionnaireHistorique.instance().recuperer(this.session.getIdSource(), this.session.getIdDestination()));
|
||||
}
|
||||
/**
|
||||
|
@ -120,7 +124,7 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
historicField.setEditable(false);
|
||||
scrollPane.setViewportView(historicField);
|
||||
historicField.setColumns(10);
|
||||
this.récupérerHistorique();
|
||||
this.récupérerHistorique();
|
||||
|
||||
|
||||
textField = new JTextField();
|
|
@ -103,7 +103,7 @@ public class ListUI extends JFrame implements Runnable{
|
|||
// Titre
|
||||
setTitle("List : " + GestionnaireNom.instance().getId());
|
||||
|
||||
// Operation par défaut
|
||||
// Operation par défaut
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
//Dimension
|
||||
|
@ -220,12 +220,12 @@ public class ListUI extends JFrame implements Runnable{
|
|||
|
||||
|
||||
/**
|
||||
* Méthode
|
||||
* Méthode
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// à améliorer ... (suppression ?)
|
||||
// à améliorer ... (suppression ?)
|
||||
private void ajouterNomListe(DefaultTableModel dtm, ArrayList<String> liste) {
|
||||
for (String t : liste) {
|
||||
if (!t.equals(GestionnaireNom.instance().getNom())) {
|
||||
|
@ -288,8 +288,8 @@ public class ListUI extends JFrame implements Runnable{
|
|||
|
||||
|
||||
|
||||
// mise à jour des graphismes
|
||||
public static void update() { //TODO à refaire en plus jolie (observer ou autre)
|
||||
// mise à jour des graphismes
|
||||
public static void update() { //TODO à refaire en plus jolie (observer ou autre)
|
||||
|
||||
ArrayList<TypeListeUtilisateur> listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur();
|
||||
DefaultListModel<TypeListeUtilisateur> defaultListModel = new DefaultListModel<TypeListeUtilisateur>();
|
||||
|
@ -309,7 +309,7 @@ public class ListUI extends JFrame implements Runnable{
|
|||
String item = (String) comboBox.getSelectedItem();
|
||||
System.out.println(item); // debug
|
||||
GestionnaireNom.instance().setStatut(item);
|
||||
// on envoie l'info à la servlet
|
||||
// on envoie l'info à la servlet
|
||||
try {
|
||||
Post.sendPOST("statut$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$"
|
||||
+ GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$"
|
|
@ -79,7 +79,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
//titre
|
||||
setTitle("Login");
|
||||
|
||||
//opération par défaut
|
||||
//opération par défaut
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
//dimension
|
||||
|
@ -225,16 +225,16 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
|
||||
|
||||
/**
|
||||
* Méthode
|
||||
* Méthode
|
||||
*/
|
||||
|
||||
// Teste la validité des champs. //pour tester avant utilisation bdd
|
||||
// Teste la validité des champs. //pour tester avant utilisation bdd
|
||||
private void enter2() {
|
||||
String id = idField.getText();
|
||||
String pwd = String.valueOf(passwordField.getPassword());
|
||||
|
||||
//debug --> utiliser pwd : admin et n'importe quel ID pour créer différents user (attention chaque user doit avoir un server (main))
|
||||
if( pwd.equals("admin") || id.equals("0") ) { //remplaver || par && -> facilite debug //TODO ( à remplacer par BDD après )
|
||||
//debug --> utiliser pwd : admin et n'importe quel ID pour créer différents user (attention chaque user doit avoir un server (main))
|
||||
if( pwd.equals("admin") || id.equals("0") ) { //remplaver || par && -> facilite debug //TODO ( à remplacer par BDD après )
|
||||
|
||||
GestionnaireSessionsLocales.instance();
|
||||
GestionnaireSessionsDistantes.instance();
|
||||
|
@ -243,7 +243,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
dispose();
|
||||
|
||||
|
||||
//2eme Méthode avec Thread
|
||||
//2eme Méthode avec Thread
|
||||
Thread t = new Thread(new NomUI());
|
||||
t.start();
|
||||
|
||||
|
@ -278,12 +278,12 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
GestionnaireNom.instance().setId(id);
|
||||
|
||||
|
||||
//On a maintenant les informations nécessaires pour initialiser l'application
|
||||
//On a maintenant les informations nécessaires pour initialiser l'application
|
||||
|
||||
//on lance le server d'écoute de cmd pour les clients locaux
|
||||
//on lance le server d'écoute de cmd pour les clients locaux
|
||||
if (GestionnaireNom.instance().getDansReseau()) {
|
||||
if (defaut.Constante.debug) {
|
||||
GestionnaireListeUtilisateur.instance().ecoute2(Main.UDP_SERVER_PORT_DEBUG);
|
||||
GestionnaireListeUtilisateur.instance().ecoute2(Main.UDP_SERVER_PORT_DEBUG + Integer.parseInt(GestionnaireNom.instance().getId()));
|
||||
} else {
|
||||
GestionnaireListeUtilisateur.instance().ecoute();
|
||||
|
||||
|
@ -300,7 +300,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
GestionnaireSessionsDistantes.instance();
|
||||
GestionnaireMessagesDistants.instance();
|
||||
|
||||
//On met à jour la liste des utilisateurs
|
||||
//On met à jour la liste des utilisateurs
|
||||
if (Constante.debug) {
|
||||
GestionnaireListeUtilisateur.instance().majListe2();
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
|||
passwordField.setText("");
|
||||
}
|
||||
|
||||
// à mettre dans un finally
|
||||
// à mettre dans un finally
|
||||
rs.close();
|
||||
st.close();
|
||||
con.close();
|
|
@ -115,12 +115,12 @@ public class NomUI extends JFrame implements Runnable{
|
|||
|
||||
|
||||
/**
|
||||
* Méthode
|
||||
* Méthode
|
||||
*/
|
||||
|
||||
// On choisit son Username
|
||||
private void nommer(String nom) {
|
||||
// Si l'on se renomme on peut annuler en entrant rien ou Reprendre le même Username
|
||||
// Si l'on se renomme on peut annuler en entrant rien ou Reprendre le même Username
|
||||
if( (GestionnaireNom.instance().getNom() != null) && ( nom.isBlank() || nom.equals(GestionnaireNom.instance().getNom()) ) ) {
|
||||
dispose();
|
||||
|
||||
|
@ -131,7 +131,7 @@ public class NomUI extends JFrame implements Runnable{
|
|||
else {
|
||||
//Sinon on essaye de prendre un nom
|
||||
if (GestionnaireNom.instance().verifierDisponibiliteNom(nom)) {
|
||||
//Celui-ci ne peut pas être "vide" + protection cmd
|
||||
//Celui-ci ne peut pas être "vide" + protection cmd
|
||||
if (!nom.isBlank() && !nom.contains("$$$")) {
|
||||
|
||||
if (defaut.Constante.debug) {
|
|
@ -1,5 +0,0 @@
|
|||
module projet_POO {
|
||||
requires java.desktop;
|
||||
requires java.sql;
|
||||
requires mysql.connector.java;
|
||||
}
|
|
@ -1,8 +1,11 @@
|
|||
# Projet_POO
|
||||
|
||||
|
||||
L'application est sous la forme d'un projet maven pour eclipse.
|
||||
Pour lancer le projet --> Lancer la Classe nommée "Main" dans le package "defaut".
|
||||
(les autres mains ne servaient qu'à débuger à un moment donné)
|
||||
(les autres mains ne servaient qu'à débuger à un moment donné). Pour déployer le projet :
|
||||
avec maven, build le projet en utilisant le goal "package assembly:single" pour obtenir un executable
|
||||
qu'il suffit ensuite de copier sur les machines de votre choix. Un exemplaire précompilé est disponible
|
||||
sur le git.
|
||||
|
||||
|
||||
lien git COO : https://git.etud.insa-toulouse.fr/benassai/Projet_COO.git
|
||||
|
|
Loading…
Reference in a new issue