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 7be09f3..a02616a 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Account.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Account.java @@ -36,7 +36,7 @@ "work" }) -// +// ユーザーアカウント public class Account { @JsonProperty("name") @@ -83,7 +83,7 @@ public void addWork(Work work) { var aid = work.getAnimation().getAid(); - this.workHashMap.put(aid,work); + this.workHashMap.put(aid, work); } //----------------------------------------------------------------- @@ -108,13 +108,17 @@ return (this.token); } + public HashMap getWorkHashMap() { + return this.workHashMap; + } + //----------------------------------------------------------------- // 招待されている作品を返す - public HashMap getInvitedMap() { + public HashMap getInvitedMap() { var invitedMap = new HashMap(); for (var work : workHashMap.values()) { - if (work.isInviting()){ + if (work.isInviting()) { var aid = work.getAnimation().getAid(); invitedMap.put(aid, work); } @@ -124,11 +128,11 @@ //----------------------------------------------------------------- // 参加している作品を返す - public HashMap getWorkingList() { + public HashMap getWorkingMap() { var workingMap = new HashMap(); for (var work : workHashMap.values()) { - if (work.isWorking()){ + if (work.isWorking()) { var aid = work.getAnimation().getAid(); workingMap.put(aid, work); } diff --git a/src/main/java/org/ntlab/acanthus_server/entities/Position.java b/src/main/java/org/ntlab/acanthus_server/entities/Position.java index 08b275f..92b7e3f 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Position.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Position.java @@ -7,14 +7,16 @@ import java.util.UUID; public class Position { - private HashMap positionHashMap = new HashMap<>(); + private HashMap positionMap = new HashMap<>(); + private ArrayList> positionList = new ArrayList<>(); public void putPosition(String coordinate, Integer value) { - this.positionHashMap.put(coordinate, value); + this.positionMap.put(coordinate, value); } - public HashMap getPosition() { - return this.positionHashMap; + public ArrayList> getPosition() { + this.positionList.add(this.positionMap); + return this.positionList; } } diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java index 3d81b47..5dca9e0 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java @@ -1,12 +1,9 @@ package org.ntlab.acanthus_server.resources.accounts; -import org.ntlab.acanthus_server.entities.Animation; + import org.ntlab.acanthus_server.models.Accounts; import org.springframework.stereotype.Component; import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import java.util.Collection; -import java.util.Collections; @Component @Path("/accounts") @@ -15,23 +12,30 @@ private Accounts accounts = Accounts.getInstance(); /** - *accountごとの招待されている作品の表示 + *accountの中に指定されたaidの作品が入っているかをtrue,falseでかえす *トークン認証 * */ @Path("/{uid}/invited") @GET - @Produces(MediaType.APPLICATION_JSON) - public boolean getAccountInvited(@PathParam("uid") int uid, @QueryParam("token") String token, @QueryParam("aid") int aid){ - var account = accounts.getAccountByUid(uid); + public boolean checkAccountInvited(@PathParam("ownerUid") int ownerUid, @QueryParam("aid") int aid){ + var account = accounts.getAccountByUid(ownerUid); - /*if(account != null && account.getToken().equals(token)){ + if(account != null){ + //招待されているならtrue,されていないならfalse + var accountInvitedMap = account.getInvitedMap(); + + if(accountInvitedMap.get(aid) != null){ + return true; + }else{ + return false; + } }else{ - //ユーザーID、トークンが間違っている時のレスポンス - throw new WebApplicationException(401); - }*/ - return true; + //ユーザーIDが間違っている時のレスポンス + throw new WebApplicationException(400); + + } } /** @@ -39,9 +43,28 @@ */ @Path("/{uid}/invited") @PUT - @Produces(MediaType.APPLICATION_JSON) - public void addAccountInvited(@PathParam("uid") int uid, @FormParam("token") String token){ + public void addAccountInvited(@PathParam("invitedUid") int invitedUid, @FormParam("ownerUid") int ownerUid, @FormParam("ownerToken") String ownerToken, @FormParam("aid") int aid){ + var invitedAccount = accounts.getAccountByUid(invitedUid); + var ownerAccount = accounts.getAccountByUid(ownerUid); + if(ownerAccount != null && ownerAccount.getToken().equals(ownerToken)){ + var accountInvitedMap = invitedAccount.getInvitedMap(); + + if(this.checkAccountInvited(invitedUid, aid)){ + //すでに招待されている時のレスポンス + throw new WebApplicationException(400); + + }else{ + //Workクラスのstateを1に変更 + accountInvitedMap.get(aid).setInvites(); + + } + + }else{ + //ユーザーID、トークンが間違っている時のレスポンス + throw new WebApplicationException(400); + + } } /** @@ -52,8 +75,20 @@ */ @Path("/{uid}/invited") @DELETE - @Produces(MediaType.APPLICATION_JSON) - public void removeAccountInvited(@PathParam("uid") int uid, @FormParam("token") String token){ + public void removeAccountInvited(@PathParam("invitedUid") int invitedUid, @FormParam("invitedToken") String invitedToken, @FormParam("aid") int aid){ + var invitedAccount = accounts.getAccountByUid(invitedUid); + + if(invitedAccount != null && invitedAccount.getToken().equals(invitedToken)){ + if(this.checkAccountInvited(invitedUid, aid)) { + //accountのworkHashMapから削除 + invitedAccount.getWorkHashMap().remove(aid); + + }else{ + //削除しようとしているaidがinvitedHashMapに含まれていない + throw new WebApplicationException(400); + + } + } } } \ No newline at end of file diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/WorkRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/WorkRest.java index 14d7e3d..e7e9951 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/WorkRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/WorkRest.java @@ -1,7 +1,5 @@ package org.ntlab.acanthus_server.resources.accounts; -import org.ntlab.acanthus_server.entities.Account; -import org.ntlab.acanthus_server.entities.Animation; import org.ntlab.acanthus_server.entities.Work; import org.ntlab.acanthus_server.entities.WorkJson; import org.ntlab.acanthus_server.models.Accounts; @@ -10,7 +8,6 @@ import javax.ws.rs.*; import javax.ws.rs.core.MediaType; -import java.util.ArrayList; import java.util.Collection; @Component @@ -30,7 +27,7 @@ if(account != null && account.getToken().equals(token)){ //指定ユーザーの制作作品の表示 - Collection workList = account.getWorkingList().values(); + Collection workList = account.getWorkingMap().values(); return new WorkJson(workList); }else{ //ユーザーID、トークンが間違っている時のレスポンス @@ -44,13 +41,12 @@ @Path("/{uid}/work") @POST @Produces(MediaType.APPLICATION_JSON) - public Integer createWork(@PathParam("uid") Integer uid, @FormParam("token") String token){ + public Integer createWork(@PathParam("uid") Integer uid, @FormParam("name") String animationName, @FormParam("token") String token){ var account = accounts.getAccountByUid(uid); if(account != null && account.getToken().equals(token)){ //指定ユーザーの新しい作品の追加 - String name = "aa"; - int newAid = gallery.registAnimation(name, account); + int newAid = gallery.registAnimation(animationName, account); var animation = gallery.getAnimationInformation(newAid); var newWork = new Work(); newWork.setWork(); @@ -69,12 +65,15 @@ @Path("/{uid}/work") @PUT @Produces(MediaType.APPLICATION_JSON) - public String updateWork(@PathParam("uid") Integer uid, @FormParam("token") String token, @FormParam("aid") Integer aid) { - var account = accounts.getAccountByUid(uid); + public void updateWork(@PathParam("uid") Integer invitedUid, @FormParam("token") String invitedToken, @FormParam("aid") Integer aid) { + var account = accounts.getAccountByUid(invitedUid); + var animation = gallery.getAnimationInformation(aid); - if(account != null && account.getToken().equals(token)){ + if(account != null && animation != null && account.getToken().equals(invitedToken)){ //指定ユーザーの制作作品への参加の許可 - return "fake3"; + //invitedUid = + //animation.searchAnimationInvites(aid, invitedUid, invitedToken); + String untitle = ""; }else{ //ユーザーID、トークンが間違っている時のレスポンス throw new WebApplicationException(401); diff --git a/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java b/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java index dba647b..615393f 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/gallery/StrokesRest.java @@ -16,6 +16,19 @@ public class StrokesRest { /* + * 1ページの1レイヤーに置ける筆跡情報を全て取得します。 + * @PathParam Integer aid 作品ID + * @PathParam Integer pid ページのID 今回は0 + * @PathParam Integer layerNo レイヤーの番号 今回は0 + */ + @Path("/{aid}/pageMap/0/layers/0/strokes") + @GET + @Produces(MediaType.APPLICATION_JSON) + public ArrayList getLayersRest(@PathParam("aid") Integer aid) { + return null; + } + + /* * 何かを書き始めた時strokeNoを取得しペン情報、色情報、太さ情報、座標情報を追加する * @PathParam Integer aid 作品のID * @FormParam Integer uid ページのID @@ -40,10 +53,12 @@ @Path("/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/position") @GET @Produces(MediaType.APPLICATION_JSON) - public HashMap getPositions(@PathParam("aid") Integer aid, @PathParam("strokeNo") Integer strokeNo) { + public ArrayList> getPositions(@PathParam("aid") Integer aid, @PathParam("strokeNo") Integer strokeNo) { Position Position = new Position(); + Position.putPosition("x", 80); Position.putPosition("y", 50); + return Position.getPosition(); }