BasicReferenceRestImpl.java

  1. package de.dlr.shepard.endpoints;

  2. import java.util.ArrayList;

  3. import de.dlr.shepard.filters.Subscribable;
  4. import de.dlr.shepard.neo4Core.entities.BasicReference;
  5. import de.dlr.shepard.neo4Core.io.BasicReferenceIO;
  6. import de.dlr.shepard.neo4Core.orderBy.BasicReferenceAttributes;
  7. import de.dlr.shepard.neo4Core.services.BasicReferenceService;
  8. import de.dlr.shepard.util.Constants;
  9. import de.dlr.shepard.util.QueryParamHelper;
  10. import jakarta.ws.rs.Consumes;
  11. import jakarta.ws.rs.DELETE;
  12. import jakarta.ws.rs.GET;
  13. import jakarta.ws.rs.Path;
  14. import jakarta.ws.rs.PathParam;
  15. import jakarta.ws.rs.Produces;
  16. import jakarta.ws.rs.QueryParam;
  17. import jakarta.ws.rs.core.Context;
  18. import jakarta.ws.rs.core.MediaType;
  19. import jakarta.ws.rs.core.Response;
  20. import jakarta.ws.rs.core.Response.Status;
  21. import jakarta.ws.rs.core.SecurityContext;

  22. @Consumes(MediaType.APPLICATION_JSON)
  23. @Produces(MediaType.APPLICATION_JSON)
  24. @Path(Constants.COLLECTIONS + "/{" + Constants.COLLECTION_ID + "}/" + Constants.DATAOBJECTS + "/{"
  25.         + Constants.DATAOBJECT_ID + "}/" + Constants.BASIC_REFERENCES)
  26. public class BasicReferenceRestImpl implements BasicReferenceRest {
  27.     private BasicReferenceService basicReferenceService = new BasicReferenceService();

  28.     @Context
  29.     private SecurityContext securityContext;

  30.     @GET
  31.     @Override
  32.     public Response getAllReferences(@PathParam(Constants.COLLECTION_ID) long collectionId,
  33.             @PathParam(Constants.DATAOBJECT_ID) long dataObjectId, @QueryParam(Constants.QP_NAME) String name,
  34.             @QueryParam(Constants.QP_PAGE) Integer page, @QueryParam(Constants.QP_SIZE) Integer size,
  35.             @QueryParam(Constants.QP_ORDER_BY_ATTRIBUTE) BasicReferenceAttributes orderBy,
  36.             @QueryParam(Constants.QP_ORDER_DESC) Boolean orderDesc) {
  37.         var params = new QueryParamHelper();
  38.         if (name != null)
  39.             params = params.withName(name);
  40.         if (page != null && size != null)
  41.             params = params.withPageAndSize(page, size);
  42.         if (orderBy != null)
  43.             params = params.withOrderByAttribute(orderBy, orderDesc);
  44.         var references = basicReferenceService.getAllBasicReferences(dataObjectId, params);
  45.         var result = new ArrayList<BasicReferenceIO>(references.size());

  46.         for (var ref : references) {
  47.             result.add(new BasicReferenceIO(ref));
  48.         }
  49.         return Response.ok(result).build();
  50.     }

  51.     @GET
  52.     @Path("/{" + Constants.BASIC_REFERENCE_ID + "}")
  53.     @Override
  54.     public Response getBasicReference(@PathParam(Constants.COLLECTION_ID) long collectionId,
  55.             @PathParam(Constants.DATAOBJECT_ID) long dataObjectId,
  56.             @PathParam(Constants.BASIC_REFERENCE_ID) long referenceId) {
  57.         BasicReference basicReference = basicReferenceService.getReference(referenceId);
  58.         return Response.ok(new BasicReferenceIO(basicReference)).build();
  59.     }

  60.     @DELETE
  61.     @Path("/{" + Constants.BASIC_REFERENCE_ID + "}")
  62.     @Subscribable
  63.     @Override
  64.     public Response deleteBasicReference(@PathParam(Constants.COLLECTION_ID) long collectionId,
  65.             @PathParam(Constants.DATAOBJECT_ID) long dataObjectId,
  66.             @PathParam(Constants.BASIC_REFERENCE_ID) long basicReferenceId) {
  67.         return basicReferenceService.deleteReference(basicReferenceId, securityContext.getUserPrincipal().getName())
  68.                 ? Response.status(Status.NO_CONTENT).build()
  69.                 : Response.status(Status.INTERNAL_SERVER_ERROR).build();
  70.     }

  71. }