Version buguée pour le proxy ok pour présence

This commit is contained in:
Faure Paul 2021-02-12 15:59:15 +01:00
parent 6470451686
commit 6937eace68
26 changed files with 472 additions and 8 deletions

Binary file not shown.

View file

@ -1,20 +1,42 @@
app/insa/clav/Messages/MessagePseudo.java com/example/ServeurClavardage/ListMessageTxtParUser.java
app.insa.clav.Messages.MessagePseudo com.example.ServeurClavardage.ListMessageTxtParUser
app/insa/clav/Messages/Message.java
app.insa.clav.Messages.Message
com/example/ServeurClavardage/GetAllUsers.java
com.example.ServeurClavardage.GetAllUsers
com/example/ServeurClavardage/GetOutdoorUsers.java
com.example.ServeurClavardage.GetOutdoorUsers
com/example/ServeurClavardage/SubmitDeconnectionIndoor.java com/example/ServeurClavardage/SubmitDeconnectionIndoor.java
com.example.ServeurClavardage.SubmitDeconnectionIndoor com.example.ServeurClavardage.SubmitDeconnectionIndoor
com/example/ServeurClavardage/ListMessagesInitParUser.java
com.example.ServeurClavardage.ListMessagesInitParUser
com/example/ServeurClavardage/GetOutdoorUsers.java
com.example.ServeurClavardage.GetOutdoorUsers
app/insa/clav/Messages/MessageInit.java
app.insa.clav.Messages.MessageInit
com/example/ServeurClavardage/ListMessageTxtParCo.java
com.example.ServeurClavardage.ListMessageTxtParCo
app/insa/clav/Messages/MessageSrvTCP.java
app.insa.clav.Messages.MessageSrvTCP
app/insa/clav/Messages/MessagePseudo.java
app.insa.clav.Messages.MessagePseudo
app/insa/clav/Messages/MessageChatFile.java
app.insa.clav.Messages.MessageChatFile
com/example/ServeurClavardage/SubmitConnectionOutdoor.java com/example/ServeurClavardage/SubmitConnectionOutdoor.java
com.example.ServeurClavardage.SubmitConnectionOutdoor com.example.ServeurClavardage.SubmitConnectionOutdoor
com/example/ServeurClavardage/SubmitDeconnectionOutdoor.java com/example/ServeurClavardage/SubmitDeconnectionOutdoor.java
com.example.ServeurClavardage.SubmitDeconnectionOutdoor com.example.ServeurClavardage.SubmitDeconnectionOutdoor
com/example/ServeurClavardage/SubmitMessageChat.java
com.example.ServeurClavardage.SubmitMessageChat
com/example/ServeurClavardage/SharedInformation.java com/example/ServeurClavardage/SharedInformation.java
com.example.ServeurClavardage.SharedInformation com.example.ServeurClavardage.SharedInformation
app/insa/clav/Messages/Message.java
app.insa.clav.Messages.Message
com/example/ServeurClavardage/GetConnectionChat.java
com.example.ServeurClavardage.GetConnectionChat
com/example/ServeurClavardage/GetAllUsers.java
com.example.ServeurClavardage.GetAllUsers
com/example/ServeurClavardage/SubmitConnectionIndoor.java com/example/ServeurClavardage/SubmitConnectionIndoor.java
com.example.ServeurClavardage.SubmitConnectionIndoor com.example.ServeurClavardage.SubmitConnectionIndoor
com/example/ServeurClavardage/SubmitConnectionChat.java
com.example.ServeurClavardage.SubmitConnectionChat
app/insa/clav/Core/Utilisateurs.java app/insa/clav/Core/Utilisateurs.java
app.insa.clav.Core.Utilisateurs app.insa.clav.Core.Utilisateurs
com/example/ServeurClavardage/GetMessageChat.java
com.example.ServeurClavardage.GetMessageChat
app/insa/clav/Messages/MessageChatTxt.java
app.insa.clav.Messages.MessageChatTxt

View file

@ -0,0 +1,21 @@
package app.insa.clav.Messages;
import java.net.InetAddress;
public class MessageChatFile extends MessageChatTxt{
public long fileSize;
public String ext;
public MessageChatFile(Message msg, String payload, String date, long fileSize, String ext) {
super(msg, payload, date);
this.fileSize = fileSize;
this.ext = ext;
}
public MessageChatFile(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, String payload, String date, long fileSize, String ext) {
super(typeMessage, srcIP, destIP, destPort, payload, date);
this.fileSize = fileSize;
this.ext = ext;
}
}

View file

@ -0,0 +1,27 @@
package app.insa.clav.Messages;
import java.net.InetAddress;
/**
* Messages texte dans un chat
*/
//Message de type 6
public class MessageChatTxt extends Message {
public String payload;
public String date;
public MessageChatTxt(Message msg, String payload, String date) {
super(msg);
this.payload = payload;
this.date = date;
}
public MessageChatTxt(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, String payload, String date) {
super(typeMessage, srcIP);
this.payload = payload;
this.date = date;
}
}

View file

