Newer
Older
CosmosServer / src / main / java / com / example / cosmos_serversb / models / Groups.java
t-kume on 20 Jun 2019 4 KB 細かな修正
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;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

@Singleton
public class Groups {
    private static Groups theInstance = null;
    private static ArrayList<Group> groups = new ArrayList<>();

    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();
        return testGroup;
    }

    public static Group getGroupByGid(String gId){
        Group editGroup;
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        List groupResult = session.createQuery( "from Group" ).list();
        for ( Group group : (List<Group>) groupResult ) {
            editGroup = group;
            if (editGroup.getgId().equals(gId)) {
                session.getTransaction().commit();
                session.close();
                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;
    }

}