mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
[CST-5799] Changes after community feedbacks
This commit is contained in:
@@ -68,10 +68,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* Implementation of {@link ExternalDataProvider} that search for all the works
|
||||
* of the profile with the given orcid id that hava a source other than
|
||||
* DSpaceCris. The id of the external data objects returned by the methods of
|
||||
* this class is the concatenation of the orcid id and the put code associated
|
||||
* with the publication, separated by ::
|
||||
* of the profile with the given orcid id that hava a source other than DSpace.
|
||||
* The id of the external data objects returned by the methods of this class is
|
||||
* the concatenation of the orcid id and the put code associated with the
|
||||
* publication, separated by :: (example 0000-0000-0123-4567::123456)
|
||||
*
|
||||
* @author Luca Giamminonni (luca.giamminonni at 4science.it)
|
||||
*
|
||||
@@ -131,11 +131,29 @@ public class OrcidPublicationDataProvider extends AbstractExternalDataProvider {
|
||||
return StringUtils.isBlank(id) || id.split("::").length != 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the works related to the given ORCID in the range from start and
|
||||
* limit.
|
||||
*
|
||||
* @param orcid the ORCID ID of the author to search for works
|
||||
* @param start the start index
|
||||
* @param limit the limit index
|
||||
* @return the list of the works
|
||||
*/
|
||||
private List<Work> findWorks(String orcid, int start, int limit) {
|
||||
List<WorkSummary> workSummaries = findWorkSummaries(orcid, start, limit);
|
||||
return findWorks(orcid, workSummaries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the works summaries related to the given ORCID in the range from
|
||||
* start and limit.
|
||||
*
|
||||
* @param orcid the ORCID ID of the author to search for works summaries
|
||||
* @param start the start index
|
||||
* @param limit the limit index
|
||||
* @return the list of the works summaries
|
||||
*/
|
||||
private List<WorkSummary> findWorkSummaries(String orcid, int start, int limit) {
|
||||
return getWorks(orcid).getWorkGroup().stream()
|
||||
.filter(workGroup -> allWorkSummariesHaveDifferentSourceClientId(workGroup))
|
||||
@@ -146,6 +164,14 @@ public class OrcidPublicationDataProvider extends AbstractExternalDataProvider {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the works related to the given ORCID ID and work summaries (a
|
||||
* work has more details than a work summary).
|
||||
*
|
||||
* @param orcid the ORCID id of the author to search for works
|
||||
* @param workSummaries the work summaries used to search the related works
|
||||
* @return the list of the works
|
||||
*/
|
||||
private List<Work> findWorks(String orcid, List<WorkSummary> workSummaries) {
|
||||
|
||||
List<String> workPutCodes = getPutCodes(workSummaries);
|
||||
@@ -164,6 +190,14 @@ public class OrcidPublicationDataProvider extends AbstractExternalDataProvider {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Search a work by ORCID id and putcode, using API or PUBLIC urls based on
|
||||
* whether the ORCID API keys are configured or not.
|
||||
*
|
||||
* @param orcid the ORCID ID
|
||||
* @param putCode the work's identifier on ORCID
|
||||
* @return the work, if any
|
||||
*/
|
||||
private Optional<Work> getWork(String orcid, String putCode) {
|
||||
if (orcidConfiguration.isApiConfigured()) {
|
||||
String accessToken = getAccessToken(orcid);
|
||||
@@ -173,6 +207,12 @@ public class OrcidPublicationDataProvider extends AbstractExternalDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the works related to the given ORCID.
|
||||
*
|
||||
* @param orcid the ORCID ID of the author to search for works
|
||||
* @return the list of the works
|
||||
*/
|
||||
private Works getWorks(String orcid) {
|
||||
if (orcidConfiguration.isApiConfigured()) {
|
||||
String accessToken = getAccessToken(orcid);
|
||||
@@ -182,6 +222,13 @@ public class OrcidPublicationDataProvider extends AbstractExternalDataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the works related to the given ORCID by the given putCodes.
|
||||
*
|
||||
* @param orcid the ORCID ID of the author to search for works
|
||||
* @param putCodes the work's put codes to search
|
||||
* @return the list of the works
|
||||
*/
|
||||
private WorkBulk getWorkBulk(String orcid, List<String> putCodes) {
|
||||
if (orcidConfiguration.isApiConfigured()) {
|
||||
String accessToken = getAccessToken(orcid);
|
||||
|
@@ -21,6 +21,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Predicate;
|
||||
@@ -57,7 +58,7 @@ import org.orcid.jaxb.model.v3.release.record.summary.Works;
|
||||
*/
|
||||
public class OrcidPublicationDataProviderIT extends AbstractIntegrationTestWithDatabase {
|
||||
|
||||
private static final String BASE_XML_DIR_PATH = "./target/testing/dspace/assetstore/orcid-works/";
|
||||
private static final String BASE_XML_DIR_PATH = "org/dspace/app/orcid-works/";
|
||||
|
||||
private static final String ACCESS_TOKEN = "32c83ccb-c6d5-4981-b6ea-6a34a36de8ab";
|
||||
|
||||
@@ -103,8 +104,8 @@ public class OrcidPublicationDataProviderIT extends AbstractIntegrationTestWithD
|
||||
dataProvider.setOrcidClient(orcidClientMock);
|
||||
|
||||
originalClientId = orcidConfiguration.getClientId();
|
||||
orcidConfiguration.setClientId("DSPACE-CRIS-CLIENT-ID");
|
||||
orcidConfiguration.setClientSecret("DSPACE-CRIS-CLIENT-SECRET");
|
||||
orcidConfiguration.setClientId("DSPACE-CLIENT-ID");
|
||||
orcidConfiguration.setClientSecret("DSPACE-CLIENT-SECRET");
|
||||
|
||||
when(orcidClientMock.getReadPublicAccessToken()).thenReturn(buildTokenResponse(ACCESS_TOKEN));
|
||||
|
||||
@@ -387,7 +388,11 @@ public class OrcidPublicationDataProviderIT extends AbstractIntegrationTestWithD
|
||||
private <T> T unmarshall(String fileName, Class<T> clazz) throws Exception {
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(clazz);
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
return (T) unmarshaller.unmarshal(new File(BASE_XML_DIR_PATH, fileName));
|
||||
URL resource = getClass().getClassLoader().getResource(BASE_XML_DIR_PATH + fileName);
|
||||
if (resource == null) {
|
||||
throw new IllegalStateException("No resource found named " + BASE_XML_DIR_PATH + fileName);
|
||||
}
|
||||
return (T) unmarshaller.unmarshal(new File(resource.getFile()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -39,8 +39,8 @@
|
||||
<common:last-modified-date>2015-06-19T19:14:26.339Z</common:last-modified-date>
|
||||
<common:source>
|
||||
<common:source-client-id>
|
||||
<common:uri>https://sandbox.orcid.org/client/DSPACE-CRIS-CLIENT-ID</common:uri>
|
||||
<common:path>DSPACE-CRIS-CLIENT-ID</common:path>
|
||||
<common:uri>https://sandbox.orcid.org/client/DSPACE-CLIENT-ID</common:uri>
|
||||
<common:path>DSPACE-CLIENT-ID</common:path>
|
||||
<common:host>sandbox.orcid.org</common:host>
|
||||
</common:source-client-id>
|
||||
<common:source-name>DSPACE-CRIS</common:source-name>
|
||||
@@ -120,8 +120,8 @@
|
||||
<common:host>sandbox.orcid.org</common:host>
|
||||
</common:source-orcid>
|
||||
<common:source-client-id>
|
||||
<common:uri>https://sandbox.orcid.org/client/DSPACE-CRIS-CLIENT-ID</common:uri>
|
||||
<common:path>DSPACE-CRIS-CLIENT-ID</common:path>
|
||||
<common:uri>https://sandbox.orcid.org/client/DSPACE-CLIENT-ID</common:uri>
|
||||
<common:path>DSPACE-CLIENT-ID</common:path>
|
||||
<common:host>sandbox.orcid.org</common:host>
|
||||
</common:source-client-id>
|
||||
<common:source-name>DSPACE-CRIS</common:source-name>
|
Reference in New Issue
Block a user