@ -0,0 +1,17 @@
package app.insa.clav.Messages;
import java.net.InetAddress;
/**
* Messaged sent when a user creates a chat room to identifies itself
*/
public class MessageInit extends Message {
public int id;
public MessageInit(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, int localId) {
super(typeMessage, srcIP);
this.id = localId;
}
}

View file

@ -0,0 +1,26 @@
package app.insa.clav.Messages;
public class MessageSrvTCP {
private int userId;
private int id;
private Message message;
public MessageSrvTCP(int userId, int id, Message message) {
this.userId = userId;
this.id = id;
this.message = message;
}
public int getUserId() {
return userId;
}
public int getId() {
return id;
}
public Message getMessage() {
return message;
}
}

View file

@ -0,0 +1,51 @@
package com.example.ServeurClavardage;
import app.insa.clav.Messages.MessageInit;
import app.insa.clav.Messages.MessageSrvTCP;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@WebServlet(name = "GetConnectionChat", value = "/GetConnectionChat")
public class GetConnectionChat extends HttpServlet {
private String message;
private SharedInformation sh;
public void init() {
message = "Récupération des chat connexion";
this.sh = SharedInformation.getInstance();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
StringBuilder resp = new StringBuilder();
try(BufferedReader br = new BufferedReader(
new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8))) {
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
resp.append(responseLine.trim());
}
System.out.println(resp.toString());
}
MessageSrvTCP msgSrv = gson.fromJson(resp.toString(), MessageSrvTCP.class);
response.setContentType("application/json");
ArrayList<MessageInit> msgs = this.sh.getCoList(msgSrv.getUserId());
String param = gson.toJson(msgs);
PrintWriter out = response.getWriter();
out.print(param);
}
public void destroy() {
}
}

View file

@ -0,0 +1,50 @@
package com.example.ServeurClavardage;
import app.insa.clav.Messages.Message;
import app.insa.clav.Messages.MessageSrvTCP;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "GetMessageChat", value = "/GetMessageChat")
public class GetMessageChat extends HttpServlet {
private String message;
private SharedInformation sh;
public void init() {
message = "Récupération des chat message";
this.sh = SharedInformation.getInstance();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
StringBuilder resp = new StringBuilder();
try(BufferedReader br = new BufferedReader(
new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8))) {
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
resp.append(responseLine.trim());
}
System.out.println(resp.toString());
}
MessageSrvTCP msgSrv = gson.fromJson(resp.toString(), MessageSrvTCP.class);
response.setContentType("application/json");
Message msgs = this.sh.getMessageList(msgSrv.getUserId(), msgSrv.getId());
String param = gson.toJson(msgs);
PrintWriter out = response.getWriter();
out.print(param);
}
public void destroy() {
}
}

View file

@ -0,0 +1,32 @@
package com.example.ServeurClavardage;
import app.insa.clav.Messages.Message;
import java.util.ArrayList;
public class ListMessageTxtParCo {
private int remoteId;
private ArrayList<Message> msgs;
public ListMessageTxtParCo(int remoteId) {
this.remoteId = remoteId;
this.msgs = new ArrayList<Message>();
}
public int getRemoteId() {
return remoteId;
}
public void addMsg(Message msg) {
this.msgs.add(msg);
}
public Message getMsgs() {
Message msg = msgs.get(0);
msgs.remove(0);
return msg;
}
}

View file

@ -0,0 +1,28 @@
package com.example.ServeurClavardage;
import app.insa.clav.Core.Utilisateurs;
import app.insa.clav.Messages.Message;
import java.util.ArrayList;
public class ListMessageTxtParUser {
private Utilisateurs user;
private ArrayList<ListMessageTxtParCo> listMsgsTxtParCo;
public ListMessageTxtParUser(Utilisateurs user) {
this.user = user;
this.listMsgsTxtParCo = new ArrayList<ListMessageTxtParCo>();
}
public Utilisateurs getUser() {
return user;
}
public void addCo(int remoteId) {
this.listMsgsTxtParCo.add(new ListMessageTxtParCo(remoteId));
}
public ArrayList<ListMessageTxtParCo> getlistMsgsTxtParCo() {
return listMsgsTxtParCo;
}
}

View file

@ -0,0 +1,33 @@
package com.example.ServeurClavardage;
import app.insa.clav.Core.Utilisateurs;
import app.insa.clav.Messages.MessageInit;
import java.util.ArrayList;
public class ListMessagesInitParUser {
private Utilisateurs user;
private ArrayList<MessageInit> msgs;
public ListMessagesInitParUser(Utilisateurs user) {
this.user = user;
this.msgs = new ArrayList<MessageInit>();
}
public Utilisateurs getUser() {
return user;
}
public void addMsg(MessageInit msg) {
this.msgs.add(msg);
}
public ArrayList<MessageInit> getMsgs() {
return msgs;
}
public void clearMsgs() {
this.msgs.clear();
}
}

View file

