diff --git a/src/main/java/com/example/cosmos_serversb/entities/Group.java b/src/main/java/com/example/cosmos_serversb/entities/Group.java index 4c98291..47ac114 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/Group.java +++ b/src/main/java/com/example/cosmos_serversb/entities/Group.java @@ -1,7 +1,10 @@ //このクラスは仮です package com.example.cosmos_serversb.entities; +import com.example.cosmos_serversb.models.SessionManager; import com.example.cosmos_serversb.models.Users; +import com.sun.corba.se.impl.orbutil.graph.Graph; +import org.hibernate.Session; import java.util.ArrayList; import java.util.HashSet; @@ -11,8 +14,6 @@ private String gId; private String uri, name; private Set members = new HashSet<>();//HashSetでいいのかな? - - //private ArrayList requests; private Set requests; public Group(){ @@ -85,10 +86,15 @@ } public void addMember(String uId){ - // User user = new User(uId, uId, "http:test", "hogehoge"); User user = Users.getInstance().getUserById(uId); - members.add(user); -// user.addGroups(this); + if(user != null) { + members.add(user); + user.addGroups(this); + Session session = SessionManager.getInstance().getSession(); + session.update(user); + }else{ + //例外処理 + } } } diff --git a/src/main/java/com/example/cosmos_serversb/models/Groups.java b/src/main/java/com/example/cosmos_serversb/models/Groups.java index 94873fc..5d58b66 100644 --- a/src/main/java/com/example/cosmos_serversb/models/Groups.java +++ b/src/main/java/com/example/cosmos_serversb/models/Groups.java @@ -18,7 +18,7 @@ private static String AppName = "cosmos"; private Groups(){ - sessionFactory = SessionFactoryManager.getInstance().getSessionFactory(); + //sessionFactory = SessionFactoryManager.getInstance().getSessionFactory(); } public static Groups getInstance(){ @@ -84,7 +84,13 @@ } public static HashMap addMember(String gId, String uId){ - return null; + Session session = SessionManager.getInstance().getSession(); + Group editGroup = session.load(Group.class, gId); + if(editGroup != null) { + editGroup.addMember(uId); + session.update(editGroup); + } + return null;//HashMapへの変更が必要 } public static HashMap deleteMember(String gId, String uId){ diff --git a/src/main/java/com/example/cosmos_serversb/resources/GroupsRest.java b/src/main/java/com/example/cosmos_serversb/resources/GroupsRest.java index 2714d23..864698f 100644 --- a/src/main/java/com/example/cosmos_serversb/resources/GroupsRest.java +++ b/src/main/java/com/example/cosmos_serversb/resources/GroupsRest.java @@ -1,5 +1,7 @@ package com.example.cosmos_serversb.resources; +import com.example.cosmos_serversb.entities.Group; +import com.example.cosmos_serversb.entities.User; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.hibernate.Session; @@ -9,6 +11,8 @@ import com.example.cosmos_serversb.models.*; +import java.io.IOException; + @Component @Path("/groups") public class GroupsRest { @@ -22,11 +26,27 @@ } @POST - public String createGroup(@FormParam("name") String name, @FormParam("uId") String uId, @FormParam("token") String token) throws JsonProcessingException{ + public String createGroup(@FormParam("name") String name, @FormParam("uId") String uId, @FormParam("token") String token) throws IOException { + //グループの作成 SessionManager.getInstance().getSession(); ObjectMapper mapper = new ObjectMapper(); - String json = mapper.writeValueAsString(Groups.getInstance().createGroup(name, uId)); + Group group = Groups.getInstance().createGroup(name, uId); + SessionManager.getInstance().closeSession();//一度データベースを更新。 + + //グループにメンバーの追加 + SessionManager.getInstance().getSession(); + Groups.addMember(group.getgId(), uId); SessionManager.getInstance().closeSession(); + String json = mapper.writeValueAsString(group);//このJSONには、グループを作成したユーザの情報が含まれていません。 + + //以下が思うように動かない。 +// Session session = SessionManager.getInstance().getSession(); +// Group editedGroup = (Group) session.load(Group.class, group.getgId());//editedGroupの値がおかしい? +// String json = mapper.writeValueAsString(editedGroup); +// Group tmpGroup = new Group(session.load(Group.class, group.getgId())); +// String json = mapper.writeValueAsString( tmpGroup ); +// SessionManager.getInstance().closeSession(); + return json; } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index c997103..50e4f9f 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -179,6 +179,7 @@ session = sessionFactory.openSession(); session.beginTransaction(); deleteRequest = (Request) session.load(Request.class, "005");//Banana cookie + System.out.println(deleteRequest.getUri()); //データの削除 if(deleteRequest != null){ session.delete(deleteRequest);