Ejemplo n.º 1
0
  @GET
  @Path(
      "/{"
          + RodaConstants.API_PATH_PARAM_REPRESENTATION_UUID
          + "}/"
          + RodaConstants.API_DESCRIPTIVE_METADATA
          + "/")
  @ApiOperation(
      value = "List descriptive metadata",
      notes = "List descriptive metadata",
      response = DescriptiveMetadataList.class,
      responseContainer = "List")
  @ApiResponses(
      value = {
        @ApiResponse(
            code = 200,
            message = "OK",
            response = DescriptiveMetadataList.class,
            responseContainer = "List"),
        @ApiResponse(
            code = 404,
            message = "Representation not found",
            response = ApiResponseMessage.class)
      })
  public Response retrieveDescriptiveMetadataListFromRepresentation(
      @ApiParam(value = "The ID of the existing Representation", required = true)
          @PathParam(RodaConstants.API_PATH_PARAM_REPRESENTATION_UUID)
          String representationId,
      @ApiParam(value = "Index of the first element to return", defaultValue = "0")
          @QueryParam(RodaConstants.API_QUERY_KEY_START)
          String start,
      @ApiParam(value = "Maximum number of elements to return", defaultValue = "100")
          @QueryParam(RodaConstants.API_QUERY_KEY_LIMIT)
          String limit,
      @ApiParam(
              value = "Choose format in which to get the representation",
              allowableValues = RodaConstants.API_GET_LIST_MEDIA_TYPES)
          @QueryParam(RodaConstants.API_QUERY_KEY_ACCEPT_FORMAT)
          String acceptFormat)
      throws RODAException {
    String mediaType = ApiUtils.getMediaType(acceptFormat, request);

    // get user
    User user = UserUtility.getApiUser(request);

    // delegate action to controller
    EntityResponse metadataList =
        Browser.listRepresentationDescriptiveMetadata(
            user, representationId, start, limit, acceptFormat);

    if (metadataList instanceof ObjectResponse) {
      ObjectResponse<DescriptiveMetadataList> dmlist =
          (ObjectResponse<DescriptiveMetadataList>) metadataList;
      return Response.ok(dmlist.getObject(), mediaType).build();
    } else {
      return ApiUtils.okResponse((StreamResponse) metadataList);
    }
  }