package cactusServer.resources; import java.util.HashMap; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import cactusServer.entities.CameraState; import cactusServer.entities.EmoteState; import cactusServer.entities.Player; import cactusServer.models.Instances; @Path("/instances/players") public class PlayersRest { @POST @Produces(MediaType.APPLICATION_JSON) public HashMap<String, Player> createPlayer(@PathParam("instanceId") String instanceURI, @FormParam("characterURI") String characterURI, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart) { Instances instances = Instances.getInstance(); HashMap<String, Player> idMap = instances.createPlayer(instanceURI, characterURI, cameraState, animationClassToStart); HashMap<String, Player> uriMap = new HashMap<>(); for (String id : idMap.keySet()) { String uri = (InstancesRest.INSTANCES_URI + "/" + "/players/") + id; uriMap.put(uri, idMap.get(id)); } return uriMap; } @Path("/{playerId}") @GET @Produces(MediaType.APPLICATION_JSON) public Player getPlayer(@PathParam("playerId") String playerId) { return Instances.getInstance().getPlayer(playerId); } @GET @Produces(MediaType.APPLICATION_JSON) public HashMap<String, Player> getPlayers(@QueryParam("instanceId") String instanceId) { return Instances.getInstance().getPlayers(instanceId); } @Path("/{playerId}") @PUT @Produces(MediaType.APPLICATION_JSON) public Player updatePlayer(@PathParam("instanceId") String instanceId, @FormParam("playerId") String playerId, @FormParam("characterURI") String characterURI, @FormParam("position") Position3D position, @FormParam("angle") Quaternion3D angle, @FormParam("cameraState") CameraState cameraState, @FormParam("animationClassToStart") EmoteState.EmoteType animationClassToStart) { return Instances.getInstance().updatePlayer(playerId, characterURI, position, angle, cameraState, animationClassToStart); } }