diff --git a/src/main/java/org/ntlab/tampoposerver/models/Activity.java b/src/main/java/org/ntlab/tampoposerver/models/Activity.java index bd2781f..de9d1bf 100644 --- a/src/main/java/org/ntlab/tampoposerver/models/Activity.java +++ b/src/main/java/org/ntlab/tampoposerver/models/Activity.java @@ -3,12 +3,21 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.time.LocalDateTime; + public class Activity { - @JsonIgnore + private String userId; private String activityId; private String text; - private String updateTime; + + @JsonFormat(pattern = "yyyy/MM/dd HH:mm") + private LocalDateTime updateTime; public String getUserId() { return userId; @@ -26,11 +35,11 @@ this.text = text; } - public String getUpdateTime() { + public LocalDateTime getUpdateTime() { return updateTime; } - public void setUpdateTime(String updateTime) { + public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; } @@ -42,10 +51,10 @@ this.activityId = activityId; } - public Activity(String u, String a, String t, String ut){ + public Activity(String u, String a, String t) { userId = u; activityId = a; text = t; - updateTime = ut; + updateTime = LocalDateTime.now(); } } diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java index 2460b82..ba9eb91 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java @@ -3,6 +3,8 @@ import org.ntlab.tampoposerver.models.Activity; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -18,11 +20,11 @@ private final HashMap> activityMap = new HashMap<>(); //アクティビティクラスにはユーザID、アクティビティID、テキスト、投稿した時間を入れる - public Activity addActivity(String userId, String text,String updateTime) { + public Activity addActivity(String userId, String text) { //アクティビティIdがかぶらないように付与 String activityId = Integer.toString(acId); - Activity a = new Activity(userId,activityId,text,updateTime); + Activity a = new Activity(userId,activityId,text); //ハッシュマップがなかった場合にアクティビティを入れるハッシュマップの作成 if(activityMap.get(userId) == null) { @@ -113,7 +115,8 @@ if (userActivities != null) { Activity activity = userActivities.get(activityId); if (activity != null) { - return activity.getUpdateTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); + return activity.getUpdateTime().format(formatter); } } return null; // アクティビティが存在しない場合 @@ -122,50 +125,43 @@ //ユーザーの最後のアクティビティの投稿時間を返す public String getLastUpdatedTime(String userId) { HashMap userActivities = activityMap.get(userId); - if (userActivities != null && !userActivities.isEmpty()) {//userActivitiesが存在かつ要素が入っていれば - // 最も新しい更新時間を取得 - Collection activities = userActivities.values(); - String lastUpdateTime = ""; - for (Activity activity : activities) { - String updateTime = activity.getUpdateTime(); - if (updateTime.compareTo(lastUpdateTime) > 0) { - lastUpdateTime = updateTime; + if (userActivities != null && !userActivities.isEmpty()) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); + LocalDateTime latest = null; + for (Activity activity : userActivities.values()) { + LocalDateTime time = activity.getUpdateTime(); + if (latest == null || time.isAfter(latest)) { + latest = time; } } - return lastUpdateTime; -// return userActivities.values().stream()//取り出した値(Activityの集合)をストリームに変換し順に処理をつなげていく -// .map(Activity::getUpdateTime)//更新日時を取得します -// .max(String::compareTo)//更新日時の中から「最大の値」(最も新しい日時)を取得します -// .orElse(null); // 最後の更新時間が見つからない場合はnullを返す + return latest != null ? latest.format(formatter) : null; } - return null; // ユーザーにアクティビティがない場合 + return null; } + //最新のアクティビティを返す public Activity getLatestActivity(String userId) { HashMap userActivities = activityMap.get(userId); - if (userActivities != null && !userActivities.isEmpty()) {//userActivitiesが存在かつ要素が入っていれば - // 最も新しい更新時間を取得 + if (userActivities != null && !userActivities.isEmpty()) { Collection activities = userActivities.values(); - Activity latestActivity = null; // - String latestUpdateTime = ""; + Activity latestActivity = null; + LocalDateTime latestUpdateTime = null; // String → LocalDateTime に変更 + for (Activity activity : activities) { - String updateTime = activity.getUpdateTime(); - if (updateTime.compareTo(latestUpdateTime) > 0) { + LocalDateTime updateTime = activity.getUpdateTime(); // 型を正しく + if (latestUpdateTime == null || updateTime.isAfter(latestUpdateTime)) { latestUpdateTime = updateTime; latestActivity = activity; } } - //最新時刻のアクティビティを取ってきたい + return latestActivity; -// return userActivities.values().stream()//取り出した値(Activityの集合)をストリームに変換し順に処理をつなげていく -// .map(Activity::getUpdateTime)//更新日時を取得します -// .max(String::compareTo)//更新日時の中から「最大の値」(最も新しい日時)を取得します -// .orElse(null); // 最後の更新時間が見つからない場合はnullを返す } - return null; // ユーザーにアクティビティがない場合 + return null; } + //そのユーザの全アクティビティ情報を保存するリストをの作成 public HashMap getActivitiesForUser(String userId){ if(activityMap.get(userId) == null) { diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java index 2518510..21f292a 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java @@ -90,7 +90,7 @@ //200(アクティビティを作成) LocalTime time = LocalTime.now(); //ローカルの時間を取得 - Activity addedActivity = activityRepository.addActivity(userId, newActivity, time.toString()); //追加されたアクティビティの情報を、あとで使えるように addedActivity に入れている + Activity addedActivity = activityRepository.addActivity(userId, newActivity); //追加されたアクティビティの情報を、あとで使えるように addedActivity に入れている return Response.status(Response.Status.OK).entity(addedActivity.getActivityId()).build(); } diff --git a/src/main/java/org/ntlab/tampoposerver/services/FriendService.java b/src/main/java/org/ntlab/tampoposerver/services/FriendService.java index f2372ba..58ca363 100644 --- a/src/main/java/org/ntlab/tampoposerver/services/FriendService.java +++ b/src/main/java/org/ntlab/tampoposerver/services/FriendService.java @@ -58,7 +58,7 @@ for (FriendRequest request : allRequests) { User sender = userRepository.getUser(request.getSenderId()); User receiver = userRepository.getUser(request.getReceiverId()); - if (sender.getToken().equals(token) || receiver.getToken().equals(token)) { + if ((sender.getToken() != null && sender.getToken().equals(token)) || (receiver.getToken() != null && receiver.getToken().equals(token))) { results.add(request); } } diff --git a/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java b/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java index 0cf437e..feffb57 100644 --- a/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java +++ b/src/test/java/org/ntlab/tampoposerver/models/ActivityTest.java @@ -9,8 +9,8 @@ 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"); + Activity a1 = new Activity("xyz","0","今からご飯食べる!"); + Activity a2 = new Activity("abc","1","外出中!"); System.out.println(a1.getUserId()); System.out.println(a1.getActivityId()); diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java index a27c2a1..0afbafc 100644 --- a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java +++ b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java @@ -14,10 +14,10 @@ void contextLoads() { ActivityRepository activityRepository = new ActivityRepository(); //アクティビティの追加 - Activity a1 = activityRepository.addActivity("xyz", "今暇やねん","2025/05/14 15:20"); - Activity a2 = activityRepository.addActivity("abc","お風呂入ってたわ","2025/07/14 23:50"); - Activity a100 = activityRepository.addActivity("abc", "プログラミングなう","2025/06/17 14:17"); - Activity a101 = activityRepository.addActivity("abc", "","2025/06/19 14:17"); + Activity a1 = activityRepository.addActivity("xyz", "今暇やねん"); + Activity a2 = activityRepository.addActivity("abc","お風呂入ってたわ"); + Activity a100 = activityRepository.addActivity("abc", "プログラミングなう"); + Activity a101 = activityRepository.addActivity("abc", ""); Activity a = activityRepository.getActivity("xyz",a1.getActivityId()); System.out.println(a); System.out.println(a1); @@ -103,7 +103,7 @@ // System.out.println(list2); // System.out.println(list); - activityRepository.addActivity("rana","aaa","2025/07/17 14:17"); + activityRepository.addActivity("rana","aaa"); Activity activity = activityRepository.getActivity("rana","4"); System.out.println(activity);