From 4177d90a045542d9ffe2d23117291f39ed5b3c3f Mon Sep 17 00:00:00 2001
From: Othemane KHACHNANE <othemane.khachnane.etu@univ-lille.fr>
Date: Wed, 19 Feb 2025 18:34:59 +0100
Subject: [PATCH] Service WEB GET

---
 .DS_Store                               | Bin 0 -> 6148 bytes
 sae/.DS_Store                           | Bin 0 -> 6148 bytes
 sae/WEB-INF/src/controleur/GetFils.java |  60 ++++++++++++++++++++++++
 sae/WEB-INF/src/modele/Message.java     |  43 +++++++++++++++++
 4 files changed, 103 insertions(+)
 create mode 100644 .DS_Store
 create mode 100644 sae/.DS_Store
 create mode 100644 sae/WEB-INF/src/controleur/GetFils.java

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..c55f41bf7357966b0569b5fc44f8d45ada7d92de
GIT binary patch
literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zEL;p&0Z1N%F(jFwBJ3dZz-Ht#<S`U8=rZImBtqpz
zsnHM^4S~TM0-(Gr!H~?5&ydTI%YdAJ^BB?@j2Uzpj2ZM83>nNB^cV~n^cb=j5*dm-
zbMljua`Ka)1&1R81B2dwFaUd09K*a4hE#?Mh7tx{21BrEATx29wjRwiKB#F044L3^
zrGz09>`py~T!s`>moUnr>E&byVsK?}WN=~dWpHJ{rlT882Qx!4Ln1>enz=u*t4b;_
zE`Wx^j--N|%;FLQgKLaT%q*;I>>TVI+#IpN8TsYGC5a`a#ZHMu(I8$(etu38jGdSi
zmYG@}FCgNapI4HYnU`7wQWBh*lA4rQ6ce7Amy%!ZlwX>cQViA$mEhpy;EWfLsIE3L
zwbW5CHa4i$QK+^wGSE>lF*T~K<>U}m*0&Cd&(6us%kKim2m>P{gl6D{(l83-f2g0!
zf{XHU^7GOmr8!K&C_QXL0GcK^xQDF|M?E$g0;3^7ZU}(N2L)(t-~go?AT&sdfsug$
z+y!7{U|@mS!3gdLFo5JhT0t~OD~JYZWncucz-EB8GB855GJ?AyAbp@N35W)3XJBLi
zYiD3&0BeU=WQ-8)42)2l8KFHCMu>I>Mu>I>Mu>Kp^G4~>5Eu;sXb3PvXaP|D@5;b{
ztN#yCHA;?#z-R~z%Mf5>aS3*D0$0k|{RgURLG@_@R2o$KgQ{ajP(2ON2T}r-Wr7SS
hN`N^KIgnORwGXa}85tlo`DjA`7DA)+Xb8|h1OO~6l1%^r

literal 0
HcmV?d00001

