package controllers; import api.v1.PositionTag; import auth.modules.TokenAuthorize; import auth.types.PermissionType; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import compositions.*; import mapper.PositionTagMapper; import models.PositionTagModel; import play.libs.Json; import play.mvc.Result; import service.PositionService; import java.io.IOException; import java.util.List; @ResponseTimeLoggingComposition.ResponseTimeLogging @RequestLoggingComposition.RequestLogging @NoCacheComposition.NoCache @ErrorHandlingComposition.ErrorHandling @CorsComposition.Cors public class PositionTagControllerV1 extends PoseidonController { @TokenAuthorize(requiredPermission = PermissionType.READ) public Result getAll() { PositionService service = new PositionService(currentApiUser().username); List<PositionTagModel> positionTagModels = service.findAllTags(); List<PositionTag> tags = new PositionTagMapper().mapToApi(positionTagModels); return ok(Json.toJson(tags)); } @TokenAuthorize(requiredPermission = PermissionType.READ) public Result get(Long id) { PositionService service = new PositionService(currentApiUser().username); PositionTagModel positionTagModel = service.getTagById(id); if ( positionTagModel == null ) return notFound(); PositionTag tag = new PositionTagMapper().mapToApi(positionTagModel); return ok(Json.toJson(tag)); } @TokenAuthorize(requiredPermission = PermissionType.READ) public Result getMatchingTags(String query) { PositionService service = new PositionService(currentApiUser().username); List<PositionTagModel> positionTagModels = service.findAllMatchingTags(query); List<PositionTag> tags = new PositionTagMapper().mapToApi(positionTagModels); return ok(Json.toJson(tags)); } @TokenAuthorize(requiredPermission = PermissionType.WRITE) public Result createOrUpdate(String callback) { JsonNode body = request().body().asJson(); ObjectMapper mapper = new ObjectMapper(); PositionTag apiTag; try { apiTag = mapper.readValue(body.toString(),PositionTag.class); } catch (IOException e) { return badRequest("json post parameter parsing failure: " + e.getMessage()); } PositionTagModel model = new PositionService(currentApiUser().username).createOrUpdateTag(apiTag); PositionTag newTag= new PositionTagMapper().mapToApi(model); JsonNode jsonOut = Json.toJson(newTag); return ok(callback,jsonOut); } }