diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java index 02816d9..9f20f74 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java @@ -4,17 +4,22 @@ import org.springframework.stereotype.Repository; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; @Repository public class ActivityRepository { + private int acId = 0; //アクティビティ情報を保存するハッシュマップを作成 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 text,String updateTime) { + //アクティビティIdがかぶらないように付与 + + String activityId = Integer.toString(acId); Activity a = new Activity(userId,activityId,text,updateTime); //ハッシュマップがなかった場合にアクティビティを入れるハッシュマップの作成 @@ -23,6 +28,8 @@ } //アクティビティマップにそのユーザのアクティビティIDと4項目を保存 activityMap.get(userId).put(activityId,a); + acId++; + //userActivityMapはアクティビティマップのバリューのこと(そのバリューは表になってる) // HashMap userActivityMap = activityMap.getOrDefault(userId, new HashMap<>()); @@ -39,6 +46,20 @@ return activityMap.get(userId).get(activityId); } + //アクティビティのテキストが存在しないとき + public boolean isValidActivity(String userId, String activityId) { + HashMap userActivities = activityMap.get(userId); + if (userActivities == null) return false; + + Activity activity = userActivities.get(activityId); + if (activity == null) return false; + + String activityText = activity.getText(); + if (activityText == null || activityText == "") return false; + + return true; + } + //アクティビティを削除するメソッド public boolean deleteActivity(String userId, String activityId) { HashMap userActivities = activityMap.get(userId); @@ -66,10 +87,19 @@ HashMap userActivities = activityMap.get(userId); if (userActivities != null && !userActivities.isEmpty()) {//userActivitiesが存在かつ要素が入っていれば // 最も新しい更新時間を取得 - return userActivities.values().stream()//取り出した値(Activityの集合)をストリームに変換し順に処理をつなげていく - .map(Activity::getUpdateTime)//更新日時を取得します - .max(String::compareTo)//更新日時の中から「最大の値」(最も新しい日時)を取得します - .orElse(null); // 最後の更新時間が見つからない場合はnullを返す + Collection activities = userActivities.values(); + String lastUpdateTime = ""; + for (Activity activity : activities) { + String updateTime = activity.getUpdateTime(); + if (updateTime.compareTo(lastUpdateTime) > 0) { + lastUpdateTime = updateTime; + } + } + return lastUpdateTime; +// return userActivities.values().stream()//取り出した値(Activityの集合)をストリームに変換し順に処理をつなげていく +// .map(Activity::getUpdateTime)//更新日時を取得します +// .max(String::compareTo)//更新日時の中から「最大の値」(最も新しい日時)を取得します +// .orElse(null); // 最後の更新時間が見つからない場合はnullを返す } return null; // ユーザーにアクティビティがない場合 } diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java index 107909c..1937276 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java @@ -26,18 +26,13 @@ } @GET - public Response getFriendRequests(@QueryParam("token") String token, @FormParam("userId") String userId) { + public Response getFriendRequests(@QueryParam("token") String token) { //400(不正なリクエスト) //トークンが空文字の時 if (token.isBlank()) { return Response.status(Response.Status.BAD_REQUEST).build(); } - //401(トークンが無効です) - if (!userRepository.checkToken(userId, token)) {//トークンが通らなかった時 - return Response.status(Response.Status.UNAUTHORIZED).build(); - } - // 200 ArrayList requests = friendService.getFriendRequests(token); return Response.status(Response.Status.OK).entity(requests).build(); @@ -59,17 +54,12 @@ @Path("/{friend-request-id}") @DELETE - public Response deleteFriendRequest(@PathParam("friend-request-id") Integer friendRequestId, @QueryParam("receiver-token") String receiverToken, @FormParam("userId") String userId) { + public Response deleteFriendRequest(@PathParam("friend-request-id") Integer friendRequestId, @QueryParam("receiver-token") String receiverToken) { //トークンが空文字の時 if (receiverToken.isBlank()) { return Response.status(Response.Status.BAD_REQUEST).build(); } - //401(トークンが無効です) - if (!userRepository.checkToken(userId, receiverToken)) {//トークンが通らなかった時 - return Response.status(Response.Status.UNAUTHORIZED).build(); - } - boolean isDeleted = friendService.removeFriendRequest(receiverToken, friendRequestId); if (isDeleted) { return Response.status(Response.Status.OK).build(); diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java index ebbd4d9..59910eb 100644 --- a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java +++ b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java @@ -14,19 +14,21 @@ void contextLoads() { ActivityRepository activityRepository = new ActivityRepository(); //アクティビティの追加 - 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"); + 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 a = activityRepository.getActivity("xyz",a1.getActivityId()); 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"); + Activity a3 = activityRepository.getActivity("xyz",a1.getActivityId()); + Activity a4 = activityRepository.getActivity("kkk","-1"); + Activity a5 = activityRepository.getActivity("xyz","-1"); assertEquals(a1.getUserId(),a3.getUserId()); assertEquals(a1.getActivityId(),a3.getActivityId()); assertEquals(a1.getText(),a3.getText()); @@ -35,19 +37,29 @@ assertNull(a5); System.out.println(a1); System.out.println(a3); + //アクティビティを削除するメソッド - boolean result = activityRepository.deleteActivity("xyz","activity-id1"); - boolean result2 = activityRepository.deleteActivity("xyz","activity-id2"); + boolean result = activityRepository.deleteActivity("xyz",a1.getActivityId()); + boolean result2 = activityRepository.deleteActivity("xyz","-1"); assertTrue(result); assertFalse(result2); - Activity a6 = activityRepository.getActivity("xyz","activity-id1"); + Activity a6 = activityRepository.getActivity("xyz",a1.getActivityId()); assertNull(a6); System.out.println(result); System.out.println(result2); System.out.println(a6); + + //アクティビティのテキストが存在しないとき + boolean result3 = activityRepository.isValidActivity("abc", a100.getActivityId()); + boolean result4 = activityRepository.isValidActivity("abc", a101.getActivityId()); + assertTrue(result3); // 一致するので true + assertFalse(result4); // activity-id101 が存在しないか、テキストが空なので false + Activity a7 = activityRepository.getActivity("xyz", a1.getActivityId()); + assertNull(a7); + //単一アクティビティの投稿時間の取得 - String time = activityRepository.getActivityUpdateTime("abc","activity-id2"); - String time2 = activityRepository.getActivityUpdateTime("abc","activity-id4"); + String time = activityRepository.getActivityUpdateTime("abc",a2.getActivityId()); + String time2 = activityRepository.getActivityUpdateTime("abc","-1"); assertEquals(a2.getUpdateTime(),time); assertNotEquals(a100.getUpdateTime(),time); assertNull(time2); @@ -55,6 +67,7 @@ System.out.println(a2); System.out.println(time); System.out.println(time2); + //ユーザーの最後のアクティビティの投稿時間を返す String newtime = activityRepository.getLastUpdatedTime("abc"); String newtime2 = activityRepository.getLastUpdatedTime("kkk"); @@ -62,6 +75,7 @@ assertNull(newtime2); System.out.println(newtime); System.out.println(newtime2); + //そのユーザの全アクティビティ情報を保存するリストをの作成 List list = activityRepository.getActivitiesForUser("abc"); List list2 = activityRepository.getActivitiesForUser("kkk");