diff --git a/src/main/java/org/ntlab/tampoposerver/models/Notification.java b/src/main/java/org/ntlab/tampoposerver/models/Notification.java index 12994c4..ccefd39 100644 --- a/src/main/java/org/ntlab/tampoposerver/models/Notification.java +++ b/src/main/java/org/ntlab/tampoposerver/models/Notification.java @@ -7,6 +7,14 @@ private String text; private String time; + public Notification(String u, String n, String f, String tx, String tm) { + userId = u; + notificationId = n; + from = f; + text = tx; + time = tm; + } + public String getUserId() { return userId; } diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java index bbaadfd..d0d1642 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java @@ -3,17 +3,44 @@ import org.ntlab.tampoposerver.models.Notification; import org.springframework.stereotype.Repository; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; @Repository public class NotificationRepository { private HashMap> notificationMap = new HashMap<>(); - public NotificationRepository() { - Notification n1 = new Notification(); - notificationMap.put("uid01", new HashMap<>()); - notificationMap.get("uid01").put("nid01", n1); + //通知の追加 + public Notification addNotification(String userId, String notificationId, String from, String text, String time) { + Notification n = new Notification(userId, notificationId, from, text, time); - Notification result = notificationMap.get("uid01").get("nid01"); + if(notificationMap.get(userId) == null) { + notificationMap.put(userId, new HashMap<>()); + } + notificationMap.get(userId).put(notificationId, n); + + return n; + } + + //通知の取得 + public Notification getNotification(String userId, String notificationId){ + if(notificationMap.get(userId) == null) { + return null; + } + return notificationMap.get(userId).get(notificationId); + } + + //ユーザーに対応した通知リストの取得(時刻降順) + public List getNotificationsForUser(String userId){ + if(notificationMap.get(userId) == null) { + return new ArrayList<>(); + } + + return notificationMap.get(userId).values().stream() + .sorted((a, b) -> b.getTime().compareTo(a.getTime())) + .map(Notification::getNotificationId) + .collect(Collectors.toList()); } } diff --git a/src/test/java/org/ntlab/tampoposerver/models/NotificationTest.java b/src/test/java/org/ntlab/tampoposerver/models/NotificationTest.java new file mode 100644 index 0000000..59c6998 --- /dev/null +++ b/src/test/java/org/ntlab/tampoposerver/models/NotificationTest.java @@ -0,0 +1,27 @@ +package org.ntlab.tampoposerver.models; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; + + +@SpringBootTest +public class NotificationTest { + + @Test + void contextLoads() { + Notification n1 = new Notification("u01","n01","u100","telephone","2025/6/5"); + Notification n2 = new Notification("u02","n02","u100","telephone","2025/6/5"); + assertEquals("u01", n1.getUserId()); + assertEquals("n01", n1.getNotificationId()); + assertEquals("u100", n1.getFrom()); + assertEquals("telephone", n1.getText()); + assertEquals("2025/6/5", n1.getTime()); + assertEquals("u02", n2.getUserId()); + assertEquals("n02", n2.getNotificationId()); + assertEquals("u100", n2.getFrom()); + assertEquals("telephone", n2.getText()); + assertEquals("2025/6/5", n2.getTime()); + } +} diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java new file mode 100644 index 0000000..698f01f --- /dev/null +++ b/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java @@ -0,0 +1,33 @@ +package org.ntlab.tampoposerver.repositories; + +import org.junit.jupiter.api.Test; +import org.ntlab.tampoposerver.models.Notification; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +@SpringBootTest +public class NotificationRepositoryTest { + + @Test + void contextLoads() { + NotificationRepository notificationRepository = new NotificationRepository(); + + Notification n1_1 = notificationRepository.addNotification("u01","n01","u00","telephone1","2025-06-10 10:00:11"); + Notification n1_2 = notificationRepository.addNotification("u01","n02","u02","telephone2","2025-06-07 10:31:11"); + Notification n1_3 = notificationRepository.addNotification("u01","n03","u02","telephone2","2025-06-07 12:09:22"); + Notification n2 = notificationRepository.addNotification("u02","n01","u00","telephone3","2025-06-07 09:22:12"); + + Notification n = notificationRepository.getNotification("u01","n02"); + assertEquals(n1_2.getText(),n.getText()); + + n = notificationRepository.getNotification("u01","n04"); + assertNull(n); + + n = notificationRepository.getNotification("u03","n03"); + assertNull(n); + + System.out.println(notificationRepository.getNotificationsForUser("u01")); + } +}