Newer
Older
algoLike.pull / src / main / java / algoLike / pull / Deck.java
Shinji on 25 Jan 2023 2 KB pullに変更
package algoLike.pull;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Component;
import pushPullRefactor.Getter;
import pushPullRefactor.Message;
import pushPullRefactor.Resource;
import pushPullRefactor.State;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.*;

@Path("/deck")
@Component
@Resource("deck")
public class Deck {
    private Map.Entry<Boolean, Integer> resultByDrawingA;
    private Map.Entry<Boolean, Integer> resultByDrawingB;
    @State
    private List<Map.Entry<Integer, Boolean>> value = new ArrayList<Map.Entry<Integer, Boolean>>();

    @Path("/resultByDrawingA")
    @POST
    @Message({"resultByDrawingA"})
    public void updateResultByDrawingA(@FormParam("resultByDrawingA") String resultByDrawingA_json) throws JsonProcessingException {
        Map.Entry<Boolean, Integer> resultByDrawingA;
        {
            Map<String, Integer> i = new ObjectMapper().readValue(resultByDrawingA_json, HashMap.class);
            resultByDrawingA = new AbstractMap.SimpleEntry<>(Boolean.parseBoolean(i.entrySet().iterator().next().getKey()), i.entrySet().iterator().next().getValue());
        }
        this.resultByDrawingA = resultByDrawingA;
        this.value = this.value.subList(1, this.value.size());
    }

    @Path("/resultByDrawingB")
    @POST
    @Message({"resultByDrawingB"})
    public void updateResultByDrawingB(@FormParam("resultByDrawingB") String resultByDrawingB_json) throws JsonProcessingException {
        Map.Entry<Boolean, Integer> resultByDrawingB;
        {
            Map<String, Integer> i = new ObjectMapper().readValue(resultByDrawingB_json, HashMap.class);
            resultByDrawingB = new AbstractMap.SimpleEntry<>(Boolean.parseBoolean(i.entrySet().iterator().next().getKey()), i.entrySet().iterator().next().getValue());
        }
        this.resultByDrawingB = resultByDrawingB;
        this.value = this.value.subList(1, this.value.size());
    }

    @POST
    public void addCard(@FormParam("num") Integer num) {
        this.value.add(0, new AbstractMap.SimpleEntry<>(num, false));
    }

    @Produces(MediaType.APPLICATION_JSON)
    @GET
    @Getter
    public List<Map.Entry<Integer, Boolean>> getValue() {
        return value;
    }
}