/**
* =============================================================================
*
* 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.delegator.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.ws.rs.core.Response;
import org.orcid.api.publicV2.server.delegator.PublicV2ApiServiceDelegator;
import org.orcid.core.manager.OrcidSecurityManager;
import org.orcid.core.manager.ProfileEntityCacheManager;
import org.orcid.core.version.V2Convertible;
import org.orcid.core.version.V2VersionConverterChain;
public class PublicV2ApiServiceVersionedDelegatorImpl implements PublicV2ApiServiceDelegator<Object, Object, Object, Object, Object, Object, Object, Object, Object> {
@Resource
private PublicV2ApiServiceDelegator<Object, Object, Object, Object, Object, Object, Object, Object, Object> publicV2ApiServiceDelegator;
private String externalVersion;
@Resource
private V2VersionConverterChain v2VersionConverterChain;
@Resource
private ProfileEntityCacheManager profileEntityCacheManager;
@Resource
private OrcidSecurityManager orcidSecurityManager;
@Override
public Response viewStatusText() {
return publicV2ApiServiceDelegator.viewStatusText();
}
@Override
public Response viewActivities(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewActivities(orcid));
}
@Override
public Response viewWork(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewWork(orcid, putCode));
}
@Override
public Response viewWorks(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewWorks(orcid));
}
@Override
public Response viewWorkCitation(String orcid, Long putCode) {
checkProfileStatus(orcid);
// DO not downgrade non-orcid schema responses (this is citeproc);
return publicV2ApiServiceDelegator.viewWorkCitation(orcid, putCode);
// return
// downgradeResponse(publicV2ApiServiceDelegator.viewWorkCitation(orcid,
// putCode), orcid);
}
@Override
public Response viewWorkSummary(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewWorkSummary(orcid, putCode));
}
@Override
public Response viewFunding(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewFunding(orcid, putCode));
}
@Override
public Response viewFundings(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewFundings(orcid));
}
@Override
public Response viewFundingSummary(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewFundingSummary(orcid, putCode));
}
@Override
public Response viewEducation(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEducation(orcid, putCode));
}
@Override
public Response viewEducations(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEducations(orcid));
}
@Override
public Response viewEducationSummary(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEducationSummary(orcid, putCode));
}
@Override
public Response viewEmployment(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEmployment(orcid, putCode));
}
@Override
public Response viewEmployments(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEmployments(orcid));
}
@Override
public Response viewEmploymentSummary(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEmploymentSummary(orcid, putCode));
}
@Override
public Response viewPeerReview(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewPeerReview(orcid, putCode));
}
@Override
public Response viewPeerReviews(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewPeerReviews(orcid));
}
@Override
public Response viewPeerReviewSummary(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewPeerReviewSummary(orcid, putCode));
}
@Override
public Response viewGroupIdRecord(Long putCode) {
return publicV2ApiServiceDelegator.viewGroupIdRecord(putCode);
}
@Override
public Response viewGroupIdRecords(String pageSize, String pageNum) {
return publicV2ApiServiceDelegator.viewGroupIdRecords(pageSize, pageNum);
}
@Override
public Response viewResearcherUrls(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewResearcherUrls(orcid));
}
@Override
public Response viewResearcherUrl(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewResearcherUrl(orcid, putCode));
}
@Override
public Response viewEmails(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewEmails(orcid));
}
@Override
public Response viewOtherNames(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewOtherNames(orcid));
}
@Override
public Response viewOtherName(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewOtherName(orcid, putCode));
}
@Override
public Response viewPersonalDetails(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewPersonalDetails(orcid));
}
@Override
public Response viewExternalIdentifiers(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewExternalIdentifiers(orcid));
}
@Override
public Response viewExternalIdentifier(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewExternalIdentifier(orcid, putCode));
}
@Override
public Response viewBiography(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewBiography(orcid));
}
@Override
public Response viewKeywords(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewKeywords(orcid));
}
@Override
public Response viewKeyword(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewKeyword(orcid, putCode));
}
@Override
public Response viewAddresses(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewAddresses(orcid));
}
@Override
public Response viewAddress(String orcid, Long putCode) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewAddress(orcid, putCode));
}
@Override
public Response viewPerson(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewPerson(orcid));
}
@Override
public Response viewRecord(String orcid) {
checkProfileStatus(orcid);
return downgradeResponse(publicV2ApiServiceDelegator.viewRecord(orcid));
}
@Override
public Response searchByQuery(Map<String, List<String>> solrParams) {
return publicV2ApiServiceDelegator.searchByQuery(solrParams);
}
@Override
public Response viewBulkWorks(String orcid, String putCodes) {
return publicV2ApiServiceDelegator.viewBulkWorks(orcid, putCodes);
}
private Response downgradeResponse(Response response) {
Object entity = response.getEntity();
V2Convertible result = null;
if (entity != null) {
result = v2VersionConverterChain.downgrade(new V2Convertible(entity, PublicV2ApiServiceDelegator.LATEST_V2_VERSION), externalVersion);
return Response.fromResponse(response).entity(result.getObjectToConvert()).build();
}
return response;
}
private void checkProfileStatus(String orcid) {
orcidSecurityManager.checkProfile(orcid);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public void setMemberV2ApiServiceDelegator(PublicV2ApiServiceDelegator memberV2ApiServiceDelegator) {
this.publicV2ApiServiceDelegator = memberV2ApiServiceDelegator;
}
public String getExternalVersion() {
return externalVersion;
}
public void setExternalVersion(String externalVersion) {
this.externalVersion = externalVersion;
}
@Override
public Response viewClient(String clientId) {
return publicV2ApiServiceDelegator.viewClient(clientId);
}
}