diff --git a/src/main/java/org/ntlab/tampoposerver/models/ChatRequest.java b/src/main/java/org/ntlab/tampoposerver/models/ChatRequest.java new file mode 100644 index 0000000..15aa63a --- /dev/null +++ b/src/main/java/org/ntlab/tampoposerver/models/ChatRequest.java @@ -0,0 +1,37 @@ +package org.ntlab.tampoposerver.models; + +public class ChatRequest { + private Integer chatRequestId; + private String senderId; + private String receiverId; + + public ChatRequest(Integer chatRequestId, String senderId, String receiverId) { + this.chatRequestId = chatRequestId; + this.senderId = senderId; + this.receiverId = receiverId; + } + + public Integer getChatRequestId() { + return chatRequestId; + } + + public void setChatRequestId(Integer chatRequestId) { + this.chatRequestId = chatRequestId; + } + + public String getSenderId() { + return senderId; + } + + public void setSenderId(String senderId) { + this.senderId = senderId; + } + + public String getReceiverId() { + return receiverId; + } + + public void setReceiverId(String receiverId) { + this.receiverId = receiverId; + } +} diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ActivityRepository.java index 02816d9..13d3e19 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<>()); @@ -31,12 +38,43 @@ return a; } - //アクティビティを取得 + //単一のアクティビティを取得 public Activity getActivity(String userId,String activityId) { if(activityMap.get(userId) == null) { return null; } - return activityMap.get(userId).get(activityId); + + HashMap activities = activityMap.get(userId); + + if(activities.get(activityId) == null) { + return null; + } + Activity activity = activities.get(activityId); + return activity; + } +// +// public HashMap getActivitiesForUser(String userId){ +// if(activityMap.get(userId) == null) { +// return null; +// } +// +// //keySet());ならアクティビティIDだけで詳細が取れない +// HashMap value = activityMap.get(userId); +// return value; +// } + + //アクティビティのテキストが存在しないとき + 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; } //アクティビティを削除するメソッド @@ -66,21 +104,31 @@ 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; // ユーザーにアクティビティがない場合 } //そのユーザの全アクティビティ情報を保存するリストをの作成 - public List getActivitiesForUser(String userId){ + public HashMap getActivitiesForUser(String userId){ if(activityMap.get(userId) == null) { - return new ArrayList<>(); + return null; } //keySet());ならアクティビティIDだけで詳細が取れない - return new ArrayList<>(activityMap.get(userId).keySet()); + HashMap value = activityMap.get(userId); + return value; } } diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ChatRequestRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRequestRepository.java new file mode 100644 index 0000000..d45cbb8 --- /dev/null +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRequestRepository.java @@ -0,0 +1,31 @@ +package org.ntlab.tampoposerver.repositories; + +import org.ntlab.tampoposerver.models.ChatRequest; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Repository +public class ChatRequestRepository { + private final HashMap chatRequests = new HashMap<>(); + private int id = 0; + + public ChatRequest addChatRequest(String senderId, String receiverId) { + return null; + } + + public ChatRequest getChatRequest(int chatRequestId) { + return chatRequests.get(chatRequestId); + } + + public ArrayList getChatRequestsForUser(String userId) { + return null; + } + + public ChatRequest deleteChatRequest(int chatRequestId) { + return null; + } + +} diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java index 0bc32e6..0c427de 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/NotificationRepository.java @@ -3,21 +3,26 @@ 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.Map; -import java.util.stream.Collectors; +import java.util.*; @Repository public class NotificationRepository { private HashMap> notificationMap = new HashMap<>(); //通知の追加 - public Notification addNotification(String userId, String notificationId, String from, String text, String time) { + public Notification addNotification(String userId, String from, String text, String time) { + String notificationId; + Map userNotifications = notificationMap.get(userId); + if (userNotifications == null) { + notificationId = Integer.toString(0); + } + else{ + notificationId = Integer.toString(userNotifications.size()); + } + Notification n = new Notification(userId, notificationId, from, text, time); - if(notificationMap.get(userId) == null) { + if(userNotifications == null) { notificationMap.put(userId, new HashMap<>()); } notificationMap.get(userId).put(notificationId, n); @@ -40,8 +45,36 @@ return new ArrayList<>(); } - return userNotifications.values().stream() - .sorted((a, b) -> b.getTime().compareTo(a.getTime())) - .collect(Collectors.toList()); + List sortedNotifications = new ArrayList<>(userNotifications.values()); + + Collections.sort(sortedNotifications, new Comparator() { + @Override + public int compare(Notification o1, Notification o2) { + if(o1.getTime().compareTo(o2.getTime()) < 0) { + return 1; + } + else if(o1.getTime().compareTo(o2.getTime()) > 0) { + return -1; + } + return 0; + } + }); + +// for(int i = 0; i < sortedNotifications.size() - 1; i++) { +// for(int j = i + 1; j < sortedNotifications.size(); j++) { +// if(sortedNotifications.get(i).getTime().compareTo(sortedNotifications.get(j).getTime()) < 0) { +// Notification tmp = sortedNotifications.get(i); +// sortedNotifications.set(i, sortedNotifications.get(j)); +// sortedNotifications.set(j, tmp); +// } +// } +// } + + return sortedNotifications; + +// ラムダ式 +// return userNotifications.values().stream() +// .sorted((a, b) -> b.getTime().compareTo(a.getTime())) +// .collect(Collectors.toList()); } } diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/UserRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/UserRepository.java index c65beaa..f4e34eb 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/UserRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/UserRepository.java @@ -35,6 +35,15 @@ return u; } + public ArrayList getAllEmails() { + ArrayList emails = new ArrayList<>(); + for (String key : userMap.keySet()) { + User user = getUser(key); + emails.add(user.getEmail()); + } + return emails; + } + public User deleteUser(String userId) {//ユーザー情報の削除 return userMap.remove(userId); } diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java index 8edefdb..1c9c48a 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java @@ -1,40 +1,223 @@ package org.ntlab.tampoposerver.resources; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.PathParam; -import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.models.Activity; +import org.ntlab.tampoposerver.repositories.ActivityRepository; +import org.ntlab.tampoposerver.repositories.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalTime; +import java.util.HashMap; + @Path("/users") @Component public class ActivitiesResource { + + private UserRepository userRepository = null; + private ActivityRepository activityRepository = null; + + @Autowired + public ActivitiesResource(UserRepository userRepository, ActivityRepository activityRepository) { + this.userRepository = userRepository; + this.activityRepository = activityRepository; + } + @Path("/{user-id}/activities") - @GET - public String getActivities(@PathParam("user-id") String userId, @QueryParam("filter") String filter) { - return "Hello World!!"; + @GET //アカウントの全アクティビティを取得 + public Response getActivities(@PathParam("user-id") String userId, + @QueryParam("filter") String filter) { + //失敗 + //400(ユーザーnull or 空だったら) + if (userId == null || userId.isEmpty()) { + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + HashMap activities = activityRepository.getActivitiesForUser(userId); + + //404(アクティビティが存在しないとき) + if (activities == null) { //取得した最新のアクティビティがnullのとき + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //200(アカウントの全アクティビティを取得) + return Response.status(Response.Status.OK).entity(activities).build(); + } + + @Path("/{user-id}/activities") + @POST //新規のアクティビティを投稿する + @Consumes(MediaType.APPLICATION_FORM_URLENCODED)//bodyに入力する値がある時 + public Response postActivities(@PathParam("user-id") String userId, + @FormParam("token") String token, + @FormParam("new-activity") String newActivity) { + //失敗 + //400(不正なリクエスト) + if (token == null || token.isEmpty() || newActivity == null || newActivity.isEmpty()) { //トークン or 新アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //403(未認証&トークンの不一致) + if (!userRepository.checkToken(userId, token)) { // ユーザーまたはトークンが存在しない はるかと相談済み + var response = Response.status(Response.Status.FORBIDDEN).entity("認証エラー"); + throw new WebApplicationException(response.build()); + } + + + //404(ユーザーが存在しないとき) + if (userRepository.getUser(userId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーが存在しません"); + throw new WebApplicationException(response.build()); + } + + /* + 500(予期せぬエラー) + spring bootが500を返してくれるからコードなし + */ + + //成功 + //200(アクティビティを作成) + LocalTime time = LocalTime.now(); //ローカルの時間を取得 + Activity addedActivity = activityRepository.addActivity(userId, newActivity, time.toString()); //追加されたアクティビティの情報を、あとで使えるように addedActivity に入れている + return Response.status(Response.Status.OK).entity(addedActivity.getActivityId()).build(); } @Path("/{user-id}/activities/{activity-id}") - @GET - public String getActivity(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; + @GET //アカウントの単一アクティビティを取得する + @Produces(MediaType.APPLICATION_JSON) + public Response getActivity(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { + //失敗 + //400(不正なリクエスト) + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //404(ユーザーかアクティビティが存在しないとき) + if (userRepository.getUser(userId) == null || activityRepository.getActivity(userId, activityId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーかアクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + Activity activity = activityRepository.getActivity(userId,activityId); + + //200(アカウントの単一アクティビティを取得) + return Response.status(Response.Status.OK).entity(activity).build(); } + @Path("/{user-id}/activities/{activity-id}") + @DELETE //アカウントの単一アクティビティを削除する + public Response deleteActivity(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId, + @QueryParam("token") String token) { + + + //失敗 + //400(トークン or 新アクティビティがnull or 空だったら) + if (token == null || token.isEmpty() || activityId == null || activityId.isEmpty()) { + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //403(ユーザーまたはトークンが存在しないとき) + if (!userRepository.checkToken(userId, token)) { + var response = Response.status(Response.Status.FORBIDDEN).entity("認証エラー"); + throw new WebApplicationException(response.build()); + } + + + //404(ユーザーかアクティビティが存在しないとき) + if (userRepository.getUser(userId) == null || activityRepository.getActivity(userId, activityId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーかアクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + /* + 500(予期せぬエラー) + spring bootが500を返してくれるからコードなし + */ + + boolean deleteActivity = activityRepository.deleteActivity(userId,activityId); + + //成功 + //200(アクティビティを削除) + return Response.status(Response.Status.OK).entity(deleteActivity).build(); + } + + @Path("/{user-id}/activities/{activity-id}/text") - @GET - public String getActivityText(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; + @GET //アカウントの単一アクティビティの文章の内容を取得する + public Response getActivityText(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { + //失敗 + //400(不正なリクエスト) + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //404(取得したアクティビティがnullのとき) + if (activityRepository.getActivity(userId, activityId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //成功 + //200(アカウントの単一アクティビティの文章の内容を取得) + activityRepository.getActivity(userId, activityId); + return Response.status(Response.Status.OK).build(); } + @Path("/{user-id}/activities/{activity-id}/updated-time") - @GET - public String getActivityUpdatedTime(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; + @GET //単一アクティビティの投稿時間を取得する + public Response getActivityUpdatedTime(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { + //失敗 + //400(不正なリクエスト) + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //404(アクティビティが存在しないとき) + if (activityRepository.getActivity(userId, activityId) == null) { //取得したアクティビティがnullのとき(不正な内容のとき) + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //成功 + //200(単一アクティビティの投稿時間を取得する) + activityRepository.getActivityUpdateTime(userId, activityId); + return Response.status(Response.Status.OK).build(); } - @Path("/{user-id}/activities/{activity-id}/last-updated-time") - @GET - public String getActivityLastUpdatedTime(@PathParam("user-id") String userId) { - return "Hello World!!"; + + @Path("/{user-id}/activities/last-updated-time") + @GET //最新のアクティビティの投稿時間を取得する + public Response getActivityLastUpdatedTime(@PathParam("user-id") String userId) { + //失敗 + //400(不正なリクエスト) + if (userId == null || userId.isEmpty()) { //ユーザーがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + + //404(アクティビティが存在しないとき) + if (activityRepository.getActivitiesForUser(userId).isEmpty() || userRepository.getUser(userId) == null) { //ユーザの全アクティビティ情報を保存するリストが空のとき + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーかアクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + + //成功 + //200(最新のアクティビティの投稿時間を取得する) + activityRepository.getLastUpdatedTime(userId); + return Response.status(Response.Status.OK).build(); } } \ No newline at end of file diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ChatRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ChatRequestsResource.java new file mode 100644 index 0000000..cf0cc06 --- /dev/null +++ b/src/main/java/org/ntlab/tampoposerver/resources/ChatRequestsResource.java @@ -0,0 +1,122 @@ +package org.ntlab.tampoposerver.resources; + +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.models.ChatRequest; +import org.ntlab.tampoposerver.models.FriendRequest; +import org.ntlab.tampoposerver.repositories.ChatRequestRepository; +import org.ntlab.tampoposerver.repositories.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; + +import static jakarta.ws.rs.core.Response.status; + + + +@Path("/chat-requests/") +@Component + +public class ChatRequestsResource { + + private ChatRequestRepository chatRequestRepository ; + private UserRepository userRepository = null; + + @Autowired + public ChatRequestsResource(UserRepository userRepository,ChatRequestRepository chatRequestRepository) { + this.userRepository = userRepository; + this.chatRequestRepository = chatRequestRepository; + } + + @GET + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Response getChatRequests( + @QueryParam("token") String token, + @QueryParam("user-id") String userId) { + + //400(認証が必要です) tokenがなかったら400 + if (token == null || token.isEmpty() || userId == null || userId.isEmpty()) { + return status(Response.Status.BAD_REQUEST) + .entity("認証が必要です").build(); + } + + + + //200(成功レスポンス) + ArrayList requests = chatRequestRepository.getChatRequestsForUser(userId);//前の人がListだったらArrayListになるから作ってて頼む時はListで頼め + //tokenのチェックはこっちでする、ほかのひとがしていた + // 岩谷さんのUserRepositoryでtokenの確認を行う + if (!userRepository.checkToken(userId, token) ) { + return Response.status(Response.Status.UNAUTHORIZED).build(); + } + + if (requests == null) { + return status(Response.Status.BAD_REQUEST) + .entity("認証が必要です").build(); + } + + return Response.status(Response.Status.OK).entity(requests).build(); + + } + + //チャットリクエストの作成 + //トークンを使って他人の情報を返さないように実装する。 + @POST + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Response postChatRequest( + @FormParam("token") String token, + @FormParam("sender-id") String senderId, + @FormParam("receiver-id") String receiverId) { + + + //204チャットがリクエストされました + ChatRequest created = chatRequestRepository.addChatRequest(senderId, receiverId); + //トークンのチェックよろしくじぶんで + if (!userRepository.checkToken(senderId, token) || !userRepository.checkToken(receiverId, token)) { + return Response.status(Response.Status.UNAUTHORIZED).build(); + } + + + if (created == null) { + return status(Response.Status.BAD_REQUEST) + .entity("チャットリクエストの作成に失敗しました").build(); + } + + return Response. + status(Response.Status.OK).entity(created.getChatRequestId()).build(); + } + + @Path("/chat-requests/{chat-request-id}") + @DELETE + public Response deleteChatRequest( + @QueryParam("receiver-token") String receiverToken, + @PathParam("chat-request-id") Integer chatRequestId) { + + //401承認が必要です + if (receiverToken == null || receiverToken.isEmpty()) { + return status(Response.Status.UNAUTHORIZED) + .entity("認証が必要です") // 401 + .build(); + } + + //403(未認証&トークンの不一致) + //ChatRequestRepository.getChatRequest(chatRequestId); + if (!userRepository.checkToken(null, null) && !userRepository.checkToken(null, null)) { + return Response.status(Response.Status.UNAUTHORIZED).build(); + } + + + //404チャットリクエストが見つかりません。 + ChatRequest deleted = chatRequestRepository.deleteChatRequest(chatRequestId); + if (deleted==null) { + return status(Response.Status.NOT_FOUND) + .entity("チャットリクエストが見つかりません") // 404 + .build(); + } + //204チャットリクエストが削除されました + return status(Response.Status.NO_CONTENT).build(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java index 678c967..0742a23 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java @@ -1,15 +1,81 @@ package org.ntlab.tampoposerver.resources; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.models.FriendRequest; +import org.ntlab.tampoposerver.repositories.UserRepository; +import org.ntlab.tampoposerver.services.FriendService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.UUID; + @Path("/friend-requests") @Component public class FriendRequestsResource { + + //初期化 + private UserRepository userRepository = null; + private FriendService friendService = null; + + @Autowired + public FriendRequestsResource(UserRepository userRepository, FriendService friendService) { + this.userRepository = userRepository; + this.friendService = friendService; + } + @GET - public String getfriendrequests(@QueryParam("token") String token){ - return "Hello World!"; + public Response getFriendRequests(@QueryParam("token") String token) { + //400(不正なリクエスト) + //トークンが空文字の時 + if (token.isBlank()) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } + // tokenがUUIDの規格に沿っていないとき + try { + UUID.fromString(token); + } catch (IllegalArgumentException e) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } + + // 200 + ArrayList requests = friendService.getFriendRequests(token); + return Response.status(Response.Status.OK).entity(requests).build(); + } + + @POST + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + @Produces(MediaType.APPLICATION_JSON) + public Response postFriendRequest(@FormParam("sender-id") String senderId, @FormParam("receiver-id") String receiverId, @FormParam("token") String token) { + + //403(未認証&トークンの不一致) + if (!userRepository.checkToken(senderId, token) && !userRepository.checkToken(receiverId, token)) { + return Response.status(Response.Status.UNAUTHORIZED).build(); + } + + FriendRequest created = friendService.createFriendRequest(token, senderId, receiverId); + if (created == null) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } + // 201(フレンドリクエスト作成) + return Response.status(Response.Status.OK).entity(created.getId()).build(); + } + + @Path("/{friend-request-id}") + @DELETE + 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(); + } + + boolean isDeleted = friendService.removeFriendRequest(receiverToken, friendRequestId); + if (isDeleted) { + return Response.status(Response.Status.OK).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } } } diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendsResource.java index 4f4f448..68f77a7 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendsResource.java @@ -27,7 +27,7 @@ } - @Path("/{pair-id}") + @POST @Consumes (MediaType.APPLICATION_FORM_URLENCODED) public Response postFriends(@FormParam("token")String token,@FormParam("user0-id")String user0Id,@FormParam("user1-id")String user1Id){ @@ -38,7 +38,7 @@ } //403(未認証&トークンの不一致) - if (!userRepository.checkToken(user0Id, token) || !userRepository.checkToken(user1Id, token)) { // ユーザーまたはトークンが存在しない はるかと相談済み + if (!userRepository.checkToken(user0Id, token) && !userRepository.checkToken(user1Id, token)) { // ユーザーまたはトークンが存在しない はるかと相談済み var response = Response.status(Response.Status.FORBIDDEN).entity("認証エラーです。"); return Response.status(Response.Status.BAD_REQUEST).build(); } @@ -48,7 +48,7 @@ if (pair == null) { return Response.status(Response.Status.NOT_FOUND).build(); } - return Response.status(Response.Status.OK).build(); + return Response.status(Response.Status.OK).entity(pair).build(); //500は勝手にサーバがエラーでたらでるから書かない } @@ -66,7 +66,7 @@ if (pair == null) { return Response.status(Response.Status.NOT_FOUND).build(); } - return Response.status(Response.Status.OK).build(); + return Response.status(Response.Status.OK).entity(pair).build(); } @Path("/{pair-id}") diff --git a/src/main/java/org/ntlab/tampoposerver/resources/NotificationsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/NotificationsResource.java index 1f5b609..e0d2311 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/NotificationsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/NotificationsResource.java @@ -9,16 +9,17 @@ import org.ntlab.tampoposerver.repositories.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; - import java.util.HashMap; import java.util.List; import java.util.Map; + @Path("/users/{user-id}/notifications") @Component public class NotificationsResource { private final UserRepository userRepository; - private final NotificationRepository notificationRepository; //finalによりインスタンス作成後に再代入不可,不変オブジェクト + private final NotificationRepository notificationRepository; + //finalによりインスタンス作成後に再代入不可,不変オブジェクト @Autowired public NotificationsResource(UserRepository userRepository, NotificationRepository notificationRepository) { @@ -36,7 +37,7 @@ throw new WebApplicationException(response.build()); } if (user == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません"); //404 throw new WebApplicationException(response.build()); } if (token == null || token.isEmpty()) { @@ -44,7 +45,7 @@ throw new WebApplicationException(response.build()); } if (!token.equals(user.getToken())) { //リクエストに含まれるトークンが、ユーザーに登録されているトークンと一致していない場合 - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です");//403 + var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です"); //403 throw new WebApplicationException(response.build()); } @@ -52,6 +53,19 @@ return Response.ok(notifications).build(); } + @POST + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Response addNotification(@PathParam("user-id") String userID, @FormParam("from") String from, @FormParam("text") String text, @FormParam("time") String time) { + if (userID == null || userID.isEmpty()) { + var response = Response.status(Response.Status.BAD_REQUEST).entity("404"); + throw new WebApplicationException(response.build()); + } + Notification notification = notificationRepository.addNotification(userID, from, text, time); + return Response.ok(notification).build(); + } + + + //通知詳細を取得 @Path("/{notification-id}") @GET @Produces(MediaType.APPLICATION_JSON) @@ -62,7 +76,7 @@ throw new WebApplicationException(response.build()); } if (user == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません"); //404 throw new WebApplicationException(response.build()); } if (token == null || token.isEmpty()) { @@ -70,18 +84,20 @@ throw new WebApplicationException(response.build()); } if (!token.equals(user.getToken())) { - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です");//403 + var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です"); //403 throw new WebApplicationException(response.build()); } Notification notification = notificationRepository.getNotification(userID, notificationID); //通知詳細を取得 if (notification == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません"); //404 throw new WebApplicationException(response.build()); } return Response.ok(notification).build(); } - @Path("/{notification-id}/text") //通知本文だけを返す + + //通知本文だけを返す + @Path("/{notification-id}/text") @GET @Produces(MediaType.APPLICATION_JSON) public Response getNotificationText(@PathParam("user-id") String userID, @PathParam("notification-id") String notificationID, @QueryParam("token") String token) { @@ -91,7 +107,7 @@ throw new WebApplicationException(response.build()); } if (user == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません"); //404 throw new WebApplicationException(response.build()); } if (token == null || token.isEmpty()) { @@ -99,12 +115,12 @@ throw new WebApplicationException(response.build()); } if (!token.equals(user.getToken())) { - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です");//403 + var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です"); //403 throw new WebApplicationException(response.build()); } Notification notification = notificationRepository.getNotification(userID, notificationID); if (notification == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません"); //404 throw new WebApplicationException(response.build()); } @@ -113,7 +129,8 @@ return Response.ok(response).build(); } - @Path("/{notification-id}/time") //通知日時だけを返す + //通知日時だけを返す + @Path("/{notification-id}/time") @GET @Produces(MediaType.APPLICATION_JSON) public Response getNotificationTime(@PathParam("user-id") String userID, @PathParam("notification-id") String notificationID, @QueryParam("token") String token) { @@ -123,7 +140,7 @@ throw new WebApplicationException(response.build()); } if (user == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません"); //404 throw new WebApplicationException(response.build()); } if (token == null || token.isEmpty()) { @@ -131,21 +148,22 @@ throw new WebApplicationException(response.build()); } if (!token.equals(user.getToken())) { - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です");//403 + var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です"); //403 throw new WebApplicationException(response.build()); } Notification notification = notificationRepository.getNotification(userID, notificationID); if (notification == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません"); //404 throw new WebApplicationException(response.build()); } Map response = new HashMap<>(); - response.put("time", notification.getText()); + response.put("time", notification.getTime()); return Response.ok(response).build(); } - @Path("/{notification-id}/from") //通知送信者だけを返す + //通知送信者だけを返す + @Path("/{notification-id}/from") @GET @Produces(MediaType.APPLICATION_JSON) public Response getNotificationFrom(@PathParam("user-id") String userID, @PathParam("notification-id") String notificationID, @QueryParam("token") String token) { @@ -155,7 +173,7 @@ throw new WebApplicationException(response.build()); } if (user == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("IDが存在しません"); //404 throw new WebApplicationException(response.build()); } if (token == null || token.isEmpty()) { @@ -163,17 +181,17 @@ throw new WebApplicationException(response.build()); } if (!token.equals(user.getToken())) { - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です");//403 + var response = Response.status(Response.Status.FORBIDDEN).entity("トークンが不正です"); //403 throw new WebApplicationException(response.build()); } Notification notification = notificationRepository.getNotification(userID, notificationID); if (notification == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません");//404 + var response = Response.status(Response.Status.NOT_FOUND).entity("通知が存在しません"); //404 throw new WebApplicationException(response.build()); } Map response = new HashMap<>(); - response.put("from", notification.getText()); + response.put("from", notification.getFrom()); return Response.ok(response).build(); } } \ No newline at end of file diff --git a/src/main/java/org/ntlab/tampoposerver/resources/UsersResource.java b/src/main/java/org/ntlab/tampoposerver/resources/UsersResource.java index 9e2a135..ddea638 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/UsersResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/UsersResource.java @@ -69,8 +69,9 @@ //新規アカウントを作る @POST + @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response createUser(@FormParam("user_id") String userId, @FormParam("password") String password) { + public Response createUser(@FormParam("user-id") String userId, @FormParam("password") String password) { //ユーザーがいるか調べる User user = userRepository.getUser(userId); @@ -91,9 +92,10 @@ //単一アカウントの情報を返す @GET - @Path("/{userId}") + @Path("/{user-id}") @Produces(MediaType.APPLICATION_JSON) - public Response getUser(@PathParam("userId") String userId) { + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Response getUser(@PathParam("user-id") String userId) { //取得 User user = userRepository.getUser(userId); //存在の確認 @@ -106,8 +108,9 @@ //ユーザの削除 ok @DELETE //deleteはquery parameter - @Path("/{userId}") - public Response deleteUser(@PathParam("userId") String userId, @QueryParam("token") String token) { + @Path("/{user-id}") + @Produces(MediaType.APPLICATION_JSON) + public Response deleteUser(@PathParam("user-id") String userId, @QueryParam("token") String token) { //取得 User user = userRepository.getUser(userId); //存在チェック @@ -135,9 +138,10 @@ //ログイン @POST - @Path("/{userId}/login") + @Path("/{user-id}/login") + @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response login(@PathParam("userId") String userId, @FormParam("password") String password) { + public Response login(@PathParam("user-id") String userId, @FormParam("password") String password) { //存在チェック User user = userRepository.getUser(userId); @@ -167,9 +171,9 @@ //アカウントのニックネームの取得 ok @GET - @Path("/{userId}/name") + @Path("/{user-id}/name") @Produces(MediaType.APPLICATION_JSON) - public Response getName(@PathParam("userId") String userId) { + public Response getName(@PathParam("user-id") String userId) { //取得 User user = userRepository.getUser(userId); //存在チェック @@ -184,9 +188,9 @@ //ニックネームの変更 @PUT - @Path("/{userId}") + @Path("/{user-id}/name") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response updateName(@PathParam("userId") String userId, @FormParam("new_name") String newName, @FormParam("token") String token) { + public Response updateName(@PathParam("user-id") String userId, @FormParam("new-name") String newName, @FormParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { @@ -213,9 +217,9 @@ //単一アカウントのパスワードの取得 ok @GET - @Path("/{userId}/password") + @Path("/{user-id}/password") @Produces(MediaType.APPLICATION_JSON) - public Response getPassword(@PathParam("userId") String userId, @QueryParam("token") String token) { + public Response getPassword(@PathParam("user-id") String userId, @QueryParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); @@ -225,9 +229,9 @@ //指定されたIDのパスワードを変更する @PUT - @Path("/{userId}/password") + @Path("/{user-id}/password") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response updatePassword(@PathParam("userId") String userId, @FormParam("new_password") String newPassword) { + public Response updatePassword(@PathParam("user-id") String userId, @FormParam("new-password") String newPassword) { User user = userRepository.getUser(userId); if (user == null) { @@ -248,9 +252,9 @@ //単一アカウントのemailの取得 @GET - @Path("/{userId}/email") + @Path("/{user-id}/email") @Produces(MediaType.APPLICATION_JSON) - public Response getEmail(@PathParam("userId") String userId) { + public Response getEmail(@PathParam("user-id") String userId) { User user = userRepository.getUser(userId); if (user == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); @@ -260,9 +264,9 @@ //指定されたIDのemailを変更する @PUT - @Path("/{userId}/email") + @Path("/{user-id}/email") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response updateEmail(@PathParam("userId") String userId, @FormParam("new_email") String newEmail, @FormParam("token") String token) { + public Response updateEmail(@PathParam("user-id") String userId, @FormParam("new-email") String newEmail, @FormParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { @@ -289,9 +293,9 @@ //指定されたIDのアイコンを返す @GET - @Path("/{userId}/icon") + @Path("/{user-id}/icon") @Produces(MediaType.APPLICATION_JSON) - public Response getIcon(@PathParam("userId") String userId) { + public Response getIcon(@PathParam("user-id") String userId) { User user = userRepository.getUser(userId); if (user == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); @@ -301,9 +305,9 @@ //アイコンを変更する @PUT - @Path("/{userId}/icon") + @Path("/{user-id}/icon") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public String updateIcon(@PathParam("userId") String userId, @FormParam("new_icon") String newIcon, @FormParam("token") String token) { + public String updateIcon(@PathParam("user-id") String userId, @FormParam("new-icon") String newIcon, @FormParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { @@ -330,9 +334,9 @@ //フレンド相手の情報の取得 @GET - @Path("/{userId}/friends/") + @Path("/{user-id}/friends") @Produces(MediaType.APPLICATION_JSON) - public Response getFriends(@PathParam("userId") String userId, @QueryParam("token") String token) { + public Response getFriends(@PathParam("user-id") String userId, @QueryParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { throw new WebApplicationException( @@ -365,9 +369,9 @@ //自分のペアのpid一覧(JSON)の取得 @GET - @Path("/{userId}/friends/{pairId}") + @Path("/{user-id}/friends/{pair-id}") @Produces(MediaType.APPLICATION_JSON) - public Response getPairId(@PathParam("userId") String userId, @QueryParam("token") String token, @PathParam("pairId") String pairId) { + public Response getPairId(@PathParam("user-id") String userId, @QueryParam("token") String token, @PathParam("pair-id") String pairId) { User user = userRepository.getUser(userId); if (user == null) { throw new WebApplicationException( @@ -394,8 +398,9 @@ //ペアの削除  @DELETE - @Path("/{userId}/friends/{pairId}") - public Response deleteFriends(@PathParam("userId") String userId, @PathParam("pairId") int pairId, @QueryParam("token") String token) { + @Path("/{user-id}/friends/{pair-id}") + @Produces(MediaType.APPLICATION_JSON) + public Response deleteFriends(@PathParam("user-id") String userId, @PathParam("pair-id") int pairId, @QueryParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { throw new NotFoundException("IDが存在しません"); diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/ActivityRepositoryTest.java index ebbd4d9..c29d918 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,11 +75,16 @@ 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); +// List list = activityRepository.getActivitiesForUser("abc"); +// List list2 = activityRepository.getActivitiesForUser("kkk"); +// System.out.println(list2); +// System.out.println(list); + + activityRepository.addActivity("rana","aaa","2025/07/17 14:17"); + Activity activity = activityRepository.getActivity("rana","4"); + System.out.println(activity); } } diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java index 4f00ba7..2990edf 100644 --- a/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java +++ b/src/test/java/org/ntlab/tampoposerver/repositories/NotificationRepositoryTest.java @@ -19,35 +19,39 @@ void contextLoads() throws JsonProcessingException { 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 n1_1 = notificationRepository.addNotification("u01","u00","telephone1","2025-06-10 10:00:11"); + Notification n1_2 = notificationRepository.addNotification("u01","u02","telephone2","2025-06-07 10:31:11"); + Notification n1_3 = notificationRepository.addNotification("u01","u02","telephone2","2025-06-07 12:09:22"); + Notification n2 = notificationRepository.addNotification("u02","u00","telephone3","2025-06-07 09:22:12"); - Notification n = notificationRepository.getNotification("u01","n02"); + Notification n = notificationRepository.getNotification("u01","1"); assertEquals(n1_2.getText(),n.getText()); - n = notificationRepository.getNotification("u01","n04"); + n = notificationRepository.getNotification("u01","4"); assertNull(n); - n = notificationRepository.getNotification("u03","n03"); + n = notificationRepository.getNotification("u03","0"); assertNull(n); System.out.println(notificationRepository.getNotificationsForUser("u01")); + List sortednotifications = notificationRepository.getNotificationsForUser("u01"); + for (Notification notification : sortednotifications) { + System.out.println("time:" + notification.getTime() + " nid:" + notification.getNotificationId()); + } - System.out.println(notificationRepository.getNotification("u01","n01")); + System.out.println(notificationRepository.getNotification("u01","0")); //JSONに変換して表示するテスト ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JavaTimeModule()); // LocalDateTime対応 - mapper.findAndRegisterModules(); // 任意(自動登録) + mapper.registerModule(new JavaTimeModule()); + mapper.findAndRegisterModules(); List notifications = notificationRepository.getNotificationsForUser("u01"); String notificationsJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(notifications); System.out.println(notificationsJson); String singleNotificationJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString( - notificationRepository.getNotification("u01", "n01") + notificationRepository.getNotification("u01", "1") ); System.out.println(singleNotificationJson); } diff --git a/src/test/java/org/ntlab/tampoposerver/repositories/UserRepositoryTest.java b/src/test/java/org/ntlab/tampoposerver/repositories/UserRepositoryTest.java index 6ac9843..3bbeee6 100644 --- a/src/test/java/org/ntlab/tampoposerver/repositories/UserRepositoryTest.java +++ b/src/test/java/org/ntlab/tampoposerver/repositories/UserRepositoryTest.java @@ -19,9 +19,13 @@ User u3 = userRepository.addUser("u03", "ghj", "yyi","yijdh@gmail.com","143a876bca878d125"); // User u = userRepository.getUser("u02"); //getAllUsersテスト - ArrayList users = userRepository.getAllUsers(); - for (User u : users) { - System.out.println(u.getUserId()); +// ArrayList users = userRepository.getAllUsers(); +// for (User u : users) { +// System.out.println(u.getUserId()); +// } + ArrayList emails = userRepository.getAllEmails(); + for (String email : emails) { + System.out.println(email); } // System.out.println(users); // assertEquals(u2, u);