Newer
Older
CosmosServer / src / main / java / com / example / cosmos_serversb / resources / GroupsRest.java
package com.example.cosmos_serversb.resources;

import com.example.cosmos_serversb.entities.Group;
import com.example.cosmos_serversb.entities.User;
import com.example.cosmos_serversb.jsons.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.hibernate.Session;
import org.springframework.stereotype.Component;

import javax.ws.rs.*;

import com.example.cosmos_serversb.models.*;

import java.io.IOException;
import java.util.Date;

@Component
@Path("/groups")
public class GroupsRest {
    @GET
    public String getGroupsListByUid(@QueryParam("uId") String uId, @QueryParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().getGroupsListByUid(uId));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @POST
    public String createGroup(@FormParam("name") String name, @FormParam("uId") String uId, @FormParam("token") String token) throws IOException {
        //グループの作成
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        Group group = Groups.getInstance().createGroup(name, uId);
        SessionManager.getInstance().closeSession();//一度データベースを更新。

        //グループにメンバーの追加
        SessionManager.getInstance().getSession();
        Groups.addMember(group.getgId(), uId);
        SessionManager.getInstance().closeSession();
//        String json = mapper.writeValueAsString(group);//このJSONには、グループを作成したユーザの情報が含まれていません。

        Session session = SessionManager.getInstance().getSession();
//        Group editedGroup = (Group) session.load(Group.class, group.getgId());//editedGroupの値がおかしい?
//        String json = mapper.writeValueAsString(editedGroup);
        GroupJson groupJson = new GroupJson(session.load(Group.class, group.getgId()));
        String json = mapper.writeValueAsString( groupJson );
        SessionManager.getInstance().closeSession();

        return json;
    }

    @Path("/{gId}")
    @GET
    public String getGroupByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        Group group = Groups.getInstance().getGroupByGid(gId);
        SessionManager.getInstance().closeSession();

        Session session = SessionManager.getInstance().getSession();
        GroupJson groupJson = new GroupJson(session.load(Group.class, group.getgId()));
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(groupJson);
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("/{gId}")
    @DELETE
    public String deleteGroup(@PathParam("gId") String gId, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().deleteGroup(gId));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("/{gId}/members")
    @GET
    public String getGroupMembersListByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().getMembersListByGid(gId));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("/{gId}/members")
    @POST
    public String addMember(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().addMember(gId, uId));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("/{gId}/members")
    @DELETE
    public String deleteMember(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().deleteMember(gId, uId));
        SessionManager.getInstance().closeSession();
        return json;
    }

//    @Path("/{gId}/requests")
//    @GET
//    public String getRequestsListByGid(@PathParam("gId") String gId, @QueryParam("token") String token) throws JsonProcessingException{
//        SessionManager.getInstance().getSession();
//        ObjectMapper mapper = new ObjectMapper();
//        String json = mapper.writeValueAsString(Groups.getInstance().getRequestsListByGid(gId));
//        SessionManager.getInstance().closeSession();
//        return json;
//    }

    @Path("/{gId}/requests")
    @GET
    public String getRequestsListByGid(@PathParam("gId") String gId, @QueryParam("token") String token, @QueryParam("detail") boolean detail, @QueryParam("quantity") int quantity) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().getRequestsListByGid(gId, detail, quantity));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("/{gId}/requests")
    @POST
    public String addRequests(@PathParam("gId") String gId, @FormParam("uId") String uId, @FormParam("product") String product, @FormParam("deadline") Date deadline, @FormParam("location") int location, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().addRequests(gId, uId, product, deadline, location));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("{gId}/requests/{rId}")
    @GET
    public String getRequestsDetailByGidAndRid(@PathParam("gId") String gId, @PathParam("rId") String rId, @QueryParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().getRequestDetailByGidAndRid(gId, rId));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("{gId}/requests/{rId}")
    @PUT
    public String updateRequest(@PathParam("gId") String gId, @PathParam("rId") String rId, @FormParam("uId") String uId, @FormParam("product") String product, @FormParam("deadline") Date deadline, @FormParam("location") int location, @FormParam("done") boolean done, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().updateRequest(gId, rId, uId, product, deadline, location, done));
        SessionManager.getInstance().closeSession();
        return json;
    }

    @Path("{gId}/requests/{rId}")
    @DELETE
    public String deleteRequest(@PathParam("gId") String gId, @PathParam("rId") String rId, @FormParam("token") String token) throws JsonProcessingException{
        SessionManager.getInstance().getSession();
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Groups.getInstance().deleteRequest(gId, rId));
        SessionManager.getInstance().closeSession();
        return json;
    }
}