diff --git a/sae/.DS_Store b/sae/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..80e05f87d5ce7a3369fdede7be02b4ce2fd0508c
GIT binary patch
literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8z4DAe90Z1N%F(jFwA|RR(Y=$m_Cxah@n`cgbGE|Nb
z1=7pG;LG635W?WdfTTYuCqD`5Fh>Rk2EG4a05*=DA)LXL!3l@z^=PWWT1JV{5Eu=C
z(GVC7fzc2c4FPBfFhXb!ZU{X}j)uT!2#kgRJOn`Hg950pz`(%Z0HqrsG)Rhpk%0l!
zd<W4iFintt00T%2q!mPiw1Q}mRt8283v32hD+40~L@Oh>8v@b?>XLwHuyzJUu+1Po
zSUUqF*k%R>Mu>I>Mu>I>MraR(5u%-e5u%-e5o|lmb))oX2#kgRECiS#3;|I6@5;b{
ztN#yCHA;?#z-R~z%Mf5>aS3*D0$0k|{RgURLG@_@k~AZzPKM|KNrS3&a8=9%8Bmmf
hDP?3}0BHrugR5dj1_p3VKH3m~h0rKH8UpkW0RURiB{l#6

literal 0
HcmV?d00001

diff --git a/sae/WEB-INF/src/controleur/GetFils.java b/sae/WEB-INF/src/controleur/GetFils.java
new file mode 100644
index 0000000..87ad95b
--- /dev/null
+++ b/sae/WEB-INF/src/controleur/GetFils.java
@@ -0,0 +1,60 @@
+package controleur;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; // Importation du module
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import modele.Abonnement;
+import modele.AbonnementDao;
+import modele.FilDeDiscussion;
+import modele.FilDeDiscussionDAO;
+import modele.Message;
+import modele.MessageDao;
+
+@WebServlet("/getFils")
+public class GetFils extends HttpServlet {
+    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+        if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
+            res.sendRedirect(req.getContextPath() + "/login");
+            return;
+        }
+
+        String email = (String) req.getSession().getAttribute("email");
+        AbonnementDao abonnementDao = new AbonnementDao();
+        FilDeDiscussionDAO filDao = new FilDeDiscussionDAO();
+        MessageDao messageDao = new MessageDao();
+
+        List<Abonnement> abonnements = abonnementDao.findAbonnements(email);
+        List<FilDeDiscussion> fils = new ArrayList<>();
+        Map<Integer, List<Message>> messagesMap = new HashMap<>();
+
+        for (Abonnement abonnement : abonnements) {
+            FilDeDiscussion fil = filDao.findById(abonnement.getIdFil());
+            fils.add(fil);
+            List<Message> messages = messageDao.findByFil(fil.getId());
+            messagesMap.put(fil.getId(), messages);
+        }
+
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.registerModule(new JavaTimeModule()); // Enregistrement du module
+        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+        Map<String, Object> jsonResponse = new HashMap<>();
+        jsonResponse.put("fils", fils);
+        jsonResponse.put("messages", messagesMap);
+
+        res.setContentType("application/json");
+        res.getWriter().write(objectMapper.writeValueAsString(jsonResponse));
+    }
+}
\ No newline at end of file
diff --git a/sae/WEB-INF/src/modele/Message.java b/sae/WEB-INF/src/modele/Message.java
index 5e7b1bd..371ef61 100644
--- a/sae/WEB-INF/src/modele/Message.java
+++ b/sae/WEB-INF/src/modele/Message.java
@@ -1,13 +1,23 @@
 package modele;
 
+import java.sql.Connection;
+import java.sql.PreparedStatement;
 import java.time.LocalDateTime;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 public class Message {
     private int id;
     private String contenu;
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
     private LocalDateTime datePublication;
     private int filId;
     private String auteurEmail;
+    private String imageUrl;
+    private int like;
+    private int unlike;
+
+    // Constructeurs, getters et setters
 
     public Message() {
     }
@@ -64,4 +74,37 @@ public class Message {
     public String toString() {
         return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId=" + filId + ", auteurEmail=" + auteurEmail + '}';
     }
+
+    public String getImageUrl() {
+        return imageUrl;
+    }
+
+    public int getLike() {
+        return like;
+    }
+
+    public void setLike(int like) {
+        this.like = like;
+    }
+
+    public int getUnlike() {
+        return unlike;
+    }
+
+    public void setUnlike(int unlike) {
+        this.unlike = unlike;
+    }
+
+    // filepath: /Users/othemanek./Desktop/tomcat/webapps/sae/WEB-INF/src/modele/MessageDao.java
+    public void create(Message message) {
+        try (Connection con = DS.instance.getConnection()) {
+            PreparedStatement ps = con.prepareStatement("INSERT INTO message (contenu, filid, auteuremail, imageUrl) VALUES (?, ?, ?)");
+            ps.setString(1, message.getContenu());
+            ps.setInt(2, message.getfilId());
+            ps.setString(3, message.getAuteurEmail());
+            ps.executeUpdate();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
 }
-- 
GitLab