This commit is contained in:
LMAGallois 2020-12-17 11:03:46 +01:00
parent 75548e7f08
commit fcb1ccf532
3 changed files with 119 additions and 163 deletions

View file

@ -9,6 +9,7 @@ import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -335,9 +336,15 @@ public class Controller {
}catch(IOException e) {
System.out.println("Error linking to TCP server of "+ c.getRemoteUser().getPortTCP());
}
c.setSocket(link);
JOptionPane.showMessageDialog(null ,"New chat with "+c.getRemoteUser().getPseudo());
try {
System.out.println(this.getHistory().retrieveMessage(getMyUser(), c.getRemoteUser()));
} catch (SQLException e) {
System.out.println("souci avec le retrieveMsg");
e.printStackTrace();
}
// TODO Récupération de la conversation (historique)
}
@ -361,21 +368,13 @@ public class Controller {
Date date=new Date();
//this.getHistory().saveMessage(getMyUser(), c.getRemoteUser(),message ,dateFormat.format(date) );
/*
System.out.println(this.getHistory());
System.out.println(this.myUser.getPseudo());
System.out.println(c.getRemoteUser().getPseudo());
System.out.println(message);
System.out.println(dateString);
*/
// Sauvegarde dans la base de données
// TODO save history (On doit choisir entre sauvegarder à la reception ou a l'emission) même appel dans ListeningThreadTCPChat.run()
//this.getHistory().saveMessage(this.myUser, c.getRemoteUser(),message ,dateString);
//this.getHistory().saveMessage(getMyUser(), c.getRemoteUser(),message ,dateFormat.format(date));
// Envoie du message (avec la date)
//System.out.println(dateFormat.format(date));
//System.out.println(message);
out.println(dateFormat.format(date));
out.println(message);
}

View file

@ -10,112 +10,150 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Calendar;
import javax.sql.rowset.JdbcRowSet;
public class Historique {
private model.Database bdd;
private ResultSet rs_received;
private ResultSet rs_sent;
private ResultSetMetaData rsmd_received;
private ResultSetMetaData rsmd_sent;
public void setRSReceived(ResultSet rs) {
this.rs_received=rs;
}
public void setRSSent(ResultSet rs) {
this.rs_sent=rs;
}
public ResultSet getRSSent() {
return this.rs_sent;
}
public ResultSet getRSReceived() {
return this.rs_received;
}
public void setRSMDReceived(ResultSetMetaData rsmd) {
this.rsmd_received=rsmd;
}
public void setRSMDSent(ResultSetMetaData rsmd) {
this.rsmd_sent=rsmd;
}
public ResultSetMetaData getRSMDReceived() {
return this.rsmd_received;
}
public ResultSetMetaData getRSMDSent() {
return this.rsmd_sent;
}
public void saveMessage(model.User ctr1, model.RemoteUser ctr2, String input, String date) {
System.out.println("coucou");
try {
Class.forName("java.sql.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:mysql://srv-bdens.insa-toulouse.fr:3306","tp_servlet_003","povu3Ma2");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Statement stat = null;
try {
stat = con.createStatement();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int nb_changed_rows = 0;
try {
nb_changed_rows = this.bdd.getStatement().executeUpdate("INSERT INTO chat values ("+ctr1.getIPcode()+","+ctr2.getIPcode()+","+input+","+date+")");
nb_changed_rows = stat.executeUpdate("USE tp_servlet_003");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
nb_changed_rows = stat.executeUpdate("CREATE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )");
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("coucou");
try {
nb_changed_rows = stat.executeUpdate("INSERT INTO chat VALUES ('"+ctr1.getIPcode()+"','"+ctr2.getIPcode()+"','"+input+"','"+date+"')");
} catch (SQLException e) {
System.out.println("insertion pas établie");
e.printStackTrace();
}
//nb_changed_rows = this.bdd.getStatement().executeUpdate("DELETE FROM table where name=noname");
if (nb_changed_rows==0){
System.out.println("la modification n'a pas eu lieue");
// try {
// nb_changed_rows = stat.executeUpdate("DELETE FROM chat WHERE data(VARCHAR(255))="valeur"");
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
try {
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String retrieveMessage(model.LocalUser user1, model.RemoteUser user2) throws SQLException {
this.setRSSent(this.bdd.getStatement().executeQuery("SELECT"+user1.getIPcode()+","+user2.getIPcode()+",? ,? FROM table"));
this.setRSReceived(this.bdd.getStatement().executeQuery("SELECT"+user2.getIPcode()+","+user1.getIPcode()+",?, ? FROM table"));
//this.setRSMDSent(this.getRSSent().getMetaData());
//this.setRSMDReceived(this.getRSReceived().getMetaData());
boolean encore1 = this.getRSSent().next();
boolean encore2 = this.getRSReceived().next();
try {
Class.forName("java.sql.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection con=DriverManager.getConnection("jdbc:mysql://srv-bdens.insa-toulouse.fr:3306","tp_servlet_003","povu3Ma2");
Statement stat=con.createStatement();
Statement stat2=con.createStatement();
int nb_changed_rows = stat.executeUpdate("USE tp_servlet_003");
try {
nb_changed_rows = stat.executeUpdate("CREATE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )");
}catch (Exception e) {
e.printStackTrace();
}
ResultSet RSSent=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user1.getIPcode()));
//System.out.println(RSSent);
boolean encore1 = RSSent.next();
ResultSet RSReceived=(stat2.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user2.getIPcode()));
boolean encore2 = RSReceived.next();
String message=null;
String[] string1=null;
String[] string2=null;
Calendar date1=Calendar.getInstance();
Calendar date2=Calendar.getInstance();
while(encore1 || encore2) {
while (this.getRSSent().getInt(1)!=user2.getIPcode()) {
encore1=this.getRSSent().next();
//RSSent=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user1.getIPcode()));
//boolean temp=RSSent.next();
while (RSSent.getInt(2)!=user2.getIPcode()) {
encore1=RSSent.next();
}
string1=this.getRSSent().getString(3).split(" ");
string1=RSSent.getString(4).split(" ");
System.out.println(RSSent.getString(4));
date1.set(Integer.valueOf(string1[0]), Integer.valueOf(string1[1]), Integer.valueOf(string1[2]),Integer.valueOf(string1[3]), Integer.valueOf(string1[4]), Integer.valueOf(string1[5]));
//RSReceived=(stat.executeQuery("SELECT user_IPcode1, user_IPcode2, Message, temps FROM chat WHERE user_IPcode1="+user2.getIPcode()));
//boolean tempi = RSReceived.next();
while (this.getRSReceived().getInt(0)!=user1.getIPcode()) {
encore2=this.getRSReceived().next();
while (RSReceived.getInt(1)!=user1.getIPcode()) {
encore2=RSReceived.next();
}
string2=this.getRSReceived().getString(3).split(" ");
string2=RSReceived.getString(4).split(" ");
date2.set(Integer.valueOf(string2[0]), Integer.valueOf(string2[1]), Integer.valueOf(string2[2]),Integer.valueOf(string2[3]), Integer.valueOf(string2[4]), Integer.valueOf(string2[5]));
if (date1.compareTo(date2)>=0) {
message=message+this.getRSReceived().getString(2);
message=message+this.getRSSent().getString(2);
message=message+"\n"+RSReceived.getString(3);
message=message+"\n"+RSSent.getString(3);
}else {
message=message+this.getRSSent().getString(2);
message=message+this.getRSReceived().getString(2);
message=message+"\n"+RSSent.getString(3);
message=message+"\n"+RSReceived.getString(3);
}
encore1=this.getRSSent().next();
encore2=this.getRSReceived().next();
encore1=RSSent.next();
encore2=RSReceived.next();
}
RSSent.close();
RSReceived.close();
stat.close();
stat2.close();
con.close();
return message;
}
public void close_all() throws SQLException {
this.rs_received.close();
this.rs_sent.close();
this.bdd.close();
}
//MAIN
public Historique() {
//this.bdd=new model.Database();
System.out.println("coucoudb");
}
// //MAIN
// public Historique() {
//
// System.out.println("coucoudb");
//
//
// }
}

View file

@ -1,81 +0,0 @@
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Database {
private Statement statement;
private Connection con;
public Statement getStatement() {
return this.statement;
}
public void close () throws SQLException {
this.statement.close();
this.con.close();
}
public Database() {
try {
Class.forName("java.sql.Driver");
System.out.println("coucou");
} catch (ClassNotFoundException e) {
System.out.println("probleme avec le driver");
e.printStackTrace();
}
try {
this.con=DriverManager.getConnection("jdbc:mysql://srv-bdens.insa-toulouse.fr:3306","tp_servlet_003","povu3Ma2");
System.out.println("coucou");
} catch (SQLException e) {
System.out.println("co pas établie");
e.printStackTrace();
}
try {
this.statement=this.con.createStatement();
System.out.println("coucou");
} catch (SQLException e) {
System.out.println("statement pas établi");
e.printStackTrace();
}
int nb_changed_rows=0;
// try {
// nb_changed_rows = statement.executeUpdate("CREATE DATABASE base");
// System.out.println("coucou");
// } catch (SQLException e) {
// System.out.println("base de données pas établit");
// e.printStackTrace();
// }
try {
nb_changed_rows = statement.executeUpdate("USE tp_servlet_003");
System.out.println("coucou");
} catch (SQLException e) {
System.out.println("use base pas établi");
e.printStackTrace();
}
try {
nb_changed_rows = statement.executeUpdate("CREATE TABLE chat ( user_IPcode1 INTEGER, user_IPcode2 INTEGER ,Message VARCHAR(450) ,temps VARCHAR(450) )");
System.out.println("coucou");
System.out.println(nb_changed_rows);
} catch (SQLException e) {
System.out.println("table non créée");
e.printStackTrace();
}
//
// if (nb_changed_rows==0){
// System.out.println("la modification n'a pas eu lieue");
// };
}
}