@ -1,19 +1,26 @@
package com.example.ServeurClavardage; package com.example.ServeurClavardage;
import app.insa.clav.Core.Utilisateurs; import app.insa.clav.Core.Utilisateurs;
import app.insa.clav.Messages.Message;
import app.insa.clav.Messages.MessageInit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
public class SharedInformation { public class SharedInformation {
private ArrayList<Utilisateurs> outdoorUsersList; private ArrayList<Utilisateurs> outdoorUsersList;
private ArrayList<Utilisateurs> indoorUsersList; private ArrayList<Utilisateurs> indoorUsersList;
private ArrayList<ListMessagesInitParUser> listMsgInit;
private ArrayList<ListMessageTxtParUser> listMessageTxt;
private static SharedInformation instance = null; private static SharedInformation instance = null;
public SharedInformation(){ public SharedInformation(){
this.outdoorUsersList = new ArrayList<>(); this.outdoorUsersList = new ArrayList<>();
this.indoorUsersList = new ArrayList<>(); this.indoorUsersList = new ArrayList<>();
this.listMsgInit = new ArrayList<>();
this.listMessageTxt = new ArrayList<>();
} }
public static SharedInformation getInstance(){ public static SharedInformation getInstance(){
@ -33,6 +40,63 @@ public class SharedInformation {
return indoorUsersList; return indoorUsersList;
} }
public synchronized ArrayList<MessageInit> getCoList(int user){
ArrayList<MessageInit> msgs = new ArrayList<>();
for (Iterator<ListMessagesInitParUser> iter = listMsgInit.iterator(); iter.hasNext(); ) {
ListMessagesInitParUser list = iter.next();
if (user == list.getUser().getId()) {
msgs = list.getMsgs();
list.clearMsgs();
break;
}
}
return msgs;
}
public synchronized Message getMessageList(int user, int remoteId){
Message msgs = null;
for (Iterator<ListMessageTxtParUser> iter1 = listMessageTxt.iterator(); iter1.hasNext(); ) {
ListMessageTxtParUser list1 = iter1.next();
if (list1.getUser().getId() == user) {
for (Iterator<ListMessageTxtParCo> iter2 = list1.getlistMsgsTxtParCo().iterator(); iter2.hasNext(); ) {
ListMessageTxtParCo list2 = iter2.next();
if (remoteId == list2.getRemoteId()) {
msgs = list2.getMsgs();
break;
}
}
break;
}
}
return msgs;
}
public synchronized void addMsgInit(int user, MessageInit msg){
for (Iterator<ListMessagesInitParUser> iter = listMsgInit.iterator(); iter.hasNext(); ) {
ListMessagesInitParUser list = iter.next();
if (user == list.getUser().getId()) {
list.addMsg(msg);
break;
}
}
}
public synchronized void addMsgTxt(int user, int remoteId, Message msg) {
for (Iterator<ListMessageTxtParUser> iter1 = listMessageTxt.iterator(); iter1.hasNext(); ) {
ListMessageTxtParUser list1 = iter1.next();
if (list1.getUser().getId() == user) {
for (Iterator<ListMessageTxtParCo> iter2 = list1.getlistMsgsTxtParCo().iterator(); iter2.hasNext(); ) {
ListMessageTxtParCo list2 = iter2.next();
if (remoteId == list2.getRemoteId()) {
list2.addMsg(msg);
break;
}
}
break;
}
}
}
public synchronized void addIndoorUser(Utilisateurs newUser){ public synchronized void addIndoorUser(Utilisateurs newUser){
this.indoorUsersList.remove(newUser); this.indoorUsersList.remove(newUser);
this.indoorUsersList.add(newUser); this.indoorUsersList.add(newUser);

View file

@ -0,0 +1,47 @@
package com.example.ServeurClavardage;
import app.insa.clav.Messages.MessageInit;
import app.insa.clav.Messages.MessageSrvTCP;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "SubmitConnectionChat", value = "/SubmitConnectionChat")
public class SubmitConnectionChat extends HttpServlet {
private String message;
private SharedInformation sh;
public void init() {
message = "Ajout d'une co";
this.sh = SharedInformation.getInstance();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
StringBuilder resp = new StringBuilder();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8))) {
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
resp.append(responseLine.trim());
}
System.out.println(resp.toString());
}
MessageSrvTCP msgSrv = gson.fromJson(resp.toString(), MessageSrvTCP.class);
response.setContentType("application/json");
this.sh.addMsgInit(msgSrv.getUserId(), (MessageInit) msgSrv.getMessage());
}
public void destroy() {
}
}

View file

@ -0,0 +1,46 @@
package com.example.ServeurClavardage;
import app.insa.clav.Messages.MessageSrvTCP;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "SubmitMessageChat", value = "/SubmitMessageChat")
public class SubmitMessageChat extends HttpServlet {
private String message;
private SharedInformation sh;
public void init() {
message = "Ajout d'une co";
this.sh = SharedInformation.getInstance();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
StringBuilder resp = new StringBuilder();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8))) {
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
resp.append(responseLine.trim());
}
System.out.println(resp.toString());
}
MessageSrvTCP msgSrv = gson.fromJson(resp.toString(), MessageSrvTCP.class);
response.setContentType("application/json");
this.sh.addMsgTxt(msgSrv.getUserId(), msgSrv.getId(), msgSrv.getMessage());
}
public void destroy() {
}
}