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 a29e9a1..4508c5d 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/Group.java +++ b/src/main/java/com/example/cosmos_serversb/entities/Group.java @@ -1,13 +1,17 @@ //このクラスは仮です package com.example.cosmos_serversb.entities; +import com.example.cosmos_serversb.models.Users; + import java.util.ArrayList; +import java.util.HashSet; import java.util.Set; public class Group { private String gId; private String uri, name; - private ArrayList members; + private Set members = new HashSet<>();//HashSetでいいのかな? + //private ArrayList requests; private Set requests; @@ -64,31 +68,28 @@ public void addRequests(Request request){ requests.add(request); } -/* + + /* public ArrayList getRequestsList(){ ArrayList list = new ArrayList(getRequests()); return list; } + */ - */ + public void setMembers(Set members) { + this.members = members; + } + public Set getMembers() { + return members; + } - /*メンバー*/ - //public ArrayList getMembersList(){ - // return null; - //} - - //public void addMemberByUid(String uId){ - // - // members.add(user); - //} - - //public DeleteResult deleteMember(String uid){ - // members.remove(members.indexOf(uid)); - // return null; - //} - - /*リクエスト*/ + public void addMember(String uId){ + //User user = new User(uId, uId, "http:test", "sa", "hogehoge"); + User user = Users.getInstance().getUserById(uId); + members.add(user); + user.addGroups(this); + } } diff --git a/src/main/java/com/example/cosmos_serversb/entities/User.java b/src/main/java/com/example/cosmos_serversb/entities/User.java index efefb2c..0b9c4bd 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/User.java +++ b/src/main/java/com/example/cosmos_serversb/entities/User.java @@ -1,14 +1,17 @@ package com.example.cosmos_serversb.entities; +import java.util.HashSet; +import java.util.Set; + public class User { public String uId, uri, name, iconUri; public boolean login = true; + public Set groups = new HashSet<>();//HashSetでいいのかな? public User() { } - public User(String name, String uId, String uri, String iconUri) { setuId(uId); setUri(uri); @@ -56,4 +59,18 @@ public void setLogin(boolean login) { this.login = login; } + + public Set getGroups() { + return groups; + } + + public void setGroups(Set groups) { + this.groups = groups; + } + + public void addGroups(Group group){ + //テスト用 + //Group group = Groups.getInstance().getGroupByGid(gId); + groups.add(group); + } } \ No newline at end of file diff --git a/src/main/resources/Group.hbm.xml b/src/main/resources/Group.hbm.xml index d5733ed..41104b5 100644 --- a/src/main/resources/Group.hbm.xml +++ b/src/main/resources/Group.hbm.xml @@ -15,12 +15,24 @@ - - + + - + + + + + + diff --git a/src/main/resources/Password.hbm.xml b/src/main/resources/Password.hbm.xml index 23a2b31..bff9873 100644 --- a/src/main/resources/Password.hbm.xml +++ b/src/main/resources/Password.hbm.xml @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/Request.hbm.xml b/src/main/resources/Request.hbm.xml index 514de7c..010d45a 100644 --- a/src/main/resources/Request.hbm.xml +++ b/src/main/resources/Request.hbm.xml @@ -15,13 +15,13 @@ - - - - - - - + + + + + + + diff --git a/src/main/resources/Token.hbm.xml b/src/main/resources/Token.hbm.xml index 72bf3d8..0f374d5 100644 --- a/src/main/resources/Token.hbm.xml +++ b/src/main/resources/Token.hbm.xml @@ -15,7 +15,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/User.hbm.xml b/src/main/resources/User.hbm.xml index 967e4d9..de6de5f 100644 --- a/src/main/resources/User.hbm.xml +++ b/src/main/resources/User.hbm.xml @@ -15,10 +15,22 @@ - - - - + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/hibernateTest/entities/Belong.java b/src/test/java/hibernateTest/entities/Belong.java new file mode 100644 index 0000000..5ae36c4 --- /dev/null +++ b/src/test/java/hibernateTest/entities/Belong.java @@ -0,0 +1,40 @@ +package hibernateTest.entities; + +public class Belong { + private String uId, gId; + + public Belong(){ + + } + + public Belong(String uId, String gId){ + setuId(uId); + setgId(gId); + } + + private void setuId(String uId) { + this.uId = uId; + } + + public String getuId() { + return uId; + } + + private void setgId(String gId) { + this.gId = gId; + } + + public String getgId() { + return gId; + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + +// @Override +// public int hashCode() { +// return super.hashCode(); +// } +} diff --git a/src/test/java/hibernateTest/entities/Group.java b/src/test/java/hibernateTest/entities/Group.java index c083306..c90b14e 100644 --- a/src/test/java/hibernateTest/entities/Group.java +++ b/src/test/java/hibernateTest/entities/Group.java @@ -1,14 +1,18 @@ //このクラスは仮です package hibernateTest.entities; +import hibernateTest.models.Groups; +import hibernateTest.models.Users; + import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; public class Group { private String gId; private String uri, name; - //private ArrayList members; + private Set members = new HashSet<>();//HashSetでいいのかな? //private ArrayList requests; private Set requests; @@ -20,6 +24,7 @@ setgId(gId); setUri(uri); setName(name); + addMember(uId); } public String getgId(){ @@ -66,9 +71,25 @@ requests.add(request); } - public ArrayList getRequestsList(){ - ArrayList list = new ArrayList(getRequests()); - return list; +// public ArrayList getRequestsList(){ +// ArrayList list = new ArrayList(getRequests()); +// return list; +// } + + public void setMembers(Set members) { + this.members = members; + } + + public Set getMembers() { + return members; + } + + public void addMember(String uId){ + //test用 +// User user = new User(uId, uId, "http:test", "sa", "hogehoge"); + User user = Users.getInstance().getUserById(uId); + members.add(user); + user.addGroups(this); } @@ -89,19 +110,5 @@ // return list; // } - /*メンバー*/ - //public ArrayList getMembersList(){ - // return null; - //} - - //public void addMemberByUid(String uId){ - // - // members.add(user); - //} - - //public DeleteResult deleteMember(String uid){ - // members.remove(members.indexOf(uid)); - // return null; - //} } diff --git a/src/test/java/hibernateTest/entities/User.java b/src/test/java/hibernateTest/entities/User.java index bfa0d39..b9376c1 100644 --- a/src/test/java/hibernateTest/entities/User.java +++ b/src/test/java/hibernateTest/entities/User.java @@ -1,11 +1,16 @@ package hibernateTest.entities; +import hibernateTest.models.Groups; + import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class User { public String uId, uri, name, pw, iconUri; public boolean login = true; + public Set groups = new HashSet<>();//HashSetでいいのかな? public User(){ @@ -36,25 +41,46 @@ public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getPw() { return pw; } + public void setPw(String pw) { this.pw = pw; } + public String getIconUri() { return iconUri; } + public void setIconUri(String iconUri) { this.iconUri = iconUri; } + public boolean getLogin() { return login; } + public void setLogin(boolean login) { this.login = login; } + + public Set getGroups() { + return groups; + } + + public void setGroups(Set groups) { + this.groups = groups; + } + + public void addGroups(Group group){ + //テスト用 + //Group group = Groups.getInstance().getGroupByGid(gId); + groups.add(group); + } } \ No newline at end of file diff --git a/src/test/java/hibernateTest/models/Groups.java b/src/test/java/hibernateTest/models/Groups.java index a3f6d81..e95681f 100644 --- a/src/test/java/hibernateTest/models/Groups.java +++ b/src/test/java/hibernateTest/models/Groups.java @@ -57,11 +57,16 @@ String gId = getInstance().createGId(); String uri = baseURI + AppName + "/groups/" + gId; Group testGroup = new Group(gId, uri, name, uId); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.save(testGroup); - session.getTransaction().commit(); - session.close(); + +// Session session = sessionFactory.openSession(); +// session.beginTransaction(); +// Session session = SessionManager.getInstance().getCurrentSession(); + +// session.save(testGroup); + +// session.getTransaction().commit(); +// session.close(); + return testGroup; } diff --git a/src/test/java/hibernateTest/models/GroupsMain.java b/src/test/java/hibernateTest/models/GroupsMain.java index 6e3f5b7..55c547f 100644 --- a/src/test/java/hibernateTest/models/GroupsMain.java +++ b/src/test/java/hibernateTest/models/GroupsMain.java @@ -5,9 +5,9 @@ //このメインクラスを実行すると、Hibernateのテストが行えます。 public class GroupsMain { public static void main(String args[]){ - Groups.setUp(); + //Groups.setUp(); Groups.createGroup("test1", "1234567890"); Groups.getGroupByGid("123456789"); - Groups.tearDown(); + //Groups.tearDown(); } } diff --git a/src/test/java/hibernateTest/models/Main.java b/src/test/java/hibernateTest/models/Main.java index 22f26f6..8f2a16a 100644 --- a/src/test/java/hibernateTest/models/Main.java +++ b/src/test/java/hibernateTest/models/Main.java @@ -6,8 +6,9 @@ public class Main { public static void main(String args[]){ NativeApiIllustrationTest test = new NativeApiIllustrationTest(); - test.setUp(); - test.testBasicUsage(); - test.tearDown(); +// test.setUp(); +// test.testBasicUsage();//Hibernate全般のテストが行えます。 +// test.GroupMemberTest();//Group-Memberテーブルに関するテストが行えます。 +// test.tearDown(); } } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index f392f06..2cfd078 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -28,10 +28,12 @@ import java.util.List; import java.util.Set; +import com.example.cosmos_serversb.resources.UsersRest; import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable; import hibernateTest.entities.Event; import hibernateTest.entities.Group; import hibernateTest.entities.Request; +import hibernateTest.entities.User; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.hibernate.Session; @@ -75,6 +77,10 @@ } } + public SessionFactory getSessionFactory() { + return sessionFactory; + } + public void testBasicUsage() { int location = 001;//YOLPのコード。警告を減らすために使用。 /*データの保存(データベースに投入)*/ @@ -82,13 +88,17 @@ session.beginTransaction(); session.save( new Event( "Our very first event!", new Date() ) ); session.save( new Event( "A follow up event", new Date() ) ); +// session.save( new User("I", "011","http://test1","hoge", "011" ) ); +// session.save( new User("YOU", "022","http://test2","hoge", "011" ) ); +// session.save( new User("HE", "033","http://test3","hoge", "011" ) ); session.save( new Group("111", "http://test1", "family", "011" ) ); session.save( new Group("222", "http://test2", "friend", "022" ) ); - Group newGroup = new Group("333", "http://test3", "school", "033" ); + Group newGroup = new Group("333", "http://test3", "school", "033" );//インスタンスを引数に渡すこともできます session.save(newGroup); //インスタンスを引数に渡すこともできます + session.save( new Group("444", "http://test4", "Laboratory", "044" ) );//userの追加を行う session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10", location)); - session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location)); - session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location)); + session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location));//後にリクエストを削除 + session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location));//後にチョコレートアイスに変更 session.getTransaction().commit(); session.close(); @@ -177,6 +187,42 @@ session.close(); + /*中間テーブル(USER-GROUP)*/ + /*グループ444にユーザの追加*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + editGroup = session.load(Group.class, "444"); + if(editGroup != null){ + editGroup.addMember("055"); + editGroup.addMember("066");//後で削除します。 + editGroup.addMember("077"); + } + session.getTransaction().commit(); + session.close(); + + /*グループ333にユーザの追加*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + editGroup = session.load(Group.class, "333"); + if(editGroup != null){ + editGroup.addMember("055"); + editGroup.addMember("077"); + } + session.getTransaction().commit(); + session.close(); + + /*ユーザの削除*/ +// session = sessionFactory.openSession(); +// session.beginTransaction(); +// User deleteUser = session.load(User.class, "066"); +// if(deleteUser != null){ +// session.delete(deleteUser); +// } +// session.getTransaction().commit(); +// session.close(); + + + /*出力*/ /*全件取得と出力*/ session = sessionFactory.openSession(); session.beginTransaction(); @@ -186,27 +232,45 @@ for ( Event event : (List) result ) { System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); } + List groupResult = session.createQuery( "from Group" ).list(); System.out.println("グループテーブル"); for ( Group group : (List) groupResult ) { - System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName()); + Set members = group.getMembers(); + System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName() + " member: "); + for( User user : (Set) members){ + System.out.println(user.getuId() + " "); + } + System.out.println(); } + List requestResult = session.createQuery( "from Request" ).list(); System.out.println("リクエストテーブル"); for ( Request request : (List) requestResult ) { System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct()); } + List userResult = session.createQuery( "from User" ).list(); + System.out.println("ユーザテーブル"); + for ( User user : (List) userResult ) { + Set groups = user.getGroups(); + System.out.println( "User (" + user.getuId() + ") : " + user.getUri()); + for( Group group : (Set) groups){ + System.out.println(group.getgId() + " "); + } + System.out.println(); + } + /*リレーションを持たせた分の出力*/ //Setは要素の順番に意味がないため、出力の順番はrId順ではありません。 Group outGroup = session.load(Group.class, "111"); - List list = outGroup.getRequestsList();//Listとして取り出す。 + Set set = outGroup.getRequests();//Listとして取り出す。 System.out.println("グループID111のリクエスト一覧"); - for ( Request request : (List) list ) { + for ( Request request : (Set) set ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); } outGroup = session.load(Group.class, "222"); - Set set = outGroup.getRequests();//Setのまま取り出す。 + set = outGroup.getRequests();//Setのまま取り出す。 System.out.println("グループID222のリクエスト一覧"); for ( Request request : (Set) set ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); @@ -215,4 +279,44 @@ session.getTransaction().commit(); session.close(); } + + + public void GroupMemberTest(){ + sessionFactory = SessionFactoryManager.getInstance().getSessionFactory(); + + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save( new User("I", "011","http://test1","hoge", "011" ) ); + session.save( new User("YOU", "022","http://test2","hoge", "011" ) ); + session.save( new User("HE", "033","http://test3","hoge", "011" ) ); + +// session.save( new Group("111", "http://test1", "family", "011" ) ); + +// Group group = new Group("111", "http://test1", "family", "011" ); +// session.beginTransaction(); +// session.save(group); +// session.getTransaction().commit(); + + session.save( new Group("222", "http://test2", "friend", "022" ) ); + session.getTransaction().commit(); + session.close(); + + + session = sessionFactory.openSession(); + session.beginTransaction(); + System.out.println("グループテーブル"); + List groupResult = session.createQuery( "from Group" ).list(); + for ( Group group : (List) groupResult ) { + System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName() + " member: "); + } + + List userResult = session.createQuery( "from User" ).list(); + for ( User user : (List) userResult ) { + System.out.println( "User (" + user.getuId() + ") : " + user.getUri()); + } + + session.getTransaction().commit(); + session.close(); + } + } diff --git a/src/test/java/hibernateTest/models/Users.java b/src/test/java/hibernateTest/models/Users.java index 09ccffc..f8a087a 100644 --- a/src/test/java/hibernateTest/models/Users.java +++ b/src/test/java/hibernateTest/models/Users.java @@ -52,6 +52,7 @@ } private Users() { + sessionFactory = SessionFactoryManager.getInstance().getSessionFactory(); } public static Users getInstance() { diff --git a/src/test/resources/Belong.xml b/src/test/resources/Belong.xml new file mode 100644 index 0000000..2454e68 --- /dev/null +++ b/src/test/resources/Belong.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/Group.hbm.xml b/src/test/resources/Group.hbm.xml index 59aa944..8c65bf6 100644 --- a/src/test/resources/Group.hbm.xml +++ b/src/test/resources/Group.hbm.xml @@ -21,6 +21,18 @@ + + + + + diff --git a/src/test/resources/User.hbm.xml b/src/test/resources/User.hbm.xml index d59a58b..2e2b602 100644 --- a/src/test/resources/User.hbm.xml +++ b/src/test/resources/User.hbm.xml @@ -20,6 +20,18 @@ + + + + + \ No newline at end of file