Skip to content
Snippets Groups Projects
Commit e71c8a38 authored by Alexandre Dehaine's avatar Alexandre Dehaine
Browse files

v 1.2.1 readme

parent 068a8826
No related branches found
No related tags found
No related merge requests found
MCD.png 0 → 100644
MCD.png

50.2 KiB

File moved
MLD.png 0 → 100644
MLD.png

121 KiB

README.md 0 → 100644
# Doccumentation
## 1. Description générale de l’application
Ce projet consiste en une application web de réseau social, conçue pour permettre aux utilisateurs de créer des conversations et d’envoyer et recevoir des messages. L'application est construite en Java avec une architecture MVC.
### Fonctionnalités principales :
- **Gestion des utilisateurs** : Création de compte, authentification et gestion des informations personnelles.
- **Création et gestion des conversations** : L'utilisateur peut créer de nouvelles conversations, en rejoindre (à condition d'avoir le mot de passe) et poster des messages.
- **Interaction entre utilisateurs** : Les utilisateurs peuvent lire les messages des autres abonnés dans la même conversation, envoyer des messages, et voir la date et l'heure des messages.
- **Sécurité** : Protection contre les injections SQL et mot de passe chiffrés.
## 2. MCD et MDL
### MCD :
<img src="MCD.png">
### MLD :
<img src="MLD.png">
## 3. Requêtes pertinentes
**Récupérer le pseudo d'un utilisateur à partir de son email :**
```sql
SELECT pseudo
FROM Utilisateur
WHERE email = 'alexandre.dehaine.etu@univ-lille.fr';
```
**Récupérer toute une conversation avec les noms des utilisateurs et leurs messages dans l'ordre de lecture classique :**
```sql
SELECT u.pseudo, m.message
FROM Messages AS m
JOIN Utilisateur AS u ON m.utilisateur = u.email
WHERE idConv = (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1')
ORDER BY m.jour, m.heure;
```
**Récupérer tous les messages d'une conversation contenant le mot "ca va", avec les noms des utilisateurs, dans l'ordre de lecture classique :**
```sql
SELECT u.pseudo, m.message
FROM Messages AS m
JOIN Utilisateur AS u ON m.utilisateur = u.email
WHERE idConv = (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1')
AND LOWER(m.message) LIKE '%ca va%'
ORDER BY m.jour, m.heure;
```
**Récupérer tous les utilisateurs d'une conversation spécifique :**
```sql
SELECT DISTINCT utilisateur
FROM Messages
WHERE idConv = 1;
```
## 4. Arborescence
```
.
├── accueil.jsp
├── login.html
├── MCD.drawio
├── MCD.png
├── META-INF
│ └── context.xml
├── MLD.drawio
├── MLD.png
├── package.json
├── package-lock.json
├── README.md
├── rejoindre.jsp
├── ScriptSQL.sql
├── Supprimer.jsp
├── tree.txt
├── util.txt
└── WEB-INF
├── classes
│ └── dao
│ ├── Authent.class
│ ├── Conversation.class
│ ├── ConversationDao.class
│ ├── ConversationJdbcDao.class
│ ├── Message.class
│ ├── MessageDao.class
│ ├── MessageJdbcDao.class
│ ├── Utilisateur.class
│ ├── UtilisateurDao.class
│ └── UtilisateurJdbcDao.class
├── lib
│ ├── chesslib-1.1.8.jar
│ └── postgresql-42.7.4.jar
└── src
└── dao
├── Authent.java
├── ConversationDao.java
├── Conversation.java
├── ConversationJdbcDao.java
├── MessageDao.java
├── Message.java
├── MessageJdbcDao.java
├── UtilisateurDao.java
├── Utilisateur.java
└── UtilisateurJdbcDao.java
```
8 directories, 37 files
## 5. Liste des entrées des contrôleurs avec leur fonctionnalité
- **Créer un compte :** Un utilisateur non connecté peut créer un compte.
- **Se connecter :** Un utilisateur non connecté peut se connecter avec son compte.
- **Se déconnecter :** Un utilisateur connecté peut se déconnecter.
- **Créer une conversation :** Un utilisateur connecté peut créer une conversation, lui attribuant un nom, un mot de passe (non obligatoire, il permet d’empêcher les utilisateurs non invités de rejoindre la conversation) ainsi qu’un message de bienvenue (le premier message de la conversation).
- **Rejoindre une conversation :** Un utilisateur connecté peut rejoindre une conversation. Il lui faut l'ID de la conversation, le mot de passe si la conversation en possède un, ainsi qu'un premier message.
- **Supprimer une conversation :** Un utilisateur connecté peut supprimer une conversation qu'il a créée. Il lui faut le mot de passe (si la conversation en possède un) pour confirmer la suppression. Supprimer une conversation entraîne la suppression de tous les messages associés.
- **Sélectionner une conversation :** Un utilisateur connecté peut sélectionner une conversation parmi celles qu’il a rejointes.
- **Lire les messages :** Un utilisateur connecté qui a rejoint et sélectionné une conversation peut lire les messages des autres utilisateurs.
- **Poster un message :** Un utilisateur connecté qui a rejoint et sélectionné une conversation peut y poster un message.
## 6. Liste des points techniques difficiles
- **Tables :** La première difficulté a été de déterminer comment organiser le projet, savoir quelles tables créer et quelles informations y inclure, et comment les faire interagir ensemble. Il fallait aussi gérer les règles de relations entre ces tables.
- **JSP :** Ensuite, il a fallu utiliser les JSP, en se rappelant leur fonctionnement pour les exploiter au mieux, et choisir l’ordre et l’importance des différentes fonctionnalités.
- **Messages :** La fonctionnalité des messages a été la plus longue à implémenter. Il fallait réussir à afficher les bons messages lorsque la bonne conversation était sélectionnée.
- **Sessions et authentification :** La deuxième fonctionnalité la plus longue à implémenter a été la gestion des sessions et de l’authentification, notamment en ce qui concerne les permissions. Il était essentiel de faire en sorte que l’utilisateur ne puisse voir une conversation que s’il en avait la permission, et que seules les personnes autorisées puissent envoyer des messages ou supprimer des conversations.
......@@ -64,5 +64,5 @@ INSERT INTO Messages(message, utilisateur, idConv)
SELECT pseudo FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'; -- récupère le nom d'utilisateur depuis l'email
SELECT u.pseudo, m.message FROM Messages AS m JOIN Utilisateur AS u ON m.utilisateur = u.email where idConv = (SELECT idConv FROM Conversations where nomConv = 'Conversation 1') ORDER BY m.jour, m.heure; -- récupère toute une conversation avec le nom des utilisateur ainsi que les messages qu'ils ont envoyé dans l'ordre de lecture classique
SELECT u.pseudo, m.message FROM Messages AS m JOIN Utilisateur AS u ON m.utilisateur = u.email where idConv = (SELECT idConv FROM Conversations where nomConv = 'Conversation 1') AND LOWER(m.message) LIKE '%ca va%' ORDER BY m.jour, m.heure; -- récupère tous les messages d'une conversation avec le nom des utilisateur ainsi que les messages qu'ils ont envoyé contenant les mot "ca va" dans l'ordre de lecture classique
SELECT DISTINCT utilisateur FROM Messages WHERE idConv = 1;
SELECT DISTINCT utilisateur FROM Messages WHERE idConv = 1; -- récupère tout les utilisateurs d'une conversation
tree.txt 0 → 100644
.
├── accueil.jsp
├── login.html
├── MCD.drawio
├── MCD.png
├── META-INF
│ └── context.xml
├── MLD.drawio
├── MLD.png
├── package.json
├── package-lock.json
├── README.md
├── rejoindre.jsp
├── ScriptSQL.sql
├── Supprimer.jsp
├── tree.txt
├── util.txt
└── WEB-INF
├── classes
│ └── dao
│ ├── Authent.class
│ ├── Conversation.class
│ ├── ConversationDao.class
│ ├── ConversationJdbcDao.class
│ ├── Message.class
│ ├── MessageDao.class
│ ├── MessageJdbcDao.class
│ ├── Utilisateur.class
│ ├── UtilisateurDao.class
│ └── UtilisateurJdbcDao.class
├── lib
│ ├── chesslib-1.1.8.jar
│ └── postgresql-42.7.4.jar
└── src
└── dao
├── Authent.java
├── ConversationDao.java
├── Conversation.java
├── ConversationJdbcDao.java
├── MessageDao.java
├── Message.java
├── MessageJdbcDao.java
├── UtilisateurDao.java
├── Utilisateur.java
└── UtilisateurJdbcDao.java
8 directories, 37 files
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment