diff --git a/src/main/java/org/ntlab/tampoposerver/models/Activity.java b/src/main/java/org/ntlab/tampoposerver/models/Activity.java index 207f3df..bd2781f 100644 --- a/src/main/java/org/ntlab/tampoposerver/models/Activity.java +++ b/src/main/java/org/ntlab/tampoposerver/models/Activity.java @@ -1,6 +1,10 @@ package org.ntlab.tampoposerver.models; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.JsonIgnore; + public class Activity { + @JsonIgnore private String userId; private String activityId; private String text; diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java index 703ae1e..02816d9 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java @@ -11,10 +11,10 @@ public class ActivityRepository { //アクティビティ情報を保存するハッシュマップを作成 - private final HashMap> activityMap = new HashMap<>(); + private final HashMap> activityMap = new HashMap<>(); //アクティビティクラスにはユーザID、アクティビティID、テキスト、投稿した時間を入れる - public Activity addActivity(String userId,String activityId,String text,String updateTime) { + public Activity addActivity(String userId, String activityId, String text,String updateTime) { Activity a = new Activity(userId,activityId,text,updateTime); //ハッシュマップがなかった場合にアクティビティを入れるハッシュマップの作成 @@ -24,9 +24,14 @@ //アクティビティマップにそのユーザのアクティビティIDと4項目を保存 activityMap.get(userId).put(activityId,a); + //userActivityMapはアクティビティマップのバリューのこと(そのバリューは表になってる) +// HashMap userActivityMap = activityMap.getOrDefault(userId, new HashMap<>()); +// userActivityMap.put(activityId, a); +// activityMap.put(userId, userActivityMap); + return a; } - //アクティビティIDを取得 + //アクティビティを取得 public Activity getActivity(String userId,String activityId) { if(activityMap.get(userId) == null) { return null; @@ -44,20 +49,7 @@ return false; // 存在しない場合は削除できない } - //アクティビティのテキストを更新するメソッド - public boolean updateActivityText(String userId, String activityId, String newText) { - HashMap userActivities = activityMap.get(userId); - if (userActivities != null) { - Activity activity = userActivities.get(activityId); - if (activity != null) { - activity.setText(newText); - return true; - } - } - return false; // アクティビティが存在しない場合 - } - - //アクティビティの最終更新時間を取得 + //単一アクティビティの投稿時間の取得 public String getActivityUpdateTime(String userId, String activityId) { HashMap userActivities = activityMap.get(userId); if (userActivities != null) { @@ -72,11 +64,11 @@ //ユーザーの最後のアクティビティの投稿時間を返す public String getLastUpdatedTime(String userId) { HashMap userActivities = activityMap.get(userId); - if (userActivities != null && !userActivities.isEmpty()) { + if (userActivities != null && !userActivities.isEmpty()) {//userActivitiesが存在かつ要素が入っていれば // 最も新しい更新時間を取得 - return userActivities.values().stream() - .map(Activity::getUpdateTime) - .max(String::compareTo) + return userActivities.values().stream()//取り出した値(Activityの集合)をストリームに変換し順に処理をつなげていく + .map(Activity::getUpdateTime)//更新日時を取得します + .max(String::compareTo)//更新日時の中から「最大の値」(最も新しい日時)を取得します .orElse(null); // 最後の更新時間が見つからない場合はnullを返す } return null; // ユーザーにアクティビティがない場合 diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java index 8b58738..ebbd4d9 100644 --- a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java +++ b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java @@ -1,13 +1,72 @@ package org.ntlab.tampoposerver.repositories; import org.junit.jupiter.api.Test; +import org.ntlab.tampoposerver.models.Activity; import org.springframework.boot.test.context.SpringBootTest; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + @SpringBootTest public class ActivityRepositoryTest { @Test void contextLoads() { ActivityRepository activityRepository = new ActivityRepository(); - //Activity a1 = activityRepository.addActivity("") + //アクティビティの追加 + Activity a1 = activityRepository.addActivity("xyz","activity-id1", "今暇やねん","2025/05/14 15:20"); + Activity a2 = activityRepository.addActivity("abc","activity-id2", "お風呂入ってたわ","2025/07/14 23:50"); + Activity a100 = activityRepository.addActivity("abc","activity-id100", "プログラミングなう","2025/06/17 14:17"); + Activity a = activityRepository.getActivity("xyz","activity-id1"); + System.out.println(a); + System.out.println(a1); + System.out.println(a2); + assertEquals(a1,a); + assertNotEquals(a2,a); + //アクティビティマップにそのユーザのアクティビティIDと4項目を保存(アクティビティの内容も取得済み) + Activity a3 = activityRepository.getActivity("xyz","activity-id1"); + Activity a4 = activityRepository.getActivity("kkk","activity-id1"); + Activity a5 = activityRepository.getActivity("xyz","activity-id10"); + assertEquals(a1.getUserId(),a3.getUserId()); + assertEquals(a1.getActivityId(),a3.getActivityId()); + assertEquals(a1.getText(),a3.getText()); + assertEquals(a1.getUpdateTime(),a3.getUpdateTime()); + assertNull(a4); + assertNull(a5); + System.out.println(a1); + System.out.println(a3); + //アクティビティを削除するメソッド + boolean result = activityRepository.deleteActivity("xyz","activity-id1"); + boolean result2 = activityRepository.deleteActivity("xyz","activity-id2"); + assertTrue(result); + assertFalse(result2); + Activity a6 = activityRepository.getActivity("xyz","activity-id1"); + assertNull(a6); + System.out.println(result); + System.out.println(result2); + System.out.println(a6); + //単一アクティビティの投稿時間の取得 + String time = activityRepository.getActivityUpdateTime("abc","activity-id2"); + String time2 = activityRepository.getActivityUpdateTime("abc","activity-id4"); + assertEquals(a2.getUpdateTime(),time); + assertNotEquals(a100.getUpdateTime(),time); + assertNull(time2); + System.out.println(a1); + System.out.println(a2); + System.out.println(time); + System.out.println(time2); + //ユーザーの最後のアクティビティの投稿時間を返す + String newtime = activityRepository.getLastUpdatedTime("abc"); + String newtime2 = activityRepository.getLastUpdatedTime("kkk"); + assertEquals(a2.getUpdateTime(),newtime); + assertNull(newtime2); + System.out.println(newtime); + System.out.println(newtime2); + //そのユーザの全アクティビティ情報を保存するリストをの作成 + List list = activityRepository.getActivitiesForUser("abc"); + List list2 = activityRepository.getActivitiesForUser("kkk"); + System.out.println(list2); + System.out.println(list); + } }