diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 80ba37918..ec76a42cc 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -933,25 +933,37 @@ public class DataManagementPlanManager { throw new Exception("User does not have the privilege to do this action."); if (dmp.getStatus().equals(DMP.DMPStatus.FINALISED.getValue())) throw new Exception("DMP is already finalized"); - dmp.setStatus(DMP.DMPStatus.FINALISED.getValue()); - apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(dmp); - this.updateIndex(dmp); - MetricsManager.decreaseValue("argos_managed_dmps", 1, "draft"); - MetricsManager.increaseValue("argos_managed_dmps", 1, "finalized"); List indexDatasets = new ArrayList<>(); if (datasetsToBeFinalized != null && datasetsToBeFinalized.getUuids() != null && !datasetsToBeFinalized.getUuids().isEmpty()) { - apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao() + List finalizedDatasets = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao() .asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeFinalized.getUuids())) - .update(root -> root.get("status"), Dataset.Status.FINALISED.getValue()); - apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao() + .toList(); + for (Dataset dataset: finalizedDatasets) { + Dataset.Status status = Dataset.Status.fromInteger(dataset.getStatus()); + Date finalizedDate = dataset.getFinalizedAt(); + dataset.setStatus(Dataset.Status.FINALISED.getValue()); + dataset.setFinalizedAt(new Date()); + DatasetWizardModel wizardModel = new DatasetWizardModel(); + wizardModel = wizardModel.fromDataModel(dataset); + wizardModel.setDatasetProfileDefinition(this.datasetManager.getPagedProfile(wizardModel, dataset)); + try { + datasetManager.createOrUpdate(wizardModel, principal); + } catch (Exception e) { + dataset.setStatus(status.getValue()); + dataset.setFinalizedAt(finalizedDate); + throw e; + } + dataset.setModified(new Date()); + } + /*apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao() .asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeFinalized.getUuids())) - .update(root -> root.get("finalizedAt"), new Date()); - List finalizedDatasets = dmp.getDataset().stream().filter(dataset -> datasetsToBeFinalized.getUuids().contains(dataset.getId())).collect(Collectors.toList()); - finalizedDatasets.forEach(dataset ->{ + .update(root -> root.get("finalizedAt"), new Date());*/ + //List finalizedDatasets = dmp.getDataset().stream().filter(dataset -> datasetsToBeFinalized.getUuids().contains(dataset.getId())).collect(Collectors.toList()); +/* finalizedDatasets.forEach(dataset ->{ dataset.setStatus(Dataset.Status.FINALISED.getValue()); dataset.setFinalizedAt(new Date()); dataset.setModified(new Date()); - } ); + } );*/ indexDatasets.addAll(finalizedDatasets); List datasetsToBeCanceled = new LinkedList<>(); for (Dataset dataset : dmp.getDataset()) { @@ -982,10 +994,14 @@ public class DataManagementPlanManager { cancelledDatasets.forEach(dataset -> dataset.setStatus(Dataset.Status.CANCELED.getValue())); indexDatasets.addAll(cancelledDatasets); } - - UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); - sendNotification(dmp, user, NotificationType.DMP_FINALISED); } + dmp.setStatus(DMP.DMPStatus.FINALISED.getValue()); + apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(dmp); + this.updateIndex(dmp); + UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); + sendNotification(dmp, user, NotificationType.DMP_FINALISED); + MetricsManager.decreaseValue("argos_managed_dmps", 1, "draft"); + MetricsManager.increaseValue("argos_managed_dmps", 1, "finalized"); this.updateDatasetsIndex(indexDatasets); MetricsManager.decreaseValue("argos_managed_dataset_descriptions", indexDatasets.size(), "draft"); MetricsManager.increaseValue("argos_managed_dataset_descriptions", indexDatasets.size(), "finalized"); @@ -1977,13 +1993,13 @@ public class DataManagementPlanManager { if (unpublishedUrl == null) { // Second step, add the file to the entry. FileEnvelope file = getWordDocument(id.toString(), principal, configLoader); - String name = file.getFilename().substring(0, file.getFilename().length() - 5); + /*String name = file.getFilename().substring(0, file.getFilename().length() - 5); File pdfFile = datasetManager.convertToPDF(file, environment); - String fileName = name + ".pdf"; - FileSystemResource fileSystemResource = new FileSystemResource(pdfFile); + String fileName = name + ".pdf";*/ + FileSystemResource fileSystemResource = new FileSystemResource(file.getFile()); HttpEntity addFileMapRequest = new HttpEntity<>(fileSystemResource, null); - String addFileUrl = links.get("bucket") + "/" + fileName + "?access_token=" + zenodoToken; + String addFileUrl = links.get("bucket") + "/" + file.getFilename() + "?access_token=" + zenodoToken; restTemplate.put(addFileUrl, addFileMapRequest); Files.deleteIfExists(file.getFile().toPath()); diff --git a/dmp-db-scema/main/dmp-dump.sql b/dmp-db-scema/main/dmp-dump.sql index a9134c56a..6da64c270 100644 --- a/dmp-db-scema/main/dmp-dump.sql +++ b/dmp-db-scema/main/dmp-dump.sql @@ -1352,7 +1352,7 @@ ALTER TABLE ONLY public."Notification" -- ALTER TABLE ONLY public."UserDatasetProfile" - ADD CONSTRAINT "UserDatasetProfile_datasetProfile_fkey" FOREIGN KEY (datasetProfile) REFERENCES public."DatasetProfile" ("ID"); + ADD CONSTRAINT "UserDatasetProfile_datasetProfile_fkey" FOREIGN KEY ("datasetProfile") REFERENCES public."DatasetProfile" ("ID"); -- -- Name: UserDatasetProfile UserDatasetProfile_user_key; Type: FK CONSTRAINT; Schema: public; Owner: :POSTGRES_USER @@ -1360,7 +1360,7 @@ ALTER TABLE ONLY public."UserDatasetProfile" ALTER TABLE ONLY public."UserDatasetProfile" - ADD CONSTRAINT "UserDatasetProfile_usr_fkey" FOREIGN KEY (usr) REFERENCES public."UserInfo" (id); + ADD CONSTRAINT "UserDatasetProfile_usr_fkey" FOREIGN KEY ("usr") REFERENCES public."UserInfo" (id); -- -- Name: UserDMP UserDMP_dmp_fkey; Type: FK CONSTRAINT; Schema: public; Owner: :POSTGRES_USER diff --git a/dmp-db-scema/updates/00.00.008_Add_UserDatasetProfile_table.sql b/dmp-db-scema/updates/00.00.008_Add_UserDatasetProfile_table.sql index 70c421eb2..9e9a0e798 100644 --- a/dmp-db-scema/updates/00.00.008_Add_UserDatasetProfile_table.sql +++ b/dmp-db-scema/updates/00.00.008_Add_UserDatasetProfile_table.sql @@ -5,12 +5,12 @@ CREATE TABLE public."UserDatasetProfile" "datasetProfile" uuid NOT NULL, role integer, CONSTRAINT "UserDatasetProfile_pkey" PRIMARY KEY (id), - CONSTRAINT "UserDatasetProfile_datasetProfile_fkey" FOREIGN KEY (datasetProfile) + CONSTRAINT "UserDatasetProfile_datasetProfile_fkey" FOREIGN KEY ("datasetProfile") REFERENCES public."DatasetProfile" ("ID") MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID, - CONSTRAINT "UserDatasetProfile_usr_fkey" FOREIGN KEY (usr) + CONSTRAINT "UserDatasetProfile_usr_fkey" FOREIGN KEY ("usr") REFERENCES public."UserInfo" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION