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

part 2 début

parent 6772645c
Branches
No related tags found
No related merge requests found
Showing
with 8416 additions and 15 deletions
DROP TABLE IF EXISTS Utilisateur CASCADE;
DROP TABLE IF EXISTS Messages CASCADE;
DROP TABLE IF EXISTS Conversations CASCADE;
DROP TABLE IF EXISTS Utilisateur CASCADE;
CREATE TABLE Utilisateur
(
pseudo VARCHAR,
......@@ -21,14 +21,47 @@ CREATE TABLE Conversations
CREATE TABLE Messages
(
idMessage SERIAL,
jour DATE,
heure TIME,
idConv int,
jour DATE default CURRENT_DATE,
heure TIME default CURRENT_TIME,
message VARCHAR,
utilisateur VARCHAR,
idConv int,
CONSTRAINT pk_Messages PRIMARY KEY (idMessage),
CONSTRAINT fk_Utilisateur FOREIGN KEY (utilisateur)
REFERENCES Utilisateur(email),
CONSTRAINT fk_Conversations FOREIGN KEY (idConv)
REFERENCES Conversations(idConv)
);
\ No newline at end of file
);
-- Création des utilisateur
INSERT INTO Utilisateur(pseudo, email, pwd)
VALUES('Alex2n','alexandre.dehaine.etu@univ-lille.fr', 'mdp');
INSERT INTO Utilisateur(pseudo, email, pwd)
VALUES('Shiira02','audrey.v.etu@univ-lille.fr', 'mdp');
-- Créations d'une Conversation 1 et de messages
INSERT INTO Conversations(nomConv, createur)
VALUES('Conversation 1', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'));
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Salut', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Hello', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
-- Créations d'une Conversation 2 et de messages
INSERT INTO Conversations(nomConv, createur)
VALUES('Conversation 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'));
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Conv 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 2'));
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Conv 2', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 2'));
-- Ajout d'un autre message dans la conv 1
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Comment ca va ?', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
INSERT INTO Messages(message, utilisateur, idConv)
VALUES('Ca va et toi ?', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
-- Select pratiques
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;
package dao;
public class AfficherUtilisateur {
public static void main(String[] args) {
UtilisateurJdbcDao j = new UtilisateurJdbcDao();
Utilisateur joueur = j.findByEmail(args[0]);
System.out.println(joueur);
}
}
File added
File added
File added
File added
File added
File added
File added
package dao;
import java.time.LocalDate;
public class Conversation {
private int idConv;
private LocalDate dateCrea;
private String nomConv;
private Utilisateur createur;
public Conversation(int idConv, String nomConv, Utilisateur createur, LocalDate dateCrea) {
this.idConv = idConv;
this.dateCrea = dateCrea;
this.nomConv = nomConv;
this.createur = createur;
}
public int getIdConv() {
return idConv;
}
public LocalDate getDateCrea() {
return dateCrea;
}
public String getNomConv() {
return nomConv;
}
public Utilisateur getCreateur() {
return createur;
}
public void setNomConv(String nomConv) {
this.nomConv = nomConv;
}
}
package dao;
import java.util.List;
public interface ConversationDao {
Conversation findById(int idConv);
List<Message> findAllMessages(int idConv);
List<Utilisateur> findAllUtilisateurs(int idConv);
boolean createConversation(String nomConv, Utilisateur createur);
boolean deleteMEssage(int idConv);
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
public class ConversationJdbcDao implements ConversationDao{
UtilisateurJdbcDao jdbcUser = new UtilisateurJdbcDao();
@Override
public Conversation findById(int idConv) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Conversation WHERE idConv = "+ idConv +";";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
rs.next();
Conversation conversation = new Conversation(rs.getInt(1), rs.getString(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate());
rs.close();
con.close();
return conversation;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new Conversation(0, "err", new Utilisateur("err","err" , "err"),LocalDate.now());
}
@Override
public List<Message> findAllMessages(int idConv) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Message WHERE idConv = "+idConv+";";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
List<Message> list = new ArrayList<Message>();
while(rs.next()){
list.add(new Message(rs.getInt(1), rs.getInt(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate() , rs.getTime(5).toLocalTime(), rs.getString(6)));
}
rs.close();
con.close();
return list;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new ArrayList<Message>();
}
@Override
public List<Utilisateur> findAllUtilisateurs(int idConv) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT DISTINCT utilisateur FROM Message WHERE idConv = "+idConv+";";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
rs.next();
String email =rs.getString(1);
String sql = "SELECT DISTINCT utilisateur FROM Message WHERE idConv = "+idConv+";"; // ICI TU DOIT FAIRE EN SORTE QUE UNE DEUXIEME REQUETTE PRENNE LES EMAIL POUR LES TRANSFO EN UTILISATEUR
List<Utilisateur> list = new ArrayList<Utilisateur>();
while(rs.next()){
list.add(new Utilisateur(rs.getString(1), rs.getString(2), rs.getString(3)));
}
rs.close();
con.close();
return list;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new ArrayList<Utilisateur>();
}
@Override
public boolean createConversation(String nomConv, Utilisateur createur) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'createConversation'");
}
@Override
public boolean deleteMEssage(int idConv) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'deleteMEssage'");
}
private Connection getCon() {
try {
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://psqlserv/but2";
String nom = "alexandredehaineetu";
String mdp = "moi";
Class.forName(driver);
return DriverManager.getConnection(url, nom, mdp);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
}
package dao;
import java.time.LocalDate;
import java.time.LocalTime;
public class Message {
int idMessage;
int idConv;
Utilisateur utilisateur;
LocalDate jour;
LocalTime heure;
String message;
public Message(int idMessage, int idConv, Utilisateur utilisateur, LocalDate jour, LocalTime heure, String message) {
this.idMessage = idMessage;
this.idConv = idConv;
this.utilisateur = utilisateur;
this.jour = jour;
this.heure = heure;
this.message = message;
}
@Override
public String toString(){
return "Email : " + utilisateur + " Date : " + jour + " Heure : " + heure + " Message : " + message;
}
public int getIdMessage() {
return idMessage;
}
public int getIdConv() {
return idConv;
}
public Utilisateur getUtilisateur() {
return utilisateur;
}
public LocalDate getJour() {
return jour;
}
public LocalTime getHeure() {
return heure;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package dao;
import java.util.List;
public interface MessageDao {
Message findById(int idMessage);
List<Message> findAll(Utilisateur utilisateur);
List<Message> findAll(Conversation conversation);
boolean createMessage(Utilisateur utilisateur, String message, int idConv);
boolean updateMessage(int idMessage, String message);
boolean deleteMEssage(int idMessage);
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
public class MessageJdbcDao implements MessageDao{
UtilisateurJdbcDao jdbcUser = new UtilisateurJdbcDao();
@Override
public Message findById(int idMessage) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Message WHERE idMessage = "+ idMessage +";";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
rs.next();
Message message = new Message(rs.getInt(1), rs.getInt(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate() , rs.getTime(5).toLocalTime(), rs.getString(6));
rs.close();
con.close();
return message;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new Message(0, 0, new Utilisateur("err","err" , "err"),LocalDate.now(), LocalTime.now(), "err");
}
@Override
public List<Message> findAll(Utilisateur utilisateur) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Message WHERE email = '"+utilisateur.getEmail()+"';";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
List<Message> list = new ArrayList<Message>();
while(rs.next()){
list.add(new Message(rs.getInt(1), rs.getInt(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate() , rs.getTime(5).toLocalTime(), rs.getString(6)));
}
rs.close();
con.close();
return list;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new ArrayList<Message>();
}
@Override
public List<Message> findAll(Conversation conversation) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Message WHERE idConv = "+conversation.getIdConv()+";";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
List<Message> list = new ArrayList<Message>();
while(rs.next()){
list.add(new Message(rs.getInt(1), rs.getInt(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate() , rs.getTime(5).toLocalTime(), rs.getString(6)));
}
rs.close();
con.close();
return list;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return new ArrayList<Message>();
}
@Override
public boolean createMessage(Utilisateur utilisateur, String message, int idConv) {
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "INSERT INTO Messages(message, utilisateur, idConv) VALUES('"+message+"', '"+utilisateur.getEmail()+"','"+idConv+"');";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
rs.next();
rs.close();
con.close();
return true;
}catch (SQLException e) {
System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
e.printStackTrace();
}
return false;
}
@Override
public boolean updateMessage(int idMessage, String message) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'updateMessage'");
}
@Override
public boolean deleteMEssage(int idMessage) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'deleteMEssage'");
}
private Connection getCon() {
try {
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://psqlserv/but2";
String nom = "alexandredehaineetu";
String mdp = "moi";
Class.forName(driver);
return DriverManager.getConnection(url, nom, mdp);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
}
......@@ -2,7 +2,7 @@ package dao;
import java.util.List;
public interface UtilisateurDao {
public interface UtilisateurDao {
Utilisateur findByEmail(String email);
List<Utilisateur> findAll();
boolean createUtilisateur(Utilisateur util);
......
......@@ -14,7 +14,7 @@ public class UtilisateurJdbcDao implements UtilisateurDao{
}
public Utilisateur findByEmail(String email){
try (Connection con = getCon(); Statement stmt = con.createStatement()) {
String sql = "SELECT * FROM Utilisateur WHERE email = "+ email +";";
String sql = "SELECT * FROM Utilisateur WHERE email = '"+ email +"';";
System.err.println(sql);
ResultSet rs = stmt.executeQuery(sql);
rs.next();
......
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment