diff --git a/src/main/java/org/ntlab/acanthus_server/entities/Account.java b/src/main/java/org/ntlab/acanthus_server/entities/Account.java index cb48a1e..1201294 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Account.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Account.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.ArrayList; +import java.util.HashMap; import java.util.UUID; public class Account { @@ -30,7 +31,7 @@ private Integer uid; private String name; private String email; - private ArrayList workList = new ArrayList<>(); + private HashMap workHashMap = new HashMap<>(); @JsonIgnore private String token; @@ -66,7 +67,8 @@ } public void addWork(Work work) { - this.workList.add(work); + //var aid = work.getAid(); + //this.workList.push(work); } //----------------------------------------------------------------- @@ -96,22 +98,24 @@ public ArrayList getInvitedList() { var invitedList = new ArrayList(); - for (var work : workList){ + for (var work : workHashMap.values()) { if (work.isInviting()) invitedList.add(work); } return invitedList; } + //----------------------------------------------------------------- // 参加している作品を返す public ArrayList getWorkingList() { var workingList = new ArrayList(); - for (var work : workList) { + for (var work : workHashMap.values()) { if (work.isWorking()) workingList.add(work); } - return workingList; + return workingList; } + //----------------------------------------------------------------- //----------------------------------------------------------------- // トークンを更新する 藤井 diff --git a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java index 52de49b..3aceea6 100644 --- a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java +++ b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java @@ -41,7 +41,7 @@ /** * @param uid ユーザーID */ - public Account getAccountByUid(int uid) { + public Account getAccountByUid(Integer uid) { return accountHashMap.get(uid); } diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java index 6ad0cbe..69d7202 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java @@ -7,6 +7,7 @@ import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import java.util.ArrayList; import java.util.Collection; @Component @@ -20,46 +21,51 @@ // すべてのアカウントを返す @GET @Produces(MediaType.APPLICATION_JSON) - public Collection getAccounts() { + public Collection getAccounts(@QueryParam("name") String name) { + + // 名前の一致するアカウントを返す + if (name != null) return accounts.getAccountsByName(name); + return accounts.getAllAccounts(); } //----------------------------------------------------------------- - // UIdに一致するアカウントを返す + // 固有の @GET + @Path("/{uid}") @Produces(MediaType.APPLICATION_JSON) - public Account getAccount(@QueryParam("uid") int uid) { - return accounts.getAccountByUid(uid); + public Account getAccountByUid(@PathParam("uid") String uidStr, @QueryParam("token") String token) { + var uid = Integer.parseInt(uidStr); + var searchAccount = accounts.getAccountByUid(uid); + + if (!searchAccount.getUid().equals(uid)) throw new WebApplicationException(404); + if (!searchAccount.getToken().equals(token)) throw new WebApplicationException(400); + + return searchAccount; } - //----------------------------------------------------------------- - // 名前が一致するアカウントをすべて返す. - @GET - @Produces(MediaType.APPLICATION_JSON) - public Collection getAccounts(@QueryParam("name") String name) { - return accounts.getAccountsByName(name); - } //----------------------------------------------------------------- // POST //----------------------------------------------------------------- // アカウントの新規作成 + /** - * @param name ユーザー名 - * @param email メアド + * @param name ユーザー名 + * @param email メアド * @param password パスワード */ @POST @Produces(MediaType.APPLICATION_JSON) - public int createAccount(@FormParam("name") String name , @FormParam("email") String email, @FormParam("password") String password){ + public int createAccount(@FormParam("name") String name, @FormParam("email") String email, @FormParam("password") String password) { // password: 最低8文字以上の入力 var passMinLen = 8; - if(password.length() < passMinLen) throw new WebApplicationException(401); + if (password.length() < passMinLen) throw new WebApplicationException(401); // すでに同じメールアドレスが存在しているか var existAccount = accounts.getAccountByEmail(email); - if(existAccount != null) throw new WebApplicationException(400); + if (existAccount != null) throw new WebApplicationException(400); // アカウント登録 var newAccount = accounts.registerAccount(name, email, password); @@ -67,4 +73,5 @@ return newAccount.getUid(); } + }