diff --git a/build/classes/java/main/app/insa/clav/Messages/MessageChatFile.class b/build/classes/java/main/app/insa/clav/Messages/MessageChatFile.class new file mode 100644 index 0000000..ab556db Binary files /dev/null and b/build/classes/java/main/app/insa/clav/Messages/MessageChatFile.class differ diff --git a/build/classes/java/main/app/insa/clav/Messages/MessageChatTxt.class b/build/classes/java/main/app/insa/clav/Messages/MessageChatTxt.class new file mode 100644 index 0000000..38dbb9e Binary files /dev/null and b/build/classes/java/main/app/insa/clav/Messages/MessageChatTxt.class differ diff --git a/build/classes/java/main/app/insa/clav/Messages/MessageInit.class b/build/classes/java/main/app/insa/clav/Messages/MessageInit.class new file mode 100644 index 0000000..e58fe99 Binary files /dev/null and b/build/classes/java/main/app/insa/clav/Messages/MessageInit.class differ diff --git a/build/classes/java/main/app/insa/clav/Messages/MessageSrvTCP.class b/build/classes/java/main/app/insa/clav/Messages/MessageSrvTCP.class new file mode 100644 index 0000000..9683742 Binary files /dev/null and b/build/classes/java/main/app/insa/clav/Messages/MessageSrvTCP.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/GetConnectionChat.class b/build/classes/java/main/com/example/ServeurClavardage/GetConnectionChat.class new file mode 100644 index 0000000..d90081a Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/GetConnectionChat.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/GetMessageChat.class b/build/classes/java/main/com/example/ServeurClavardage/GetMessageChat.class new file mode 100644 index 0000000..2c4baab Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/GetMessageChat.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParCo.class b/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParCo.class new file mode 100644 index 0000000..803fe4a Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParCo.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParUser.class b/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParUser.class new file mode 100644 index 0000000..ace79b1 Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/ListMessageTxtParUser.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/ListMessagesInitParUser.class b/build/classes/java/main/com/example/ServeurClavardage/ListMessagesInitParUser.class new file mode 100644 index 0000000..1a81601 Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/ListMessagesInitParUser.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/SharedInformation.class b/build/classes/java/main/com/example/ServeurClavardage/SharedInformation.class index 29a0940..05a0267 100644 Binary files a/build/classes/java/main/com/example/ServeurClavardage/SharedInformation.class and b/build/classes/java/main/com/example/ServeurClavardage/SharedInformation.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/SubmitConnectionChat.class b/build/classes/java/main/com/example/ServeurClavardage/SubmitConnectionChat.class new file mode 100644 index 0000000..503389d Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/SubmitConnectionChat.class differ diff --git a/build/classes/java/main/com/example/ServeurClavardage/SubmitMessageChat.class b/build/classes/java/main/com/example/ServeurClavardage/SubmitMessageChat.class new file mode 100644 index 0000000..0c89049 Binary files /dev/null and b/build/classes/java/main/com/example/ServeurClavardage/SubmitMessageChat.class differ diff --git a/build/libs/ServletJiggly.war b/build/libs/ServletJiggly.war index ee03b8b..8c1a8e8 100644 Binary files a/build/libs/ServletJiggly.war and b/build/libs/ServletJiggly.war differ diff --git a/build/tmp/compileJava/source-classes-mapping.txt b/build/tmp/compileJava/source-classes-mapping.txt index 0bb4705..a25ae7a 100644 --- a/build/tmp/compileJava/source-classes-mapping.txt +++ b/build/tmp/compileJava/source-classes-mapping.txt @@ -1,20 +1,42 @@ -app/insa/clav/Messages/MessagePseudo.java - app.insa.clav.Messages.MessagePseudo -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/ListMessageTxtParUser.java + com.example.ServeurClavardage.ListMessageTxtParUser com/example/ServeurClavardage/SubmitDeconnectionIndoor.java 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 com/example/ServeurClavardage/SubmitDeconnectionOutdoor.java com.example.ServeurClavardage.SubmitDeconnectionOutdoor +com/example/ServeurClavardage/SubmitMessageChat.java + com.example.ServeurClavardage.SubmitMessageChat com/example/ServeurClavardage/SharedInformation.java 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 +com/example/ServeurClavardage/SubmitConnectionChat.java + com.example.ServeurClavardage.SubmitConnectionChat app/insa/clav/Core/Utilisateurs.java 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 diff --git a/src/main/java/app/insa/clav/Messages/MessageChatFile.java b/src/main/java/app/insa/clav/Messages/MessageChatFile.java new file mode 100644 index 0000000..ac2f671 --- /dev/null +++ b/src/main/java/app/insa/clav/Messages/MessageChatFile.java @@ -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; + } +} diff --git a/src/main/java/app/insa/clav/Messages/MessageChatTxt.java b/src/main/java/app/insa/clav/Messages/MessageChatTxt.java new file mode 100644 index 0000000..5c5d1f2 --- /dev/null +++ b/src/main/java/app/insa/clav/Messages/MessageChatTxt.java @@ -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; + } +} diff --git a/src/main/java/app/insa/clav/Messages/MessageInit.java b/src/main/java/app/insa/clav/Messages/MessageInit.java new file mode 100644 index 0000000..eeb34ef --- /dev/null +++ b/src/main/java/app/insa/clav/Messages/MessageInit.java @@ -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; + } +} diff --git a/src/main/java/app/insa/clav/Messages/MessageSrvTCP.java b/src/main/java/app/insa/clav/Messages/MessageSrvTCP.java new file mode 100644 index 0000000..02b52aa --- /dev/null +++ b/src/main/java/app/insa/clav/Messages/MessageSrvTCP.java @@ -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; + } +} diff --git a/src/main/java/com/example/ServeurClavardage/GetConnectionChat.java b/src/main/java/com/example/ServeurClavardage/GetConnectionChat.java new file mode 100644 index 0000000..ad9d7f3 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/GetConnectionChat.java @@ -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 msgs = this.sh.getCoList(msgSrv.getUserId()); + String param = gson.toJson(msgs); + PrintWriter out = response.getWriter(); + out.print(param); + } + + public void destroy() { + } +} diff --git a/src/main/java/com/example/ServeurClavardage/GetMessageChat.java b/src/main/java/com/example/ServeurClavardage/GetMessageChat.java new file mode 100644 index 0000000..f912970 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/GetMessageChat.java @@ -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() { + } +} \ No newline at end of file diff --git a/src/main/java/com/example/ServeurClavardage/ListMessageTxtParCo.java b/src/main/java/com/example/ServeurClavardage/ListMessageTxtParCo.java new file mode 100644 index 0000000..00aa5d8 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/ListMessageTxtParCo.java @@ -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 msgs; + + public ListMessageTxtParCo(int remoteId) { + this.remoteId = remoteId; + this.msgs = new ArrayList(); + } + + 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; + } + +} diff --git a/src/main/java/com/example/ServeurClavardage/ListMessageTxtParUser.java b/src/main/java/com/example/ServeurClavardage/ListMessageTxtParUser.java new file mode 100644 index 0000000..fd3acca --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/ListMessageTxtParUser.java @@ -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 listMsgsTxtParCo; + + public ListMessageTxtParUser(Utilisateurs user) { + this.user = user; + this.listMsgsTxtParCo = new ArrayList(); + } + + public Utilisateurs getUser() { + return user; + } + + public void addCo(int remoteId) { + this.listMsgsTxtParCo.add(new ListMessageTxtParCo(remoteId)); + } + + public ArrayList getlistMsgsTxtParCo() { + return listMsgsTxtParCo; + } +} diff --git a/src/main/java/com/example/ServeurClavardage/ListMessagesInitParUser.java b/src/main/java/com/example/ServeurClavardage/ListMessagesInitParUser.java new file mode 100644 index 0000000..4c1c974 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/ListMessagesInitParUser.java @@ -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 msgs; + + public ListMessagesInitParUser(Utilisateurs user) { + this.user = user; + this.msgs = new ArrayList(); + } + + public Utilisateurs getUser() { + return user; + } + + public void addMsg(MessageInit msg) { + this.msgs.add(msg); + } + + public ArrayList getMsgs() { + return msgs; + } + + public void clearMsgs() { + this.msgs.clear(); + } +} diff --git a/src/main/java/com/example/ServeurClavardage/SharedInformation.java b/src/main/java/com/example/ServeurClavardage/SharedInformation.java index 27ca612..c22a04a 100644 --- a/src/main/java/com/example/ServeurClavardage/SharedInformation.java +++ b/src/main/java/com/example/ServeurClavardage/SharedInformation.java @@ -1,19 +1,26 @@ package com.example.ServeurClavardage; 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.Collection; import java.util.Collections; +import java.util.Iterator; public class SharedInformation { private ArrayList outdoorUsersList; private ArrayList indoorUsersList; + private ArrayList listMsgInit; + private ArrayList listMessageTxt; private static SharedInformation instance = null; public SharedInformation(){ this.outdoorUsersList = new ArrayList<>(); this.indoorUsersList = new ArrayList<>(); + this.listMsgInit = new ArrayList<>(); + this.listMessageTxt = new ArrayList<>(); } public static SharedInformation getInstance(){ @@ -33,6 +40,63 @@ public class SharedInformation { return indoorUsersList; } + public synchronized ArrayList getCoList(int user){ + ArrayList msgs = new ArrayList<>(); + for (Iterator 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 iter1 = listMessageTxt.iterator(); iter1.hasNext(); ) { + ListMessageTxtParUser list1 = iter1.next(); + if (list1.getUser().getId() == user) { + for (Iterator 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 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 iter1 = listMessageTxt.iterator(); iter1.hasNext(); ) { + ListMessageTxtParUser list1 = iter1.next(); + if (list1.getUser().getId() == user) { + for (Iterator 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){ this.indoorUsersList.remove(newUser); this.indoorUsersList.add(newUser); diff --git a/src/main/java/com/example/ServeurClavardage/SubmitConnectionChat.java b/src/main/java/com/example/ServeurClavardage/SubmitConnectionChat.java new file mode 100644 index 0000000..8dfdf02 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/SubmitConnectionChat.java @@ -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() { + } +} + diff --git a/src/main/java/com/example/ServeurClavardage/SubmitMessageChat.java b/src/main/java/com/example/ServeurClavardage/SubmitMessageChat.java new file mode 100644 index 0000000..7d72383 --- /dev/null +++ b/src/main/java/com/example/ServeurClavardage/SubmitMessageChat.java @@ -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() { + } +} +