package hibernateTest.models; import hibernateTest.entities.Group; import hibernateTest.entities.Request; import hibernateTest.entities.Event; import com.example.cosmos_serversb.models.DeleteResult; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import javax.inject.Singleton; import java.util.HashMap; import java.util.List; @Singleton public class Groups { private static Groups 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 Groups(){ } public static Groups getInstance(){ if(theInstance == null){ theInstance = new Groups(); } return theInstance; } public static HashMap<String, String> getGroupsListByUid(String uId){ return createTestHashMap(); } public static Group createGroup(String name, String uId){ //先にGidとuriの発行を行う Group testGroup = new Group("123456789", "http://test.com", name, uId); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(testGroup); session.getTransaction().commit(); session.close(); Session output = sessionFactory.openSession(); output.beginTransaction(); //hibernateテスト用出力 List groupResult = output.createQuery( "from Group" ).list(); for ( hibernateTest.entities.Group group : (List<hibernateTest.entities.Group>) groupResult ) { System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName()); } output.getTransaction().commit(); output.close(); return testGroup; } public static Group getGroupByGid(String gId){ Group editGroup; Session session = sessionFactory.openSession(); session.beginTransaction(); List groupResult = session.createQuery( "from Group" ).list(); for ( hibernateTest.entities.Group group : (List<hibernateTest.entities.Group>) groupResult ) { editGroup = group; if (editGroup.getgId().equals(gId)) { return editGroup; } } session.getTransaction().commit(); session.close(); return null; } public static DeleteResult deleteGroup(String gId){ Group editGroup = Groups.getInstance().getGroupByGid(gId); if(editGroup == null){ return DeleteResult.FAILURE; } //以下に削除処理を行う。 return DeleteResult.SUCCESS; } public static HashMap<String, String> getMembersListByGid(String gId){ return createTestHashMap(); } public static HashMap<String, String> addMember(String gId, String uId){ return createTestHashMap(); } public static HashMap<String, String> deleteMember(String gId, String uId){ return createTestHashMap(); } public static HashMap<String, String> getRequestsListByGid(String gId){ return createTestHashMap(); } public static Request addRequests(String gId, String uId, String product, String deadline, int location){ //テスト用 Request testRequest = new Request("123456789", "http://test.com", "1999/01/01/15:00:00", uId, product, "1999/01/01/15:00:00", 999); return testRequest; } public static Request getRequestDetailByGidAndRid(String gId, String rId){ return null; } public static Request updateRequest(String gId, String rId, String uId, String product, String deadline, int location, boolean done){ //テスト用 Request testRequest = new Request("123456789", "http://test.com", "1999/01/01/15:00:00", uId, product, "1999/01/01/15:00:00", 999); return testRequest; } public static DeleteResult deleteRequest(String gId, String rId){ return DeleteResult.SUCCESS; } //テスト用にHashMapの作成 public static HashMap<String, String> createTestHashMap(){ HashMap<String, String> testMap = new HashMap<>(); testMap.put("123456780", "http://test0.com"); testMap.put("123456781", "http://test1.com"); testMap.put("123456782", "http://test2.com"); /* //Key, valueの取り出し方例(拡張for文) for (String key : TestMap.keySet()) { System.out.println(key + " " + TestMap.get(key)); } */ return testMap; } }