package com.example.cosmos_serversb.models; import java.util.*; import javax.inject.Singleton; import com.example.cosmos_serversb.entities.*; import org.hibernate.Session; import org.hibernate.SessionFactory; @Singleton public class Groups { private static Groups theInstance = null; private static ArrayList<Group> groups = new ArrayList<>(); private static HashMap<String, String> testMap = new HashMap<>(); private static SessionFactory sessionFactory; private static String baseURI = "http://nitta-lab-www.is.konan-u.ac.jp/"; private static String AppName = "cosmos"; private Groups(){ sessionFactory = SessionFactoryManager.getInstance().getSessionFactory(); } public static Groups getInstance(){ if(theInstance == null){ theInstance = new Groups(); } return theInstance; } public static String createGId() { //gIdを作成し既存していないかチェック後DBに保存し作成したgIdを返す String gId = UUID.randomUUID().toString(); return gId; } public static String createRId() { //rIdを作成し既存していないかチェック後DBに保存し作成したrIdを返す String rId = UUID.randomUUID().toString(); return rId; } //getGroupsListByUidは現状うまく処理されない public static HashMap<String, String> getGroupsListByUid(String uId){ return getTestHashMap(); } public static Group createGroup(String name, String uId){ //先にGidとuriの発行を行う String gId = getInstance().createGId(); String uri = baseURI + AppName + "/groups/" + gId; createTestHashMap(gId, uri); Group testGroup = new Group(gId, uri, name, uId); Session session = SessionManager.getInstance().getSession(); session.save(testGroup); // SessionManager.getInstance().closeSession(); // session = SessionManager.getSession().getSession(); // testGroup.addMember(uId); // int n = testGroup.getMembers().size(); // session.update(testGroup); // SessionManager.getInstance().closeSession(); return testGroup; } public static Group getGroupByGid(String gId){ Group editGroup; Session session = SessionManager.getInstance().getSession(); List groupResult = session.createQuery( "from Group" ).list(); for ( Group group : (List<Group>) groupResult ) { editGroup = group; if (editGroup.getgId().equals(gId)) { return editGroup; } } 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 null; } public static HashMap<String, String> addMember(String gId, String uId){ return null; } public static HashMap<String, String> deleteMember(String gId, String uId){ return null; } public static HashMap<String, String> getRequestsListByGid(String gId){ return null; } public static Request addRequests(String gId, String uId, String product, String deadline, int location){ //テスト用 String rId = getInstance().createRId(); String uri = baseURI + AppName + "/groups/" + gId + "/requests/" + rId; Request testRequest = new Request(rId, uri, "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(rId, "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 void createTestHashMap(String gId, String uri){ testMap.put(gId, uri); /* //Key, valueの取り出し方例(拡張for文) for (String key : TestMap.keySet()) { System.out.println(key + " " + TestMap.get(key)); } */ } //とりあえず作成。あとでaddMember()と統合させる。 public static void addMemberWhenCreateGroup(Group group, String uId){ Session session = SessionManager.getInstance().getSession(); // Group editGroup = session.load(Group.class, "gId");//取得できない Group editGroup = group; if(editGroup != null) { editGroup.addMember(uId); // int n = testGroup.getMembers().size(); session.update(editGroup); } } public static HashMap<String, String> getTestHashMap(){ return testMap; } }