[DS-3952] First try at writability, untested.

This commit is contained in:
Mark H. Wood
2018-08-07 15:01:20 -04:00
committed by Mark H. Wood
parent 5048105cf6
commit 0a1babdb54
3 changed files with 46 additions and 3 deletions

View File

@@ -16,6 +16,8 @@ import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
/**
* Manage queries of the Solr authority core.
*
* @author Antoine Snyers (antoine at atmire.com)
* @author Kevin Van de Velde (kevin at atmire dot com)
* @author Ben Bosman (ben at atmire dot com)
@@ -26,6 +28,13 @@ public interface AuthoritySearchService {
public QueryResponse search(SolrQuery query)
throws SolrServerException, MalformedURLException, IOException;
/**
* Retrieves all the metadata fields which are indexed in the authority control.
*
* @return names of indexed fields.
* @throws SolrServerException passed through.
* @throws MalformedURLException passed through.
*/
public List<String> getAllIndexedMetadataFields() throws Exception;
}

View File

@@ -14,14 +14,21 @@ import org.dspace.content.Item;
import org.dspace.core.Context;
/**
* Service interface class for the Metadata Authority
* The implementation of this class is responsible for all business logic calls for the Metadata Authority and is
* autowired by spring
* Service interface class for the Metadata Authority.
* The implementation of this class is responsible for all business logic calls
* for the Metadata Authority and is autowired by Spring.
*
* @author kevinvandevelde at atmire.com
*/
public interface AuthorityService {
/**
* Add an {@link Item} to the authority index.
* @param context current DSpace session.
* @param item the Item to be added.
* @throws SQLException passed through.
* @throws AuthorizeException passed through.
*/
public void indexItem(Context context, Item item) throws SQLException, AuthorizeException;
public boolean isConfigurationValid();

View File

@@ -8,15 +8,20 @@
package org.dspace.app.rest.repository;
import java.sql.SQLException;
import javax.inject.Inject;
import javax.inject.Named;
import org.dspace.app.requestitem.RequestItem;
import org.dspace.app.requestitem.service.RequestItemService;
import org.dspace.app.rest.converter.RequestItemConverter;
import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException;
import org.dspace.app.rest.model.RequestItemRest;
import org.dspace.app.rest.model.hateoas.RequestItemResource;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -28,6 +33,8 @@ import org.springframework.data.domain.Pageable;
@Named(RequestItemRest.CATEGORY + '.' + RequestItemRest.NAME)
public class RequestItemRepository
extends DSpaceRestRepository<RequestItemRest, String> {
private static final Logger LOG = LoggerFactory.getLogger(RequestItemRepository.class);
@Inject
protected RequestItemService requestItemService;
@@ -46,6 +53,26 @@ public class RequestItemRepository
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RequestItemRest save(Context context, RequestItemRest ri) {
try {
requestItemService.createRequest(context, ri.getBitstream(),
ri.getItem(), ri.isAllfiles(), ri.getReqEmail(),
ri.getReqName(), ri.getReqMessage());
} catch (SQLException ex) {
LOG.error("New RequestItem not saved.", ex);
// TODO how to inform caller that request was not saved?
}
return ri;
}
// NOTICE: there is no service method for this -- requests are never deleted?
@Override
public void delete(Context context, String token)
throws AuthorizeException, RepositoryMethodNotImplementedException {
throw new RepositoryMethodNotImplementedException("RequestItemRest", "delete");
}
@Override
public Class<RequestItemRest> getDomainClass() {
return RequestItemRest.class;