diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/PrometheusController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/PrometheusController.java index d79ef2a..7f8a7e6 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/PrometheusController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/PrometheusController.java @@ -2,7 +2,6 @@ package eu.dnetlib.repo.manager.controllers; import eu.dnetlib.repo.manager.service.PiWikService; import eu.dnetlib.repo.manager.service.RepositoryService; -import eu.dnetlib.repo.manager.service.RepositoryServiceImpl; import io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics; import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; @@ -13,7 +12,6 @@ import io.micrometer.prometheus.PrometheusConfig; import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.exporter.common.TextFormat; import org.apache.log4j.Logger; -import org.json.JSONException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/eu/dnetlib/repo/manager/domain/Paging.java b/src/main/java/eu/dnetlib/repo/manager/domain/Paging.java index 86ebccc..e8473f2 100644 --- a/src/main/java/eu/dnetlib/repo/manager/domain/Paging.java +++ b/src/main/java/eu/dnetlib/repo/manager/domain/Paging.java @@ -43,6 +43,18 @@ public class Paging { this.results = new ArrayList<>(); } + public static Paging of(Header header, List results) { + Paging paging = new Paging<>(); + paging.setFrom(header.getPage() * header.getSize()); + paging.setTo(paging.getFrom() + header.getSize() - 1); + if (paging.getTo() > header.getTotal()) { + paging.setTo((int) header.getTotal() - 1); + } + paging.setTotal((int) header.getTotal()); + paging.setResults(results); + return paging; + } + public int getTotal() { return total; } @@ -74,4 +86,4 @@ public class Paging { public void setResults(List results) { this.results = results; } -} \ No newline at end of file +} diff --git a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java index e39b508..7fcec21 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java @@ -277,7 +277,7 @@ public class RepositoryServiceImpl implements RepositoryService { LOGGER.debug("Searching registered repositories"); - List resultSet = new ArrayList<>(); + Paging snippets = null; ObjectMapper mapper = new ObjectMapper(); UriComponents uriComponents = searchRegisteredDatasource(requestSortBy, order, Integer.toString(page), Integer.toString(pageSize)); @@ -290,15 +290,23 @@ public class RepositoryServiceImpl implements RepositoryService { try { String rs = restTemplate.postForObject(uriComponents.toUri(), requestFilter, String.class); - JSONArray jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo"); + if (rs == null) { + LOGGER.error(String.format("DSM response is null : [url=%s]", uriComponents.toUri())); + } else { + JSONObject response = new JSONObject(rs); + JSONArray jsonArray = (JSONArray) response.get("datasourceInfo"); + Header header = mapper.readValue(response.get("header").toString(), Header.class); + snippets = Paging.of(header, + mapper.readValue( + String.valueOf(jsonArray), + mapper.getTypeFactory().constructCollectionType(List.class, RepositorySnippet.class))); + } - resultSet.addAll(mapper.readValue(String.valueOf(jsonArray), mapper.getTypeFactory().constructCollectionType(List.class, RepositorySnippet.class))); - - return resultSet; } catch (Exception e) { LOGGER.error("Error searching registered datasources", e); throw e; } + return snippets != null ? snippets.getResults() : null; // TODO: return paging when ui is compatible } @Override