From a1fd03a444250011f185ac451f383d4fbef432be Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Wed, 26 Apr 2023 17:27:21 +0300 Subject: [PATCH] fix out of memory error in management endpoints. --- .../eu/eudat/data/dao/entities/DatasetProfileDao.java | 2 ++ .../eudat/data/dao/entities/DatasetProfileDaoImpl.java | 6 ++++++ .../eu/eudat/logic/managers/DatasetProfileManager.java | 10 ++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDao.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDao.java index dad3243b4..d2b712ea2 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDao.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDao.java @@ -16,4 +16,6 @@ public interface DatasetProfileDao extends DatabaseAccessLayer getAuthenticated(QueryableList query, UUID principal, List roles); + List getAllIds(); + } \ No newline at end of file diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java index 0822ce6f4..b6cbb445b 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -86,6 +87,11 @@ public class DatasetProfileDaoImpl extends DatabaseAccess implem return getDatabaseService().getQueryable(DatasetProfile.class); } + @Override + public List getAllIds(){ + return getDatabaseService().getQueryable(DatasetProfile.class).withFields(Collections.singletonList("id")).toList(); + } + @Override public void delete(DatasetProfile item) { this.getDatabaseService().delete(item); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index afb2b669b..53fef9d30 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -386,8 +386,9 @@ public class DatasetProfileManager { } public void addSchematicsInDatasetProfiles() throws XPathExpressionException { - List datasetProfiles = this.databaseRepository.getDatasetProfileDao().getAll().toList(); - for(DatasetProfile datasetProfile: datasetProfiles){ + List ids = this.databaseRepository.getDatasetProfileDao().getAllIds(); + for(DatasetProfile dp: ids){ + DatasetProfile datasetProfile = this.databaseRepository.getDatasetProfileDao().find(dp.getId()); Document document = XmlBuilder.fromXml(datasetProfile.getDefinition()); XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xpath = xpathFactory.newXPath(); @@ -411,8 +412,9 @@ public class DatasetProfileManager { } public void addRdaInSchematicsInDatasetProfiles() throws XPathExpressionException { - List datasetProfiles = this.databaseRepository.getDatasetProfileDao().getAll().toList(); - for(DatasetProfile datasetProfile: datasetProfiles){ + List ids = this.databaseRepository.getDatasetProfileDao().getAllIds(); + for(DatasetProfile dp: ids){ + DatasetProfile datasetProfile = this.databaseRepository.getDatasetProfileDao().find(dp.getId()); Document document = XmlBuilder.fromXml(datasetProfile.getDefinition()); XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xpath = xpathFactory.newXPath();