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 b1d1dcb..8ef2dee 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/Group.java +++ b/src/main/java/com/example/cosmos_serversb/entities/Group.java @@ -2,12 +2,14 @@ package com.example.cosmos_serversb.entities; import java.util.ArrayList; +import java.util.Set; public class Group { private String gId; private String uri, name; private ArrayList members; - private ArrayList requests; + //private ArrayList requests; + private Set requests; public Group(){ @@ -51,6 +53,23 @@ return name; } + public Set getRequests(){ + return requests; + } + + public void setRequests(Set requests){ + this.requests = requests; + } + + public void addRequests(Request request){ + requests.add(request); + } + + public ArrayList getRequestsList(){ + ArrayList list = new ArrayList(getRequests()); + return list; + } + /*メンバー*/ //public ArrayList getMembersList(){ // return null; diff --git a/src/main/java/com/example/cosmos_serversb/entities/Request.java b/src/main/java/com/example/cosmos_serversb/entities/Request.java index db9799c..4da04c6 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/Request.java +++ b/src/main/java/com/example/cosmos_serversb/entities/Request.java @@ -22,13 +22,14 @@ this.done = false; } - public String getrId() { + private void setrId(String rId){ + this.rId = rId; + } + + public String getrId(){ return rId; } - private void setrId(String rId) { - this.rId = rId; - } private void setUri(String uri){ this.uri = uri; @@ -82,6 +83,10 @@ return done; } + public boolean getDone() { + return done; + } + public void setDone(boolean done) { this.done = done; } 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 0ee896b..df441c7 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/User.java +++ b/src/main/java/com/example/cosmos_serversb/entities/User.java @@ -1,21 +1,57 @@ package com.example.cosmos_serversb.entities; -import java.util.ArrayList; -import java.util.List; - - public class User { public String uId, uri, name, pw, iconUri; public boolean login = true; - public List token = new ArrayList(); - public User(String name, String uId,String uri,String pw,ArrayList token,String iconUri) { - this.name = name; - this.uId = uId; - this.uri=uri; - this.pw=pw; - this.token = new ArrayList();//test - //this.iconImage=iconImage; - this.iconUri=iconUri; + public User(){ + } -} + + + public User(String name, String uId, String uri, String pw, String iconUri) { + setuId(uId); + setUri(uri); + setName(name); + setPw(pw); + setIconUri(iconUri); + } + + public String getuId() { + return uId; + } + public void setuId(String uId) { + this.uId = uId; + } + + public String getUri() { + return uri; + } + public void setUri(String uri) { + this.uri = uri; + } + 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; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/cosmos_serversb/models/Users.java b/src/main/java/com/example/cosmos_serversb/models/Users.java index 02781c7..a3d0914 100644 --- a/src/main/java/com/example/cosmos_serversb/models/Users.java +++ b/src/main/java/com/example/cosmos_serversb/models/Users.java @@ -4,10 +4,40 @@ import javax.inject.Singleton; import com.example.cosmos_serversb.entities.*; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; @Singleton public class Users { private static Users theInstance = null; + private static SessionFactory sessionFactory; + + public static void setUp() { + // A SessionFactory is set up once for an application! + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .configure() // configures settings from hibernate.cfg.xml + .build(); + try { + sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); + } + catch (Exception e) { + // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory + // so destroy it manually. + StandardServiceRegistryBuilder.destroy( registry ); + } + } + + public static void tearDown() { + try { + if (sessionFactory != null) { + sessionFactory.close(); + } + } catch (Exception e) { + System.out.println("Exception!"); + } + } private Users() { } @@ -32,32 +62,32 @@ } public static User createUser(String name, String pw, String iconImage) { - User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", null, "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); - testUser.token.add(getInstance().createToken(testUser.uId)); - testUser.token.add(getInstance().createToken(testUser.uId)); + User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); +// testUser.token.add(getInstance().createToken(testUser.uId)); +// testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static User setUser(String uId, String name, String pw, String iconImage) { - User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", null, "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); - testUser.token.add(getInstance().createToken(testUser.uId)); - testUser.token.add(getInstance().createToken(testUser.uId)); + User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); +// testUser.token.add(getInstance().createToken(testUser.uId)); +// testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static User getUserById(String uId) { //与えられたuIdのUser情報を返す - User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", null, "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); - testUser.token.add(getInstance().createToken(testUser.uId)); - testUser.token.add(getInstance().createToken(testUser.uId)); + User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); +// testUser.token.add(getInstance().createToken(testUser.uId)); +// testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static User getUserByToken(String token) { //与えられたTokenに紐づくUser情報を返す - User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", null, "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); - testUser.token.add(getInstance().createToken(testUser.uId)); - testUser.token.add(getInstance().createToken(testUser.uId)); + User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); +// testUser.token.add(getInstance().createToken(testUser.uId)); +// testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } @@ -75,7 +105,7 @@ if(Users.getInstance().getUserByToken(token).uId == null) { return DeleteResult.FAILURE; }else{ - Users.getInstance().getUserByToken(token).token.remove(Users.getInstance().getUserByToken(token).token.indexOf(token)); +// Users.getInstance().getUserByToken(token).token.remove(Users.getInstance().getUserByToken(token).token.indexOf(token)); return DeleteResult.SUCCESS; } } diff --git a/src/main/resources/Group.hbm.xml b/src/main/resources/Group.hbm.xml index aac9a9b..a42e69f 100644 --- a/src/main/resources/Group.hbm.xml +++ b/src/main/resources/Group.hbm.xml @@ -17,6 +17,10 @@ + + + + diff --git a/src/main/resources/User.hbm.xml b/src/main/resources/User.hbm.xml new file mode 100644 index 0000000..678506a --- /dev/null +++ b/src/main/resources/User.hbm.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index e6d6025..8224135 100644 --- a/src/main/resources/hibernate.cfg.xml +++ b/src/main/resources/hibernate.cfg.xml @@ -15,9 +15,9 @@ org.h2.Driver - jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE + jdbc:h2:mem:sampledb;DB_CLOSE_DELAY=-1;MVCC=TRUE sa - + sa 1 diff --git a/src/test/java/hibernateTest/entities/Request.java b/src/test/java/hibernateTest/entities/Request.java index 7c08d47..281f87b 100644 --- a/src/test/java/hibernateTest/entities/Request.java +++ b/src/test/java/hibernateTest/entities/Request.java @@ -30,7 +30,6 @@ return rId; } - private void setUri(String uri){ this.uri = uri; } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index bc8939e..f392f06 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Set; import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable; import hibernateTest.entities.Event; @@ -75,6 +76,7 @@ } public void testBasicUsage() { + int location = 001;//YOLPのコード。警告を減らすために使用。 /*データの保存(データベースに投入)*/ Session session = sessionFactory.openSession(); session.beginTransaction(); @@ -84,9 +86,9 @@ session.save( new Group("222", "http://test2", "friend", "022" ) ); Group newGroup = new Group("333", "http://test3", "school", "033" ); session.save(newGroup); //インスタンスを引数に渡すこともできます - session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10",011)); - session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10",011)); - session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10",011)); + 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.getTransaction().commit(); session.close(); @@ -106,15 +108,27 @@ /*データを取得し更新*/ session = sessionFactory.openSession(); session.beginTransaction(); - //createCriteriaを用いて取得する方法。ただし非推奨。 - //http://a4dosanddos.hatenablog.com/entry/2015/03/21/135421 - Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "003")); - Request editRequest = (Request) criteria.uniqueResult(); - //データの更新 - if(editRequest != null) { - editRequest.setProduct("Chocolate ice !!"); - session.update(editRequest); +// //createCriteria()を用いて取得する方法。ただし非推奨。 +// //このメソッドはID以外にも、任意のカラムを指定することができます。(今回はproductが"ice"のものを取り出す) +// //http://a4dosanddos.hatenablog.com/entry/2015/03/21/135421 +// Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("product", "ice")); +// Request editRequest = (Request) criteria.uniqueResult(); +// //データの更新 +// if(editRequest != null) { +// editRequest.setProduct("Chocolate ice !!"); +// session.update(editRequest); +// } + + //createCriteria()を用いない方法 + List requestList = session.createQuery( "from Request" ).list(); + for ( Request request : (List) requestList ) { + if(request.getProduct() == "ice"){ + request.setProduct("Chocolate ice !!"); + session.update(request); + break; + } } + session.getTransaction().commit(); session.close(); @@ -124,11 +138,11 @@ session.beginTransaction(); Group editGroup = session.load(Group.class, "111"); if(editGroup != null){ - //リクエストはsession.save()をする必要がありません。 - //後のテスト用に4つのリクエストを追加しています。 - Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10",011); - Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10",011); - Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10",011); + //リクエストはsession.save()で保存する必要がありません。 + //後のテスト用に3つのリクエストを追加しています。 + Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10", location); + Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10", location); + Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10", location); editGroup.addRequests(aditionalrequest1); editGroup.addRequests(aditionalrequest2); editGroup.addRequests(aditionalrequest3); @@ -141,10 +155,9 @@ session.beginTransaction(); editGroup = session.load(Group.class, "222"); if(editGroup != null){ - //リクエストはsession.save()をする必要がありません。 - //後のテスト用に4つのリクエストを追加しています。 - Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10",011); - Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10",011); + //リクエストはsession.save()で保存する必要がありません。 + Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10", location); + Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10", location); editGroup.addRequests(aditionalrequest1); editGroup.addRequests(aditionalrequest2); session.update(editGroup); @@ -167,6 +180,7 @@ /*全件取得と出力*/ session = sessionFactory.openSession(); session.beginTransaction(); + //queryStringには警告が出ます。 List result = session.createQuery( "from Event" ).list(); System.out.println("イベントテーブル"); for ( Event event : (List) result ) { @@ -184,14 +198,19 @@ } /*リレーションを持たせた分の出力*/ - //setは要素の順番に、あまり意味がありません。 + //Setは要素の順番に意味がないため、出力の順番はrId順ではありません。 Group outGroup = session.load(Group.class, "111"); - //List list = new ArrayList(outGroup.getRequests()); - List list = outGroup.getRequestsList(); + List list = outGroup.getRequestsList();//Listとして取り出す。 System.out.println("グループID111のリクエスト一覧"); for ( Request request : (List) list ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); } + outGroup = session.load(Group.class, "222"); + Set set = outGroup.getRequests();//Setのまま取り出す。 + System.out.println("グループID222のリクエスト一覧"); + for ( Request request : (Set) set ) { + System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); + } session.getTransaction().commit(); session.close(); diff --git a/src/test/resources/Group.hbm.xml b/src/test/resources/Group.hbm.xml index e60150b..59aa944 100644 --- a/src/test/resources/Group.hbm.xml +++ b/src/test/resources/Group.hbm.xml @@ -18,7 +18,7 @@ - +