diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java index e7212e305..3894e9e3d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java @@ -1,6 +1,5 @@ package eu.eudat.controllers; -import eu.eudat.data.dao.entities.UserDatasetProfileDao; import eu.eudat.data.entities.UserDatasetProfile; import eu.eudat.data.entities.UserInfo; import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem; @@ -17,7 +16,6 @@ import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.listingmodels.UserInfoListingModel; -import org.springframework.core.env.Environment; import eu.eudat.models.data.security.Principal; import eu.eudat.models.data.user.composite.PagedDatasetProfile; import eu.eudat.types.ApiMessageCode; @@ -70,16 +68,7 @@ public class Admin extends BaseController { userDatasetProfile.setUser(userInfo); userDatasetProfile.setRole(0); getApiContext().getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile); - if (profile.getUsers() != null && !profile.getUsers().isEmpty()) { - profile.getUsers().forEach(userInfoListingModel -> { - UserDatasetProfile userDatasetProfile1 = new UserDatasetProfile(); - userDatasetProfile1.setDatasetProfile(datasetProfile); - UserInfo userInfo1 = getApiContext().getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userInfoListingModel.getId()); - userDatasetProfile1.setUser(userInfo1); - userDatasetProfile1.setRole(1); - getApiContext().getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile1); - }); - } + datasetProfileManager.storeDatasetProfileUsers(datasetProfile, profile); return ResponseEntity.status(HttpStatus.OK).body(modelDefinition.getId()); } @@ -95,16 +84,7 @@ public class Admin extends BaseController { datasetprofile.setDescription(modelDefinition.getDescription()); datasetprofile.setLanguage(modelDefinition.getLanguage()); eu.eudat.data.entities.DatasetProfile datasetProfile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().createOrUpdate(datasetprofile); - if (profile.getUsers() != null && !profile.getUsers().isEmpty()) { - profile.getUsers().forEach(userInfoListingModel -> { - UserDatasetProfile userDatasetProfile1 = new UserDatasetProfile(); - userDatasetProfile1.setDatasetProfile(datasetProfile); - UserInfo userInfo1 = getApiContext().getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userInfoListingModel.getId()); - userDatasetProfile1.setUser(userInfo1); - userDatasetProfile1.setRole(1); - getApiContext().getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile1); - }); - } + datasetProfileManager.storeDatasetProfileUsers(datasetProfile, profile); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); } @@ -148,16 +128,7 @@ public class Admin extends BaseController { eu.eudat.models.data.admin.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile); datasetprofile.setLabel(profile.getLabel() + " new "); datasetprofile.setLanguage(profile.getLanguage()); - if (profile.getUsers() != null && !profile.getUsers().isEmpty()) { - datasetprofile.setUsers(profile.getUsers().stream().map(userDatasetProfile -> { - UserInfoListingModel userInfoListingModel = new UserInfoListingModel(); - userInfoListingModel.setId(userDatasetProfile.getUser().getId()); - userInfoListingModel.setName(userDatasetProfile.getUser().getName()); - userInfoListingModel.setEmail(userDatasetProfile.getUser().getEmail()); - userInfoListingModel.setRole(userDatasetProfile.getRole()); - return userInfoListingModel; - }).collect(Collectors.toList())); - } + datasetProfileManager.retrieveUsers(profile, datasetprofile); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(datasetprofile)); } 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 a1e8fc5a2..56e2494d3 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 @@ -4,6 +4,8 @@ import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; import eu.eudat.data.dao.criteria.DatasetProfileCriteria; import eu.eudat.data.entities.DatasetProfile; +import eu.eudat.data.entities.UserDatasetProfile; +import eu.eudat.data.entities.UserInfo; import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileAutocompleteRequest; import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem; import eu.eudat.exceptions.datasetprofile.DatasetProfileNewVersionException; @@ -72,16 +74,7 @@ public class DatasetProfileManager { datasetprofile.setDescription(profile.getDescription()); datasetprofile.setLanguage(profile.getLanguage()); datasetprofile.setUsers(new ArrayList<>()); - if (profile.getUsers() != null && !profile.getUsers().isEmpty()) { - datasetprofile.getUsers().addAll(profile.getUsers().stream().map(userDatasetProfile -> { - UserInfoListingModel userInfoListingModel = new UserInfoListingModel(); - userInfoListingModel.setId(userDatasetProfile.getUser().getId()); - userInfoListingModel.setName(userDatasetProfile.getUser().getName()); - userInfoListingModel.setEmail(userInfoListingModel.getEmail()); - userInfoListingModel.setRole(userInfoListingModel.getRole()); - return userInfoListingModel; - }).collect(Collectors.toList())); - } + retrieveUsers(profile, datasetprofile); return datasetprofile; } @@ -276,4 +269,34 @@ public class DatasetProfileManager { throw new DatasetProfileNewVersionException("Version to update not the latest."); } } + + public void storeDatasetProfileUsers(DatasetProfile entity, eu.eudat.models.data.admin.composite.DatasetProfile model) { + if (model.getUsers() != null && !model.getUsers().isEmpty()) { + model.getUsers().stream().filter(userInfoListingModel -> entity.getUsers().stream().filter(userDatasetProfile -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0).forEach(userInfoListingModel -> { + UserDatasetProfile userDatasetProfile1 = new UserDatasetProfile(); + userDatasetProfile1.setDatasetProfile(entity); + UserInfo userInfo1 = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userInfoListingModel.getId()); + userDatasetProfile1.setUser(userInfo1); + userDatasetProfile1.setRole(1); + apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile1); + }); + } + entity.getUsers().stream().filter(userDatasetProfile -> model.getUsers().stream().filter(userInfoListingModel -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0).forEach(userDatasetProfile -> { + userDatasetProfile.setRole(2); + apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile); + }); + } + + public void retrieveUsers(DatasetProfile entity, eu.eudat.models.data.admin.composite.DatasetProfile model) { + if (entity.getUsers() != null && !entity.getUsers().isEmpty()) { + model.setUsers(entity.getUsers().stream().filter(userDatasetProfile -> userDatasetProfile.getRole() < 2).map(userDatasetProfile -> { + UserInfoListingModel userInfoListingModel = new UserInfoListingModel(); + userInfoListingModel.setId(userDatasetProfile.getUser().getId()); + userInfoListingModel.setName(userDatasetProfile.getUser().getName()); + userInfoListingModel.setEmail(userDatasetProfile.getUser().getEmail()); + userInfoListingModel.setRole(userDatasetProfile.getRole()); + return userInfoListingModel; + }).collect(Collectors.toList())); + } + } }