diff --git a/apps/dnet-exporter-api/pom.xml b/apps/dnet-exporter-api/pom.xml index b365bded..72ebd904 100644 --- a/apps/dnet-exporter-api/pom.xml +++ b/apps/dnet-exporter-api/pom.xml @@ -125,12 +125,11 @@ 3.4.2 - org.springframework.boot diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/AbstractExporterController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/AbstractExporterController.java index 026fbe4f..486ee096 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/AbstractExporterController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/AbstractExporterController.java @@ -16,9 +16,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; -import eu.dnetlib.openaire.exporter.exceptions.DsmForbiddenException; -import eu.dnetlib.openaire.exporter.exceptions.DsmNotFoundException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; import eu.dnetlib.openaire.exporter.model.dsm.Response; /** @@ -30,29 +28,13 @@ public abstract class AbstractExporterController { @ResponseBody @ExceptionHandler({ - DsmException.class + DsmApiException.class }) @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) public ErrorMessage handleDSMException(final Exception e) { return _handleError(e); } - @ResponseBody - @ExceptionHandler(DsmForbiddenException.class) - @ResponseStatus(value = HttpStatus.FORBIDDEN) - public ErrorMessage handleForbiddenException(final Exception e) { - return _handleError(e); - } - - @ResponseBody - @ExceptionHandler({ - DsmNotFoundException.class - }) - @ResponseStatus(value = HttpStatus.NOT_FOUND) - public ErrorMessage handleNotFoundException(final Exception e) { - return _handleError(e); - } - @ResponseBody @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java index 3ed78e44..b4b279a3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java @@ -5,14 +5,13 @@ import java.util.List; import java.util.Map; import eu.dnetlib.openaire.dsm.dao.utils.IndexDsInfo; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; import eu.dnetlib.openaire.exporter.model.context.Context; public interface ISClient { - IndexDsInfo calculateCurrentIndexDsInfo() throws DsmException; + IndexDsInfo calculateCurrentIndexDsInfo() throws Exception; - String getObjectStoreId(String dsId) throws DsmException; + String getObjectStoreId(String dsId) throws Exception; Map getFunderContextMap() throws IOException; diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java index 4a0c628a..4636bdd8 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java @@ -28,12 +28,12 @@ import com.google.common.escape.Escaper; import com.google.common.xml.XmlEscapers; import eu.dnetlib.DnetOpenaireExporterProperties; +import eu.dnetlib.enabling.datasources.common.DsmException; +import eu.dnetlib.enabling.datasources.common.DsmRuntimeException; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; import eu.dnetlib.openaire.context.ContextMappingUtils; import eu.dnetlib.openaire.dsm.dao.utils.IndexDsInfo; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; -import eu.dnetlib.openaire.exporter.exceptions.DsmRuntimeException; import eu.dnetlib.openaire.exporter.model.context.Context; /** @@ -52,7 +52,7 @@ public class ISClientImpl implements ISClient { @Override @Cacheable("indexdsinfo-cache") - public IndexDsInfo calculateCurrentIndexDsInfo() throws DsmException { + public IndexDsInfo calculateCurrentIndexDsInfo() throws Exception { log.warn("calculateCurrentIndexDsInfo(): not using cache"); final String[] arr; try { @@ -67,7 +67,7 @@ public class ISClientImpl implements ISClient { @Override @Cacheable("objectstoreid-cache") - public String getObjectStoreId(final String dsId) throws DsmException { + public String getObjectStoreId(final String dsId) throws Exception { log.warn(String.format("getObjectStoreId(%s): not using cache", dsId)); try { final String xqueryTemplate = _getQuery(config.getFindObjectStore()); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiController.java index b62f49e0..2c98a229 100755 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiController.java @@ -26,21 +26,19 @@ import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.openaire.common.AbstractExporterController; import eu.dnetlib.openaire.common.OperationManager; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsWithApis; -import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse; -import eu.dnetlib.openaire.dsm.domain.RegisteredDatasourceInfo; -import eu.dnetlib.openaire.dsm.domain.RequestSort; -import eu.dnetlib.openaire.dsm.domain.RequestSortOrder; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; -import eu.dnetlib.openaire.exporter.exceptions.DsmForbiddenException; -import eu.dnetlib.openaire.exporter.exceptions.DsmNotFoundException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; import eu.dnetlib.openaire.exporter.model.dsm.AggregationHistoryResponseV1; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetails; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetailsResponse; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailResponse; import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailsUpdate; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailsWithApis; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceSnippetResponse; +import eu.dnetlib.openaire.exporter.model.dsm.RegisteredDatasourceInfo; import eu.dnetlib.openaire.exporter.model.dsm.RequestFilter; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSort; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSortOrder; import eu.dnetlib.openaire.exporter.model.dsm.SimpleResponse; import eu.dnetlib.openaire.exporter.model.vocabularies.Country; import io.swagger.v3.oas.annotations.Operation; @@ -69,7 +67,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public List listCountries() throws DsmException { + public List listCountries() throws DsmApiException { return dsmCore.listCountries(); } @@ -88,7 +86,7 @@ public class DsmApiController extends AbstractExporterController { @RequestParam final RequestSortOrder order, @RequestBody final RequestFilter requestFilter, @PathVariable final int page, - @PathVariable final int size) throws DsmException { + @PathVariable final int size) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final DatasourceDetailResponse rsp = dsmCore.searchDsDetails(requestSortBy, order, requestFilter, page, size); return prepareResponse(page, size, stop, rsp); @@ -104,7 +102,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public AggregationHistoryResponseV1 aggregationHistory(@PathVariable final String dsId) throws DsmException { + public AggregationHistoryResponseV1 aggregationHistory(@PathVariable final String dsId) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final AggregationHistoryResponseV1 rsp = dsmCore.aggregationhistoryV1(dsId); return prepareResponse(0, rsp.getAggregationInfo().size(), stop, rsp); @@ -125,7 +123,7 @@ public class DsmApiController extends AbstractExporterController { @RequestParam final RequestSortOrder order, @RequestBody final RequestFilter requestFilter, @PathVariable final int page, - @PathVariable final int size) throws DsmException { + @PathVariable final int size) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final DatasourceSnippetResponse rsp = dsmCore.searchSnippet(requestSortBy, order, requestFilter, page, size); return prepareResponse(page, size, stop, rsp); @@ -147,7 +145,7 @@ public class DsmApiController extends AbstractExporterController { @RequestParam final RequestSortOrder order, @RequestBody final RequestFilter requestFilter, @PathVariable final int page, - @PathVariable final int size) throws DsmException { + @PathVariable final int size) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final DatasourceSnippetResponse rsp = dsmCore.searchRegistered(requestSortBy, order, requestFilter, page, size); return prepareResponse(page, size, stop, rsp); @@ -198,7 +196,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "500", description = "unexpected error") }) public ApiDetailsResponse getApi( - @PathVariable final String dsId) throws DsmException { + @PathVariable final String dsId) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final ApiDetailsResponse rsp = dsmCore.getApis(dsId); @@ -218,7 +216,7 @@ public class DsmApiController extends AbstractExporterController { public List searchBaseUrls( @RequestBody final RequestFilter requestFilter, @PathVariable final int page, - @PathVariable final int size) throws DsmException { + @PathVariable final int size) throws DsmApiException { return dsmCore.findBaseURLs(requestFilter, page, size); } @@ -233,7 +231,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "403", description = "Api not removable"), @ApiResponse(responseCode = "500", description = "DSM Server error") }) - public void deleteApi(@PathVariable final String apiId) throws DsmForbiddenException, DsmNotFoundException { + public void deleteApi(@PathVariable final String apiId) throws DsmApiException { dsmCore.deleteApi(apiId); } @@ -247,7 +245,7 @@ public class DsmApiController extends AbstractExporterController { }) public void setManaged( @RequestParam final String id, - @RequestParam final boolean managed) throws DsmException { + @RequestParam final boolean managed) throws DsmApiException { dsmCore.setManaged(id, managed); } @@ -260,7 +258,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public boolean isManaged(@PathVariable final String id) throws DsmException { + public boolean isManaged(@PathVariable final String id) throws DsmApiException { return dsmCore.isManaged(id); } @@ -273,10 +271,10 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "400", description = "Malformed request"), @ApiResponse(responseCode = "500", description = "Unexpected error") }) - public void saveDs(@Valid @RequestBody final DatasourceDetails datasource) throws DsmException { + public void saveDs(@Valid @RequestBody final DatasourceDetails datasource) throws DsmApiException { if (dsmCore.exist(datasource)) { // TODO further check that the DS doesn't have any API - throw new DsmException(HttpStatus.SC_CONFLICT, String.format("cannot register, datasource already defined '%s'", datasource.getId())); + throw new DsmApiException(HttpStatus.SC_CONFLICT, String.format("cannot register, datasource already defined '%s'", datasource.getId())); } dsmCore.save(datasource); } @@ -290,10 +288,10 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "400", description = "Malformed request"), @ApiResponse(responseCode = "500", description = "Unexpected error") }) - public void saveDsWithApis(@Valid @RequestBody final DatasourceDetailsWithApis d) throws DsmException { - if (d.getDatasource() == null) { throw new DsmException(HttpStatus.SC_BAD_REQUEST, "Datasource field is null"); } + public void saveDsWithApis(@Valid @RequestBody final DatasourceDetailsWithApis d) throws DsmApiException { + if (d.getDatasource() == null) { throw new DsmApiException(HttpStatus.SC_BAD_REQUEST, "Datasource field is null"); } if (dsmCore.exist(d.getDatasource())) { // TODO further check that the DS doesn't have any API - throw new DsmException(HttpStatus.SC_CONFLICT, String.format("cannot register, datasource already defined '%s'", d.getDatasource().getId())); + throw new DsmApiException(HttpStatus.SC_CONFLICT, String.format("cannot register, datasource already defined '%s'", d.getDatasource().getId())); } dsmCore.save(d); } @@ -307,7 +305,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "500", description = "unexpected error") }) public void updateDatasource( - @RequestBody final DatasourceDetailsUpdate ds) throws DsmException, DsmNotFoundException { + @RequestBody final DatasourceDetailsUpdate ds) throws DsmApiException { dsmCore.updateDatasource(ds); } @@ -323,7 +321,7 @@ public class DsmApiController extends AbstractExporterController { public void updateBaseUrl( @RequestParam final String dsId, @RequestParam final String apiId, - @RequestParam final String baseUrl) throws DsmException { + @RequestParam final String baseUrl) throws DsmApiException { dsmCore.updateApiBaseurl(dsId, apiId, baseUrl); } @@ -340,7 +338,7 @@ public class DsmApiController extends AbstractExporterController { @RequestParam final String dsId, @RequestParam final String apiId, @RequestParam final String compliance, - @RequestParam(required = false, defaultValue = "false") final boolean override) throws DsmException { + @RequestParam(required = false, defaultValue = "false") final boolean override) throws DsmApiException { dsmCore.updateApiCompatibility(dsId, apiId, compliance, override); } @@ -356,7 +354,7 @@ public class DsmApiController extends AbstractExporterController { public void updateOaiSetl( @RequestParam final String dsId, @RequestParam final String apiId, - @RequestParam final String oaiSet) throws DsmException { + @RequestParam final String oaiSet) throws DsmApiException { dsmCore.updateApiOaiSet(dsId, apiId, oaiSet); } @@ -369,8 +367,8 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public void addApi(@RequestBody final ApiDetails api) throws DsmException { - if (StringUtils.isBlank(api.getDatasource())) { throw new DsmException(HttpStatus.SC_BAD_REQUEST, "missing datasource id"); } + public void addApi(@RequestBody final ApiDetails api) throws DsmApiException { + if (StringUtils.isBlank(api.getDatasource())) { throw new DsmApiException(HttpStatus.SC_BAD_REQUEST, "missing datasource id"); } dsmCore.addApi(api); } @@ -387,7 +385,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public int getOps() throws DsmException { + public int getOps() throws DsmApiException { return operationManager.getOpSize(); } @@ -399,7 +397,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public int killOps() throws DsmException { + public int killOps() throws DsmApiException { return operationManager.dropAll(); } @@ -411,7 +409,7 @@ public class DsmApiController extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public void dropCache() throws DsmException { + public void dropCache() throws DsmApiException { dsmCore.dropCaches(); } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiControllerV2.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiControllerV2.java index 68107164..2f250a3c 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiControllerV2.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmApiControllerV2.java @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.openaire.common.AbstractExporterController; import eu.dnetlib.openaire.dsm.dao.ResponseUtils; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; import eu.dnetlib.openaire.exporter.model.dsm.AggregationHistoryResponseV2; import eu.dnetlib.openaire.exporter.model.dsm.SimpleDatasourceInfo; import eu.dnetlib.openaire.exporter.model.dsm.SimpleResponse; @@ -95,7 +95,7 @@ public class DsmApiControllerV2 extends AbstractExporterController { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "500", description = "unexpected error") }) - public AggregationHistoryResponseV2 aggregationHistory(@PathVariable final String dsId) throws DsmException { + public AggregationHistoryResponseV2 aggregationHistory(@PathVariable final String dsId) throws DsmApiException { final StopWatch stop = StopWatch.createStarted(); final AggregationHistoryResponseV2 rsp = dsmCore.aggregationhistoryV2(dsId); return prepareResponse(0, rsp.getAggregationInfo().size(), stop, rsp); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmCore.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmCore.java index 68681b23..c3ba1a8b 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmCore.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/DsmCore.java @@ -9,6 +9,7 @@ import java.nio.charset.Charset; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -29,37 +30,42 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; +import com.google.common.collect.Lists; + +import eu.dnetlib.enabling.datasources.common.DsmException; +import eu.dnetlib.enabling.datasources.common.DsmForbiddenException; +import eu.dnetlib.enabling.datasources.common.DsmNotFoundException; import eu.dnetlib.openaire.common.ISClient; import eu.dnetlib.openaire.community.CommunityClient; +import eu.dnetlib.openaire.dsm.dao.CountryTermRepository; import eu.dnetlib.openaire.dsm.dao.DatasourceDao; import eu.dnetlib.openaire.dsm.dao.MongoLoggerClient; import eu.dnetlib.openaire.dsm.dao.ResponseUtils; import eu.dnetlib.openaire.dsm.dao.VocabularyClient; import eu.dnetlib.openaire.dsm.dao.utils.DsmMappingUtils; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsWithApis; -import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse; -import eu.dnetlib.openaire.dsm.domain.RegisteredDatasourceInfo; -import eu.dnetlib.openaire.dsm.domain.RequestSort; -import eu.dnetlib.openaire.dsm.domain.RequestSortOrder; import eu.dnetlib.openaire.dsm.domain.db.ApiDbEntry; import eu.dnetlib.openaire.dsm.domain.db.DatasourceDbEntry; import eu.dnetlib.openaire.dsm.domain.db.IdentityDbEntry; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; -import eu.dnetlib.openaire.exporter.exceptions.DsmForbiddenException; -import eu.dnetlib.openaire.exporter.exceptions.DsmNotFoundException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; import eu.dnetlib.openaire.exporter.model.dsm.AggregationHistoryResponseV1; import eu.dnetlib.openaire.exporter.model.dsm.AggregationHistoryResponseV2; import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfo; import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfoV1; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetails; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetailsResponse; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailResponse; import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailsUpdate; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailsWithApis; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceSnippetResponse; +import eu.dnetlib.openaire.exporter.model.dsm.RegisteredDatasourceInfo; import eu.dnetlib.openaire.exporter.model.dsm.RequestFilter; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSort; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSortOrder; import eu.dnetlib.openaire.exporter.model.dsm.SimpleDatasourceInfo; import eu.dnetlib.openaire.exporter.model.dsm.SimpleResponse; import eu.dnetlib.openaire.exporter.model.vocabularies.Country; +import eu.dnetlib.openaire.exporter.model.vocabularies.Vocabulary; @Component @ConditionalOnProperty(value = "openaire.exporter.enable.dsm", havingValue = "true") @@ -79,19 +85,24 @@ public class DsmCore { @Autowired private DatasourceDao dsDao; + @Autowired + private CountryTermRepository countryTermRepository; + @Autowired private JdbcTemplate jdbcTemplate; @Autowired private CommunityClient communityClient; - public List listCountries() throws DsmException { - try { - return dsDao.listCountries(); - } catch (final Throwable e) { - log.error("error listing countries", e); - throw e; - } + public List listCountries() throws DsmApiException { + final List countries = Lists.newArrayList(); + final Vocabulary v = vocabularyClient.getCountries(); + countries.addAll(countryTermRepository.findAll() + .stream() + .filter(Objects::nonNull) + .map(t -> new Country(t.getTerm(), v.getEnglishName(t.getTerm()))) + .collect(Collectors.toList())); + return countries; } public DatasourceDetailResponse searchDsDetails(final RequestSort requestSortBy, @@ -99,14 +110,14 @@ public class DsmCore { final RequestFilter requestFilter, final int page, final int size) - throws DsmException { + throws DsmApiException { try { final Page dsPage = dsDao.search(requestSortBy, order, requestFilter, page, size); return ResponseUtils.detailsResponse(dsPage.map(d -> asDetails(d)).getContent(), dsPage.getTotalElements()); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error("error searching datasources", e); - throw e; + throw new DsmApiException(e.getCode(), "error searching datasources", e); } } @@ -115,13 +126,13 @@ public class DsmCore { final RequestFilter requestFilter, final int page, final int size) - throws DsmException { + throws DsmApiException { try { final Page dsPage = dsDao.search(requestSortBy, order, requestFilter, page, size); return ResponseUtils.snippetResponse(dsPage.map(DsmMappingUtils::asSnippetExtended).getContent(), dsPage.getTotalElements()); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error("error searching datasources", e); - throw e; + throw new DsmApiException(e.getCode(), "error searching datasources", e); } } @@ -130,26 +141,26 @@ public class DsmCore { final RequestFilter requestFilter, final int page, final int size) - throws DsmException { + throws DsmApiException { try { final Page dsPage = dsDao.searchRegistered(requestSortBy, order, requestFilter, page, size); return ResponseUtils.snippetResponse(dsPage.map(DsmMappingUtils::asSnippetExtended).getContent(), dsPage.getTotalElements()); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error("error searching datasources", e); - throw e; + throw new DsmApiException(e.getCode(), "error searching datasources", e); } } - public List findBaseURLs(final RequestFilter requestFilter, final int page, final int size) throws DsmException { + public List findBaseURLs(final RequestFilter requestFilter, final int page, final int size) throws DsmApiException { try { return dsDao.findApiBaseURLs(requestFilter, page, size); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error("error searching datasource base urls", e); - throw e; + throw new DsmApiException(e.getCode(), "error searching datasource base urls", e); } } - public ApiDetailsResponse getApis(final String dsId) throws DsmException { + public ApiDetailsResponse getApis(final String dsId) throws DsmApiException { try { final DatasourceDbEntry ds = dsDao.getDs(dsId); final List apis = dsDao.getApis(dsId); @@ -159,37 +170,49 @@ public class DsmCore { .map(a -> a.setTypology(ds.getTypology())) .collect(Collectors.toList()); return ResponseUtils.apiResponse(api, api.size()); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error(String.format("error searching datasource api %s", dsId), e); - throw e; + throw new DsmApiException(e.getCode(), String.format("error searching datasource api %s", dsId), e); } } - public void setManaged(final String dsId, final boolean managed) throws DsmException { + public void setManaged(final String dsId, final boolean managed) throws DsmApiException { log.info(String.format("updated ds '%s' managed with '%s'", dsId, managed)); - dsDao.setManaged(dsId, managed); + try { + dsDao.setManaged(dsId, managed); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public boolean isManaged(final String dsId) throws DsmException { - return dsDao.isManaged(dsId); + public boolean isManaged(final String dsId) throws DsmApiException { + try { + return dsDao.isManaged(dsId); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public boolean exist(final DatasourceDetails d) throws DsmException { - return dsDao.existDs(d.getId()); + public boolean exist(final DatasourceDetails d) throws DsmApiException { + try { + return dsDao.existDs(d.getId()); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public void save(final DatasourceDetails d) throws DsmException { + public void save(final DatasourceDetails d) throws DsmApiException { try { dsDao.saveDs(asDbEntry(d)); log.info("DS saved, " + d.getId()); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error(ExceptionUtils.getStackTrace(e)); - throw e; + throw new DsmApiException(e.getCode(), e.getMessage(), e); } } @Transactional - public void save(final DatasourceDetailsWithApis d) throws DsmException { + public void save(final DatasourceDetailsWithApis d) throws DsmApiException { try { dsDao.saveDs(asDbEntry(d.getDatasource())); final List apis = d.getApis(); @@ -199,15 +222,13 @@ public class DsmCore { addApi(api); } } - } catch ( - - final Throwable e) { + } catch (final DsmException e) { log.error(ExceptionUtils.getStackTrace(e)); - throw e; + throw new DsmApiException(e.getCode(), e.getMessage(), e); } } - public void updateDatasource(final DatasourceDetailsUpdate d) throws DsmException, DsmNotFoundException { + public void updateDatasource(final DatasourceDetailsUpdate d) throws DsmApiException { try { // initialize with current values from DB final DatasourceDbEntry ds = dsDao.getDs(d.getId()); @@ -228,46 +249,72 @@ public class DsmCore { } dsDao.saveDs(ds); - } catch (final Throwable e) { + } catch (final DsmException e) { log.error(ExceptionUtils.getStackTrace(e)); - throw e; + throw new DsmApiException(e.getCode(), e.getMessage(), e); } } // TODO remove if unused - public void deleteDs(final String dsId) throws DsmException { + public void deleteDs(final String dsId) throws DsmApiException { log.info(String.format("deleted datasource '%s'", dsId)); - dsDao.deleteDs(dsId); + try { + dsDao.deleteDs(dsId); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } // API - public void updateApiOaiSet(final String dsId, final String apiId, final String oaiSet) throws DsmException { - dsDao.upsertApiOaiSet(apiId, oaiSet); + public void updateApiOaiSet(final String dsId, final String apiId, final String oaiSet) throws DsmApiException { + try { + dsDao.upsertApiOaiSet(apiId, oaiSet); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public void updateApiBaseurl(final String dsId, final String apiId, final String baseUrl) throws DsmException { + public void updateApiBaseurl(final String dsId, final String apiId, final String baseUrl) throws DsmApiException { log.info(String.format("updated api '%s' baseurl with '%s'", apiId, baseUrl)); - dsDao.updateApiBaseUrl(apiId, baseUrl); + try { + dsDao.updateApiBaseUrl(apiId, baseUrl); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public void updateApiCompatibility(final String dsId, final String apiId, final String compliance, final boolean override) throws DsmException { + public void updateApiCompatibility(final String dsId, final String apiId, final String compliance, final boolean override) throws DsmApiException { log.info(String.format("updated api '%s' compliance with '%s'", apiId, compliance)); - dsDao.updateCompliance(null, apiId, compliance, override); + try { + dsDao.updateCompliance(null, apiId, compliance, override); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public void addApi(final ApiDetails api) throws DsmException { + public void addApi(final ApiDetails api) throws DsmApiException { if (StringUtils.isBlank(api.getId())) { api.setId(createId(api)); log.info(String.format("missing api id, created '%s'", api.getId())); } - dsDao.addApi(asDbEntry(api)); - log.info("API saved, id: " + api.getId()); + try { + dsDao.addApi(asDbEntry(api)); + log.info("API saved, id: " + api.getId()); + } catch (final DsmException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } - public void deleteApi(final String apiId) throws DsmForbiddenException, DsmNotFoundException { + public void deleteApi(final String apiId) throws DsmApiException { // TODO handle the api removal in case of associated workflows. - dsDao.deleteApi(null, apiId); + try { + dsDao.deleteApi(null, apiId); + } catch (final DsmForbiddenException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } catch (final DsmNotFoundException e) { + throw new DsmApiException(e.getCode(), e.getMessage(), e); + } } public void dropCaches() { @@ -316,14 +363,14 @@ public class DsmCore { } @Deprecated - public AggregationHistoryResponseV1 aggregationhistoryV1(final String dsId) throws DsmException { + public AggregationHistoryResponseV1 aggregationhistoryV1(final String dsId) throws DsmApiException { final List history = mongoLoggerClient.getAggregationHistoryV1(dsId); final AggregationHistoryResponseV1 rsp = new AggregationHistoryResponseV1(history); rsp.setHeader(ResponseUtils.header(history.size())); return rsp; } - public AggregationHistoryResponseV2 aggregationhistoryV2(final String dsId) throws DsmException { + public AggregationHistoryResponseV2 aggregationhistoryV2(final String dsId) throws DsmApiException { final List history = mongoLoggerClient.getAggregationHistoryV2(dsId); final AggregationHistoryResponseV2 rsp = new AggregationHistoryResponseV2(history); rsp.setHeader(ResponseUtils.header(history.size())); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceDao.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceDao.java index 7ef08195..a0f2dce3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceDao.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceDao.java @@ -5,18 +5,17 @@ import java.util.List; import org.springframework.data.domain.Page; import eu.dnetlib.enabling.datasources.common.Api; -import eu.dnetlib.openaire.dsm.domain.RequestSort; -import eu.dnetlib.openaire.dsm.domain.RequestSortOrder; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.enabling.datasources.common.Datasource; +import eu.dnetlib.enabling.datasources.common.DatasourceManagerCommon; +import eu.dnetlib.enabling.datasources.common.DsmException; import eu.dnetlib.openaire.exporter.model.dsm.RequestFilter; -import eu.dnetlib.openaire.exporter.model.vocabularies.Country; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSort; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSortOrder; public interface DatasourceDao, API extends Api> extends DatasourceManagerCommon { // DATASOURCE - List listCountries() throws DsmException; - boolean existDs(final String dsId) throws DsmException; Page search(RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, int page, int size) throws DsmException; @@ -53,6 +52,4 @@ public interface DatasourceDao, API extends Api listCountries() throws DsmException { - final List countries = Lists.newArrayList(); - final Vocabulary v = vocabularyClient.getCountries(); - countries.addAll(countryTermRepository.findAll() - .stream() - .filter(Objects::nonNull) - .map(t -> new Country(t.getTerm(), v.getEnglishName(t.getTerm()))) - .collect(Collectors.toList())); - return countries; - } + // @Autowired + // private VocabularyClient vocabularyClient; @Override public Page search(final RequestSort requestSortBy, @@ -239,13 +221,11 @@ public class DatasourceDaoImpl implements DatasourceDao errors) throws DsmException; + IndexRecordsInfo getIndexInfo(final String dsId, final IndexDsInfo info, final Queue errors) throws DsmApiException; - String getLastIndexingDate(final IndexDsInfo info) throws DsmException; + String getLastIndexingDate(final IndexDsInfo info) throws DsmApiException; } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceIndexClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceIndexClientImpl.java index 01cc9245..aca12611 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceIndexClientImpl.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceIndexClientImpl.java @@ -38,11 +38,12 @@ import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import eu.dnetlib.DnetOpenaireExporterProperties; +import eu.dnetlib.enabling.datasources.common.DsmException; import eu.dnetlib.miscutils.functional.hash.Hashing; import eu.dnetlib.openaire.dsm.dao.utils.DsmMappingUtils; import eu.dnetlib.openaire.dsm.dao.utils.IndexDsInfo; import eu.dnetlib.openaire.dsm.dao.utils.IndexRecordsInfo; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; /** * Created by claudio on 20/10/2016. @@ -81,7 +82,7 @@ public class DatasourceIndexClientImpl implements DatasourceIndexClient { } @Override - public IndexRecordsInfo getIndexInfo(final String dsId, final IndexDsInfo info, final Queue errors) throws DsmException { + public IndexRecordsInfo getIndexInfo(final String dsId, final IndexDsInfo info, final Queue errors) throws DsmApiException { try { final String collectedFrom = StringUtils.substringBefore(dsId, SEPARATOR) + SEPARATOR + Hashing.md5(StringUtils.substringAfter(dsId, SEPARATOR)); final CloudSolrClient indexClient = getIndexClient(info); @@ -123,12 +124,12 @@ public class DatasourceIndexClientImpl implements DatasourceIndexClient { waitLatch(latch, errors, config.getRequestTimeout()); return indexRecordInfo; } catch (final Throwable e) { - throw new DsmException(HttpStatus.INTERNAL_SERVER_ERROR.value(), String.format("error reading index info", dsId), e); + throw new DsmApiException(HttpStatus.INTERNAL_SERVER_ERROR.value(), String.format("error reading index info", dsId), e); } } @Override - public String getLastIndexingDate(final IndexDsInfo info) throws DsmException { + public String getLastIndexingDate(final IndexDsInfo info) throws DsmApiException { try { final SolrQuery query = new SolrQuery("oaftype:datasource").setRows(1); final QueryResponse rsp = getIndexClient(info).query(query); @@ -136,7 +137,7 @@ public class DatasourceIndexClientImpl implements DatasourceIndexClient { final String dsversion = doc.get("__dsversion").toString(); return StringUtils.substringBefore(dsversion, "T"); } catch (SolrServerException | IOException e) { - throw new DsmException(HttpStatus.INTERNAL_SERVER_ERROR.value(), "Error querying index DS profile: " + info, e); + throw new DsmApiException(HttpStatus.INTERNAL_SERVER_ERROR.value(), "Error querying index DS profile: " + info, e); } } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceSpecs.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceSpecs.java index 13a7e13d..7d4e8819 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceSpecs.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/DatasourceSpecs.java @@ -16,13 +16,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.data.jpa.domain.Specification; -import eu.dnetlib.openaire.dsm.domain.RequestSort; -import eu.dnetlib.openaire.dsm.domain.RequestSortOrder; +import eu.dnetlib.enabling.datasources.common.DsmRuntimeException; import eu.dnetlib.openaire.dsm.domain.db.DatasourceApiDbEntry; import eu.dnetlib.openaire.dsm.domain.db.DatasourceDbEntry; -import eu.dnetlib.openaire.exporter.exceptions.DsmRuntimeException; import eu.dnetlib.openaire.exporter.model.dsm.FilterName; import eu.dnetlib.openaire.exporter.model.dsm.RequestFilter; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSort; +import eu.dnetlib.openaire.exporter.model.dsm.RequestSortOrder; public class DatasourceSpecs { diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClient.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClient.java index 59d773ce..9553f7d6 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClient.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClient.java @@ -2,14 +2,15 @@ package eu.dnetlib.openaire.dsm.dao; import java.util.List; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; +import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfo; import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfoV1; public interface MongoLoggerClient { - List getAggregationHistoryV1(final String dsId) throws DsmException; + List getAggregationHistoryV1(final String dsId) throws DsmApiException; - List getAggregationHistoryV2(final String dsId) throws DsmException; + List getAggregationHistoryV2(final String dsId) throws DsmApiException; void dropCache(); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClientImpl.java index a176be01..3e3be8f2 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClientImpl.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/MongoLoggerClientImpl.java @@ -41,13 +41,13 @@ import com.mongodb.client.MongoCollection; import eu.dnetlib.DnetOpenaireExporterProperties; import eu.dnetlib.DnetOpenaireExporterProperties.Datasource; -import eu.dnetlib.enabling.datasources.common.AggregationInfo; -import eu.dnetlib.enabling.datasources.common.AggregationStage; import eu.dnetlib.miscutils.datetime.DateUtils; import eu.dnetlib.openaire.common.Utils; import eu.dnetlib.openaire.dsm.dao.utils.DsmMappingUtils; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; +import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfo; import eu.dnetlib.openaire.exporter.model.dsm.AggregationInfoV1; +import eu.dnetlib.openaire.exporter.model.dsm.AggregationStage; import eu.dnetlib.openaire.exporter.model.dsm.CollectionInfoV1; import eu.dnetlib.openaire.exporter.model.dsm.CollectionInfoV2; import eu.dnetlib.openaire.exporter.model.dsm.CollectionMode; @@ -93,19 +93,19 @@ public class MongoLoggerClientImpl implements MongoLoggerClient { @Override @Cacheable("dsm-aggregationhistory-cache-v1") @Deprecated - public List getAggregationHistoryV1(final String dsId) throws DsmException { + public List getAggregationHistoryV1(final String dsId) throws DsmApiException { return getAggregationHistory(dsId, queryForAggregationHistoryV1(dsId, "(collect|transform)"), getMapperV1()); } @Override @Cacheable("dsm-aggregationhistory-cache-v2") - public List getAggregationHistoryV2(final String dsId) throws DsmException { + public List getAggregationHistoryV2(final String dsId) throws DsmApiException { return getAggregationHistory(dsId, queryForAggregationHistoryV2(dsId, "(collect|transform)"), getMapperV2()); } private List getAggregationHistory(final String dsId, final Bson queryForAggregationHistory, - final Function mapper) throws DsmException { + final Function mapper) throws DsmApiException { log.warn(String.format("getAggregationHistory(dsId = %s): not using cache", dsId)); final Datasource conf = config.getDatasource(); try { @@ -132,7 +132,7 @@ public class MongoLoggerClientImpl implements MongoLoggerClient { return aggregationInfos; } catch (final Throwable e) { - throw new DsmException(HttpStatus.SC_INTERNAL_SERVER_ERROR, String.format("error reading aggregation history for '%s'", dsId), e); + throw new DsmApiException(HttpStatus.SC_INTERNAL_SERVER_ERROR, String.format("error reading aggregation history for '%s'", dsId), e); } } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClient.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClient.java index 76f11741..510418a7 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClient.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClient.java @@ -1,9 +1,9 @@ package eu.dnetlib.openaire.dsm.dao; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; public interface ObjectStoreClient { - Long getObjectStoreSize(final String objectStoreId) throws DsmException; + Long getObjectStoreSize(final String objectStoreId) throws DsmApiException; } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClientImpl.java index d3f77dca..c6950d6e 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClientImpl.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ObjectStoreClientImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.data.objectstore.rmi.ObjectStoreService; import eu.dnetlib.data.objectstore.rmi.ObjectStoreServiceException; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; @Component @ConditionalOnProperty(value = "openaire.exporter.enable.dsm", havingValue = "true") @@ -21,7 +21,7 @@ public class ObjectStoreClientImpl implements ObjectStoreClient { private ObjectStoreService objectStoreService; @Override - public Long getObjectStoreSize(final String objectStoreId) throws DsmException { + public Long getObjectStoreSize(final String objectStoreId) throws DsmApiException { log.debug("get size for objectStore " + objectStoreId); if (StringUtils.isBlank(objectStoreId)) { return 0L; } try { @@ -29,7 +29,7 @@ public class ObjectStoreClientImpl implements ObjectStoreClient { log.debug("got objectStore size: " + size); return size; } catch (final ObjectStoreServiceException e) { - throw new DsmException("unable to get size for objectStore " + objectStoreId); + throw new DsmApiException("unable to get size for objectStore " + objectStoreId); } } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ResponseUtils.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ResponseUtils.java index f3e20cc0..8672515a 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ResponseUtils.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/ResponseUtils.java @@ -5,14 +5,14 @@ import java.util.Queue; import com.google.common.collect.Lists; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse; import eu.dnetlib.openaire.dsm.domain.DatasourceSearchResponse; -import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetExtended; -import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetails; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetailsResponse; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailResponse; import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; import eu.dnetlib.openaire.exporter.model.dsm.DatasourceInfo; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceSnippetExtended; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceSnippetResponse; import eu.dnetlib.openaire.exporter.model.dsm.Header; import eu.dnetlib.openaire.exporter.model.dsm.SimpleResponse; diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClient.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClient.java index c6ffe096..9fed2d01 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClient.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClient.java @@ -1,12 +1,13 @@ package eu.dnetlib.openaire.dsm.dao; -import eu.dnetlib.openaire.exporter.exceptions.DsmException; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; +import eu.dnetlib.openaire.exporter.model.vocabularies.Vocabulary; public interface VocabularyClient { - Vocabulary getCountries() throws DsmException; + Vocabulary getCountries() throws DsmApiException; - Vocabulary getDatasourceTypologies() throws DsmException; + Vocabulary getDatasourceTypologies() throws DsmApiException; void dropCache(); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClientImpl.java index fe2acfc8..f3fbf35e 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClientImpl.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/VocabularyClientImpl.java @@ -1,9 +1,5 @@ package eu.dnetlib.openaire.dsm.dao; -import eu.dnetlib.DnetOpenaireExporterProperties; -import eu.dnetlib.enabling.datasources.common.DsmException; -import eu.dnetlib.openaire.exporter.model.vocabularies.Vocabulary; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +10,10 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; +import eu.dnetlib.DnetOpenaireExporterProperties; +import eu.dnetlib.openaire.exporter.exceptions.DsmApiException; +import eu.dnetlib.openaire.exporter.model.vocabularies.Vocabulary; + /** * Created by claudio on 15/09/2017. */ @@ -27,24 +27,22 @@ public class VocabularyClientImpl implements VocabularyClient { @Override @Cacheable("vocabularies-cache") - public Vocabulary getCountries() throws DsmException { + public Vocabulary getCountries() throws DsmApiException { return _getVocabulary(config.getVocabularies().getCountriesEndpoint(), Vocabulary.class); } @Override @Cacheable("vocabularies-cache") - public Vocabulary getDatasourceTypologies() throws DsmException { + public Vocabulary getDatasourceTypologies() throws DsmApiException { return _getVocabulary(config.getVocabularies().getDatasourceTypologiesEndpoint(), Vocabulary.class); } - private T _getVocabulary(final String endpoint, Class clazz) throws DsmException { + private T _getVocabulary(final String endpoint, final Class clazz) throws DsmApiException { final RestTemplate rt = new RestTemplate(); log.info("get vocabulary from " + endpoint); final ResponseEntity rsp = rt.getForEntity(endpoint, clazz); - if (!rsp.getStatusCode().is2xxSuccessful()) { - throw new DsmException(rsp.getStatusCodeValue(), "unable to read content from " + endpoint); - } + if (!rsp.getStatusCode().is2xxSuccessful()) { throw new DsmApiException(rsp.getStatusCodeValue(), "unable to read content from " + endpoint); } return rsp.getBody(); } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/utils/DsmMappingUtils.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/utils/DsmMappingUtils.java index 9335fc77..cb8cd0bb 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/utils/DsmMappingUtils.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/dao/utils/DsmMappingUtils.java @@ -14,13 +14,13 @@ import org.springframework.beans.BeanWrapperImpl; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions; -import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate; -import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetExtended; import eu.dnetlib.openaire.dsm.domain.db.ApiDbEntry; import eu.dnetlib.openaire.dsm.domain.db.DatasourceDbEntry; import eu.dnetlib.openaire.dsm.domain.db.OrganizationDbEntry; import eu.dnetlib.openaire.exporter.model.dsm.ApiDetails; import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetailsUpdate; +import eu.dnetlib.openaire.exporter.model.dsm.DatasourceSnippetExtended; import eu.dnetlib.openaire.exporter.model.dsm.OrganizationDetails; public class DsmMappingUtils { diff --git a/libs/dnet-exporter-model/TODO.txt b/libs/dnet-exporter-model/TODO.txt deleted file mode 100644 index 8a879752..00000000 --- a/libs/dnet-exporter-model/TODO.txt +++ /dev/null @@ -1,6 +0,0 @@ -DsmApiController - DatasourceSnippetResponse - RegisteredDatasourceInfo - DatasourceDetailsWithApis - DatasourceDetailsUpdate - diff --git a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmException.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmApiException.java similarity index 56% rename from libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmException.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmApiException.java index 0ac3608b..79a3fba3 100644 --- a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmException.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmApiException.java @@ -1,27 +1,27 @@ package eu.dnetlib.openaire.exporter.exceptions; -public class DsmException extends Exception { +public class DsmApiException extends Exception { private static final long serialVersionUID = -8173126561260106405L; private int code; - public DsmException(final int code, final String msg) { + public DsmApiException(final int code, final String msg) { super(msg); this.code = code; } - public DsmException(final int code, final Throwable e) { + public DsmApiException(final int code, final Throwable e) { super(e); this.code = code; } - public DsmException(final int code, final String msg, final Throwable e) { + public DsmApiException(final int code, final String msg, final Throwable e) { super(msg, e); this.code = code; } - public DsmException(final String msg) { + public DsmApiException(final String msg) { this(500, msg); } diff --git a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmForbiddenException.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmForbiddenException.java deleted file mode 100644 index 03a436aa..00000000 --- a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmForbiddenException.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.dnetlib.openaire.exporter.exceptions; - -public class DsmForbiddenException extends DsmException { - - private static final long serialVersionUID = -6538032715005339181L; - - public DsmForbiddenException(final int code, final String msg) { - super(code, msg); - } - - public DsmForbiddenException(final int code, final Throwable e) { - super(code, e); - } - - public DsmForbiddenException(final int code, final String msg, final Throwable e) { - super(code, msg, e); - } - - public DsmForbiddenException(final String msg) { - this(403, msg); - } - -} diff --git a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmNotFoundException.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmNotFoundException.java deleted file mode 100644 index d9f01052..00000000 --- a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmNotFoundException.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.dnetlib.openaire.exporter.exceptions; - -public class DsmNotFoundException extends DsmException { - - private static final long serialVersionUID = 1327980530652540728L; - - public DsmNotFoundException(final int code, final String msg) { - super(code, msg); - } - - public DsmNotFoundException(final int code, final Throwable e) { - super(code, e); - } - - public DsmNotFoundException(final int code, final String msg, final Throwable e) { - super(code, msg, e); - } - - public DsmNotFoundException(final String msg) { - this(404, msg); - } - -} diff --git a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmRuntimeException.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmRuntimeException.java deleted file mode 100644 index e12894fe..00000000 --- a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/exceptions/DsmRuntimeException.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.dnetlib.openaire.exporter.exceptions; - -public class DsmRuntimeException extends RuntimeException { - - private static final long serialVersionUID = 6755159618210324144L; - - public DsmRuntimeException() { - super(); - } - - public DsmRuntimeException(final String message, final Throwable cause) { - super(message, cause); - } - - public DsmRuntimeException(final String message) { - super(message); - } - - public DsmRuntimeException(final Throwable cause) { - super(cause); - } - -} diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailResponse.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailResponse.java similarity index 77% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailResponse.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailResponse.java index 1d55a20d..a91f0f11 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailResponse.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailResponse.java @@ -1,12 +1,9 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import java.util.List; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; -import eu.dnetlib.openaire.exporter.model.dsm.Response; - @JsonAutoDetect public class DatasourceDetailResponse extends Response { diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsUpdate.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsUpdate.java similarity index 97% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsUpdate.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsUpdate.java index eef03063..1894f84c 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsUpdate.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsUpdate.java @@ -1,4 +1,4 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import java.sql.Date; import java.util.Set; @@ -8,7 +8,6 @@ import javax.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.model.dsm.IdentitiesDetails; import io.swagger.v3.oas.annotations.media.Schema; /** diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsWithApis.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsWithApis.java similarity index 82% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsWithApis.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsWithApis.java index 58df040d..c451e449 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceDetailsWithApis.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceDetailsWithApis.java @@ -1,12 +1,10 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.model.dsm.ApiDetails; -import eu.dnetlib.openaire.exporter.model.dsm.DatasourceDetails; import io.swagger.v3.oas.annotations.media.Schema; /** diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetExtended.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetExtended.java similarity index 97% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetExtended.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetExtended.java index 3454f8e3..aefdc8f3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetExtended.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetExtended.java @@ -1,4 +1,4 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import java.util.Date; import java.util.Set; @@ -8,7 +8,6 @@ import javax.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.model.dsm.OrganizationDetails; import io.swagger.v3.oas.annotations.media.Schema; @JsonAutoDetect diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetResponse.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetResponse.java similarity index 85% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetResponse.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetResponse.java index ba84462b..b5d28a21 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/DatasourceSnippetResponse.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/DatasourceSnippetResponse.java @@ -1,11 +1,9 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import java.util.List; import com.fasterxml.jackson.annotation.JsonAutoDetect; -import eu.dnetlib.openaire.exporter.model.dsm.Response; - @JsonAutoDetect public class DatasourceSnippetResponse extends Response { diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RegisteredDatasourceInfo.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RegisteredDatasourceInfo.java similarity index 97% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RegisteredDatasourceInfo.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RegisteredDatasourceInfo.java index 5bd17cc2..9b0613c2 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RegisteredDatasourceInfo.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RegisteredDatasourceInfo.java @@ -1,4 +1,4 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; public class RegisteredDatasourceInfo { diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSort.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSort.java similarity index 76% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSort.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSort.java index bf0c0cbd..57adce9f 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSort.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSort.java @@ -1,4 +1,4 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import com.fasterxml.jackson.annotation.JsonAutoDetect; diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSortOrder.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSortOrder.java similarity index 73% rename from apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSortOrder.java rename to libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSortOrder.java index 2423a991..49b4f860 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/dsm/domain/RequestSortOrder.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/dsm/RequestSortOrder.java @@ -1,4 +1,4 @@ -package eu.dnetlib.openaire.dsm.domain; +package eu.dnetlib.openaire.exporter.model.dsm; import com.fasterxml.jackson.annotation.JsonAutoDetect;