mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 10:04:21 +00:00
Integrating projections into feature-external-sources
This commit is contained in:
@@ -21,6 +21,7 @@ import org.dspace.content.Collection;
|
||||
import org.dspace.content.Community;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.content.Site;
|
||||
import org.dspace.content.factory.ContentServiceFactory;
|
||||
import org.dspace.content.packager.DSpaceAIPIngester;
|
||||
@@ -38,7 +39,6 @@ import org.dspace.eperson.factory.EPersonServiceFactory;
|
||||
import org.dspace.eperson.service.EPersonService;
|
||||
import org.dspace.handle.factory.HandleServiceFactory;
|
||||
import org.dspace.handle.service.HandleService;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.Namespace;
|
||||
|
||||
|
@@ -28,6 +28,7 @@ import org.dspace.content.Community;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.MetadataValue;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.content.Site;
|
||||
import org.dspace.content.factory.ContentServiceFactory;
|
||||
import org.dspace.content.service.CollectionService;
|
||||
@@ -39,7 +40,6 @@ import org.dspace.core.Context;
|
||||
import org.dspace.core.SelfNamedPlugin;
|
||||
import org.dspace.handle.factory.HandleServiceFactory;
|
||||
import org.dspace.handle.service.HandleService;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.jdom.Attribute;
|
||||
import org.jdom.Document;
|
||||
import org.jdom.Element;
|
||||
|
@@ -29,6 +29,7 @@ import org.dspace.content.Community;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.MetadataValue;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.content.Site;
|
||||
import org.dspace.content.authority.Choices;
|
||||
import org.dspace.content.factory.ContentServiceFactory;
|
||||
@@ -40,7 +41,6 @@ import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.factory.CoreServiceFactory;
|
||||
import org.dspace.handle.factory.HandleServiceFactory;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.jdom.Document;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.Namespace;
|
||||
|
@@ -28,9 +28,9 @@ import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.content.DCPersonName;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
@@ -25,11 +25,11 @@ import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.OrcidRestConnector;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.external.provider.orcid.xml.XMLtoBio;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.json.JSONObject;
|
||||
import org.orcid.jaxb.model.common_v2.OrcidId;
|
||||
import org.orcid.jaxb.model.record_v2.Person;
|
||||
|
@@ -30,9 +30,9 @@ import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.sherpa.SHERPAJournal;
|
||||
import org.dspace.app.sherpa.SHERPAResponse;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
|
||||
/**
|
||||
* This class is the implementation of the ExternalDataProvider interface that will deal with SherpaJournal External
|
||||
|
@@ -24,9 +24,9 @@ import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.sherpa.SHERPAPublisher;
|
||||
import org.dspace.app.sherpa.SHERPAResponse;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
|
||||
/**
|
||||
* This class is the implementation of the ExternalDataProvider interface that will deal with SherpaPublisher External
|
||||
|
@@ -15,9 +15,9 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
|
||||
public class MockDataProvider implements ExternalDataProvider {
|
||||
|
||||
|
@@ -8,6 +8,7 @@
|
||||
package org.dspace.app.rest.converter;
|
||||
|
||||
import org.dspace.app.rest.model.ExternalSourceEntryRest;
|
||||
import org.dspace.app.rest.projection.Projection;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -21,20 +22,18 @@ public class ExternalSourceEntryRestConverter implements DSpaceConverter<Externa
|
||||
@Autowired
|
||||
private MetadataValueDTOListConverter metadataConverter;
|
||||
|
||||
@Override
|
||||
public ExternalSourceEntryRest fromModel(ExternalDataObject externalDataObject) {
|
||||
public ExternalSourceEntryRest convert(ExternalDataObject modelObject, Projection projection) {
|
||||
ExternalSourceEntryRest externalSourceEntryRest = new ExternalSourceEntryRest();
|
||||
externalSourceEntryRest.setId(externalDataObject.getId());
|
||||
externalSourceEntryRest.setExternalSource(externalDataObject.getSource());
|
||||
externalSourceEntryRest.setDisplay(externalDataObject.getDisplayValue());
|
||||
externalSourceEntryRest.setValue(externalDataObject.getValue());
|
||||
externalSourceEntryRest.setExternalSource(externalDataObject.getSource());
|
||||
externalSourceEntryRest.setMetadata(metadataConverter.convert(externalDataObject.getMetadata()));
|
||||
externalSourceEntryRest.setId(modelObject.getId());
|
||||
externalSourceEntryRest.setExternalSource(modelObject.getSource());
|
||||
externalSourceEntryRest.setDisplay(modelObject.getDisplayValue());
|
||||
externalSourceEntryRest.setValue(modelObject.getValue());
|
||||
externalSourceEntryRest.setExternalSource(modelObject.getSource());
|
||||
externalSourceEntryRest.setMetadata(metadataConverter.convert(modelObject.getMetadata()));
|
||||
return externalSourceEntryRest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalDataObject toModel(ExternalSourceEntryRest obj) {
|
||||
return null;
|
||||
public Class<ExternalDataObject> getModelClass() {
|
||||
return ExternalDataObject.class;
|
||||
}
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@
|
||||
package org.dspace.app.rest.converter;
|
||||
|
||||
import org.dspace.app.rest.model.ExternalSourceRest;
|
||||
import org.dspace.app.rest.projection.Projection;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -17,17 +18,15 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class ExternalSourceRestConverter implements DSpaceConverter<ExternalDataProvider, ExternalSourceRest> {
|
||||
|
||||
@Override
|
||||
public ExternalSourceRest fromModel(ExternalDataProvider obj) {
|
||||
public ExternalSourceRest convert(ExternalDataProvider modelObject, Projection projection) {
|
||||
ExternalSourceRest externalSourceRest = new ExternalSourceRest();
|
||||
externalSourceRest.setId(obj.getSourceIdentifier());
|
||||
externalSourceRest.setName(obj.getSourceIdentifier());
|
||||
externalSourceRest.setId(modelObject.getSourceIdentifier());
|
||||
externalSourceRest.setName(modelObject.getSourceIdentifier());
|
||||
externalSourceRest.setHierarchical(false);
|
||||
return externalSourceRest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalDataProvider toModel(ExternalSourceRest obj) {
|
||||
return null;
|
||||
public Class<ExternalDataProvider> getModelClass() {
|
||||
return ExternalDataProvider.class;
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@ import org.dspace.app.rest.utils.Utils;
|
||||
*/
|
||||
@RelNameDSpaceResource(ExternalSourceRest.NAME)
|
||||
public class ExternalSourceResource extends DSpaceResource<ExternalSourceRest> {
|
||||
public ExternalSourceResource(ExternalSourceRest externalSourceRest, Utils utils, String... rels) {
|
||||
super(externalSourceRest, utils, rels);
|
||||
public ExternalSourceResource(ExternalSourceRest externalSourceRest, Utils utils) {
|
||||
super(externalSourceRest, utils);
|
||||
}
|
||||
}
|
||||
|
@@ -10,18 +10,18 @@ package org.dspace.app.rest.repository;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.dspace.app.rest.converter.ConverterService;
|
||||
import org.dspace.app.rest.converter.ExternalSourceEntryRestConverter;
|
||||
import org.dspace.app.rest.converter.ExternalSourceRestConverter;
|
||||
import org.dspace.app.rest.model.ExternalSourceEntryRest;
|
||||
import org.dspace.app.rest.model.ExternalSourceRest;
|
||||
import org.dspace.app.rest.model.hateoas.ExternalSourceResource;
|
||||
import org.dspace.app.rest.projection.Projection;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.external.service.ExternalDataService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.rest.webmvc.ResourceNotFoundException;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -42,6 +42,9 @@ public class ExternalSourceRestRepository extends DSpaceRestRepository<ExternalS
|
||||
@Autowired
|
||||
private ExternalSourceEntryRestConverter externalSourceEntryRestConverter;
|
||||
|
||||
@Autowired
|
||||
ConverterService converter;
|
||||
|
||||
/**
|
||||
* This method will retrieve one ExternalSourceEntryResource based on the ExternalSource for the given
|
||||
* externalSourceName and with the given entryId
|
||||
@@ -57,8 +60,7 @@ public class ExternalSourceRestRepository extends DSpaceRestRepository<ExternalS
|
||||
entryId);
|
||||
ExternalDataObject dataObject = externalDataObject.orElseThrow(() -> new ResourceNotFoundException(
|
||||
"Couldn't find an ExternalSource for source: " + externalSourceName + " and ID: " + entryId));
|
||||
return externalSourceEntryRestConverter.fromModel(dataObject);
|
||||
|
||||
return converter.toRest(dataObject, Projection.DEFAULT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,39 +72,36 @@ public class ExternalSourceRestRepository extends DSpaceRestRepository<ExternalS
|
||||
* @param pageable The pagination object
|
||||
* @return A paginated list of ExternalSourceEntryResource objects that comply with the params
|
||||
*/
|
||||
public Page<ExternalSourceEntryRest> getExternalSourceEntries(String externalSourceName, String query, String parent,
|
||||
Pageable pageable) {
|
||||
public Page<ExternalSourceEntryRest> getExternalSourceEntries(String externalSourceName, String query,
|
||||
String parent, Pageable pageable) {
|
||||
if (externalDataService.getExternalDataProvider(externalSourceName) == null) {
|
||||
throw new ResourceNotFoundException("The externalSource for: " + externalSourceName + " couldn't be found");
|
||||
}
|
||||
List<ExternalDataObject> externalDataObjects = externalDataService
|
||||
.searchExternalDataObjects(externalSourceName, query, pageable.getOffset(), pageable.getPageSize());
|
||||
int numberOfResults = externalDataService.getNumberOfResults(externalSourceName, query);
|
||||
Page<ExternalSourceEntryRest> page = new PageImpl(externalDataObjects, pageable, numberOfResults)
|
||||
.map(externalSourceEntryRestConverter);
|
||||
return page;
|
||||
return converter.toRestPage(externalDataObjects, pageable, numberOfResults,
|
||||
utils.obtainProjection(true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalSourceRest findOne(Context context, String externalSourceName) {
|
||||
ExternalDataProvider externalDataProvider = externalDataService.getExternalDataProvider(externalSourceName);
|
||||
if (externalDataProvider == null) {
|
||||
throw new ResourceNotFoundException("ExternalDataProvider for: " + externalSourceName + " couldn't be found");
|
||||
throw new ResourceNotFoundException("ExternalDataProvider for: " +
|
||||
externalSourceName + " couldn't be found");
|
||||
}
|
||||
return externalSourceRestConverter.fromModel(externalDataProvider);
|
||||
return converter.toRest(externalDataProvider, Projection.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ExternalSourceRest> findAll(Context context, Pageable pageable) {
|
||||
List<ExternalDataProvider> externalSources = externalDataService.getExternalDataProviders();
|
||||
Page<ExternalSourceRest> page = utils.getPage(externalSources, pageable).map(externalSourceRestConverter);
|
||||
return page; }
|
||||
return converter.toRestPage(externalSources, pageable, externalSources.size(),
|
||||
utils.obtainProjection(true));
|
||||
}
|
||||
|
||||
public Class<ExternalSourceRest> getDomainClass() {
|
||||
return ExternalSourceRest.class;
|
||||
}
|
||||
|
||||
public ExternalSourceResource wrapResource(ExternalSourceRest model, String... rels) {
|
||||
return new ExternalSourceResource(model, utils, rels);
|
||||
}
|
||||
}
|
||||
|
@@ -15,9 +15,9 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
import org.dspace.external.model.ExternalDataObject;
|
||||
import org.dspace.external.provider.ExternalDataProvider;
|
||||
import org.dspace.content.MetadataValueDTO;
|
||||
|
||||
public class MockDataProvider implements ExternalDataProvider {
|
||||
|
||||
|
Reference in New Issue
Block a user