/** * ============================================================================= * * 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.internal.server.delegator.impl; import static org.orcid.core.api.OrcidApiConstants.STATUS_OK_MESSAGE; import java.util.Date; import javax.annotation.Resource; import javax.ws.rs.core.Response; import org.orcid.core.manager.MembersManager; import org.orcid.core.manager.OrcidProfileManager; import org.orcid.core.security.visibility.aop.AccessControl; import org.orcid.internal.server.delegator.InternalApiServiceDelegator; import org.orcid.internal.util.LastModifiedResponse; import org.orcid.internal.util.MemberInfo; import org.orcid.jaxb.model.error_v2.OrcidError; import org.orcid.jaxb.model.message.ScopePathType; import org.orcid.pojo.ajaxForm.Member; /** * * @author Angel Montenegro * */ public class InternalApiServiceDelegatorImpl implements InternalApiServiceDelegator { @Resource private OrcidProfileManager orcidProfileManager; @Resource private MembersManager memberManager; @Override public Response viewStatusText() { return Response.ok(STATUS_OK_MESSAGE).build(); } @Override @AccessControl(requiredScope = ScopePathType.INTERNAL_PERSON_LAST_MODIFIED, requestComesFromInternalApi = true) public Response viewPersonLastModified(String orcid) { Date lastModified = orcidProfileManager.retrieveLastModifiedDate(orcid); LastModifiedResponse obj = new LastModifiedResponse(orcid, lastModified.toString()); Response response = Response.ok(obj).build(); return response; } @Override public Response viewMemberInfo(String memberIdOrName){ Member member = memberManager.getMember(memberIdOrName); if(member == null || (member.getErrors() != null && !member.getErrors().isEmpty())) { OrcidError orcidError = new OrcidError(); orcidError.setResponseCode(404); orcidError.setErrorCode(0); orcidError.setMoreInfo("Unable to find member info for: " + memberIdOrName); orcidError.setDeveloperMessage("Member id or name not found for: " + memberIdOrName); orcidError.setUserMessage("Unable to find member info for: " + memberIdOrName); return Response.status(Response.Status.NOT_FOUND).entity(orcidError).build(); } MemberInfo memberInfo = MemberInfo.fromMember(member); return Response.ok(memberInfo).build(); } }