/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.api.publicV2.server; import static org.orcid.core.api.OrcidApiConstants.ACTIVITIES; import static org.orcid.core.api.OrcidApiConstants.EDUCATION; import static org.orcid.core.api.OrcidApiConstants.EDUCATION_SUMMARY; import static org.orcid.core.api.OrcidApiConstants.EMPLOYMENT; import static org.orcid.core.api.OrcidApiConstants.EMPLOYMENT_SUMMARY; import static org.orcid.core.api.OrcidApiConstants.FUNDING; import static org.orcid.core.api.OrcidApiConstants.FUNDING_SUMMARY; import static org.orcid.core.api.OrcidApiConstants.ORCID_JSON; import static org.orcid.core.api.OrcidApiConstants.ORCID_XML; import static org.orcid.core.api.OrcidApiConstants.PEER_REVIEW; import static org.orcid.core.api.OrcidApiConstants.PEER_REVIEW_SUMMARY; import static org.orcid.core.api.OrcidApiConstants.PUTCODE; import static org.orcid.core.api.OrcidApiConstants.STATUS_PATH; import static org.orcid.core.api.OrcidApiConstants.VND_ORCID_JSON; import static org.orcid.core.api.OrcidApiConstants.VND_ORCID_XML; import static org.orcid.core.api.OrcidApiConstants.WORK; import static org.orcid.core.api.OrcidApiConstants.WORK_SUMMARY; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.orcid.api.common.swagger.SwaggerUIBuilder; import org.orcid.api.publicV2.server.delegator.PublicV2ApiServiceDelegator; import org.orcid.core.api.OrcidApiConstants; import org.orcid.jaxb.model.groupid_rc1.GroupIdRecord; import org.orcid.jaxb.model.record.summary_rc1.ActivitiesSummary; import org.orcid.jaxb.model.record.summary_rc1.EducationSummary; import org.orcid.jaxb.model.record.summary_rc1.EmploymentSummary; import org.orcid.jaxb.model.record.summary_rc1.FundingSummary; import org.orcid.jaxb.model.record.summary_rc1.PeerReviewSummary; import org.orcid.jaxb.model.record.summary_rc1.WorkSummary; import org.orcid.jaxb.model.record_rc1.Education; import org.orcid.jaxb.model.record_rc1.Employment; import org.orcid.jaxb.model.record_rc1.Funding; import org.orcid.jaxb.model.record_rc1.PeerReview; import org.orcid.jaxb.model.record_rc1.Work; import org.springframework.beans.factory.annotation.Value; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; /** * * @author Angel Montenegro * */ @Path("/v2.0_rc1") public class PublicV2ApiServiceImplV2_0_rc1 { protected PublicV2ApiServiceDelegator<Education, Employment, ?, Funding, GroupIdRecord, ?, PeerReview, ?, Work> serviceDelegator; @Value("${org.orcid.core.baseUri}") protected String baseUri; @Value("${org.orcid.core.pubBaseUri}") protected String pubBaseUri; public void setServiceDelegator( PublicV2ApiServiceDelegator<Education, Employment, ?, Funding, GroupIdRecord, ?, PeerReview, ?, Work> serviceDelegator) { this.serviceDelegator = serviceDelegator; } /** * Serves the Swagger UI HTML page * * @return a 200 response containing the HTML */ @GET @Produces(value = { MediaType.TEXT_HTML }) @Path("/") @ApiOperation(value = "Fetch the HTML swagger UI interface", hidden = true) public Response viewSwagger() { return new SwaggerUIBuilder().buildSwaggerHTML(baseUri, pubBaseUri, true); } @GET @Produces(value = { MediaType.TEXT_PLAIN }) @Path(STATUS_PATH) @ApiOperation(value = "Check the server status", response = String.class) public Response viewStatusText() { return serviceDelegator.viewStatusText(); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(ACTIVITIES) @ApiOperation(value = "Fetch all Activities", response = ActivitiesSummary.class) public Response viewActivities(@PathParam("orcid") String orcid, @Context HttpServletRequest httpRequest) { return serviceDelegator.viewActivities(orcid); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON, OrcidApiConstants.APPLICATION_CITEPROC }) @Path(WORK + PUTCODE) @ApiOperation(value = "Fetch a Work", notes = "More notes about this method", response = Work.class) public Response viewWork(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode, @Context HttpServletRequest httpRequest) { if (OrcidApiConstants.APPLICATION_CITEPROC.equals(httpRequest.getHeader("Accept"))) return serviceDelegator.viewWorkCitation(orcid, putCode); return serviceDelegator.viewWork(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(WORK_SUMMARY + PUTCODE) @ApiOperation(value = "Fetch a Work Summary", response = WorkSummary.class) public Response viewWorkSummary(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewWorkSummary(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(FUNDING + PUTCODE) @ApiOperation(value = "Fetch a Funding", response = Funding.class) public Response viewFunding(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewFunding(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(FUNDING_SUMMARY + PUTCODE) @ApiOperation(value = "Fetch a Funding Summary", response = FundingSummary.class) public Response viewFundingSummary(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewFundingSummary(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(EDUCATION + PUTCODE) @ApiOperation(value = "Fetch an Education", response = Education.class) public Response viewEducation(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewEducation(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(EDUCATION_SUMMARY + PUTCODE) @ApiOperation(value = "Fetch an Education Summary", response = EducationSummary.class) public Response viewEducationSummary(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewEducationSummary(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(EMPLOYMENT + PUTCODE) @ApiOperation(value = "Fetch an Employment", notes = "Retrive a specific education representation", response = Employment.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Employment found", response = Employment.class), @ApiResponse(code = 404, message = "Employment not found") }) public Response viewEmployment(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewEmployment(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(EMPLOYMENT_SUMMARY + PUTCODE) @ApiOperation(value = "Fetch an Employment Summary", response = EmploymentSummary.class) public Response viewEmploymentSummary(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewEmploymentSummary(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(PEER_REVIEW + PUTCODE) @ApiOperation(value = "Fetch a Peer Review", response = PeerReview.class) public Response viewPeerReview(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewPeerReview(orcid, putCode); } @GET @Produces(value = { VND_ORCID_XML, ORCID_XML, MediaType.APPLICATION_XML, VND_ORCID_JSON, ORCID_JSON, MediaType.APPLICATION_JSON }) @Path(PEER_REVIEW_SUMMARY + PUTCODE) @ApiOperation(value = "Fetch a Peer Review Summary", response = PeerReviewSummary.class) public Response viewPeerReviewSummary(@PathParam("orcid") String orcid, @PathParam("putCode") Long putCode) { return serviceDelegator.viewPeerReviewSummary(orcid, putCode); } }