diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java index ec8bb8e..703ae1e 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java @@ -1,8 +1,94 @@ package org.ntlab.tampoposerver.repositories; +import org.ntlab.tampoposerver.models.Activity; import org.springframework.stereotype.Repository; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + @Repository public class ActivityRepository { + //アクティビティ情報を保存するハッシュマップを作成 + private final HashMap> activityMap = new HashMap<>(); + + //アクティビティクラスにはユーザID、アクティビティID、テキスト、投稿した時間を入れる + public Activity addActivity(String userId,String activityId,String text,String updateTime) { + Activity a = new Activity(userId,activityId,text,updateTime); + + //ハッシュマップがなかった場合にアクティビティを入れるハッシュマップの作成 + if(activityMap.get(userId) == null) { + activityMap.put(userId, new HashMap<>()); + } + //アクティビティマップにそのユーザのアクティビティIDと4項目を保存 + activityMap.get(userId).put(activityId,a); + + return a; + } + //アクティビティIDを取得 + public Activity getActivity(String userId,String activityId) { + if(activityMap.get(userId) == null) { + return null; + } + return activityMap.get(userId).get(activityId); + } + + //アクティビティを削除するメソッド + public boolean deleteActivity(String userId, String activityId) { + HashMap userActivities = activityMap.get(userId); + if (userActivities != null && userActivities.containsKey(activityId)) { + userActivities.remove(activityId); + return true; // 成功 + } + 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) { + Activity activity = userActivities.get(activityId); + if (activity != null) { + return activity.getUpdateTime(); + } + } + return null; // アクティビティが存在しない場合 + } + + //ユーザーの最後のアクティビティの投稿時間を返す + public String getLastUpdatedTime(String userId) { + HashMap userActivities = activityMap.get(userId); + if (userActivities != null && !userActivities.isEmpty()) { + // 最も新しい更新時間を取得 + return userActivities.values().stream() + .map(Activity::getUpdateTime) + .max(String::compareTo) + .orElse(null); // 最後の更新時間が見つからない場合はnullを返す + } + return null; // ユーザーにアクティビティがない場合 + } + + //そのユーザの全アクティビティ情報を保存するリストをの作成 + public List getActivitiesForUser(String userId){ + if(activityMap.get(userId) == null) { + return new ArrayList<>(); + } + + //keySet());ならアクティビティIDだけで詳細が取れない + return new ArrayList<>(activityMap.get(userId).keySet()); + } } diff --git a/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java b/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java new file mode 100644 index 0000000..0cf437e --- /dev/null +++ b/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java @@ -0,0 +1,33 @@ +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 ActivityTest { + @Test + void contextLoads() { + Activity a1 = new Activity("xyz","0","今からご飯食べる!","2025-06-05 14:23:45"); + Activity a2 = new Activity("abc","1","外出中!","2025-06-05 14:30:50"); + + System.out.println(a1.getUserId()); + System.out.println(a1.getActivityId()); + System.out.println(a1.getText()); + System.out.println(a1.getUpdateTime()); + System.out.println(a2.getUserId()); + System.out.println(a2.getActivityId()); + System.out.println(a2.getText()); + System.out.println(a2.getUpdateTime()); + + assertEquals("xyz",a1.getUserId()); + assertEquals("0",a1.getActivityId()); + assertEquals("今からご飯食べる!",a1.getText()); + assertEquals("2025-06-05 14:23:45",a1.getUpdateTime()); + assertEquals("abc",a2.getUserId()); + assertEquals("1",a2.getActivityId()); + assertEquals("外出中!",a2.getText()); + assertEquals("2025-06-05 14:30:50",a2.getUpdateTime()); + } +} diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java new file mode 100644 index 0000000..8b58738 --- /dev/null +++ b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java @@ -0,0 +1,13 @@ +package org.ntlab.tampoposerver.repositories; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class ActivityRepositoryTest { + @Test + void contextLoads() { + ActivityRepository activityRepository = new ActivityRepository(); + //Activity a1 = activityRepository.addActivity("") + } +}