diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java index 07896263f..448b30b1e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java @@ -35,7 +35,7 @@ public class ReferenceEntity extends TenantScopedBaseEntity { public static final String _label = "label"; - public static final int _labelLength = 500; + public static final int _labelLength = 1024; @Column(name = "type", nullable = false) private UUID typeId; diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DatasetMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DatasetMigrationService.java index 31c239761..3092b9ce1 100644 --- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DatasetMigrationService.java +++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DatasetMigrationService.java @@ -4,6 +4,7 @@ import eu.eudat.commons.JsonHandlingService; import eu.eudat.commons.XmlHandlingService; import eu.eudat.commons.enums.*; import eu.eudat.commons.types.description.*; +import eu.eudat.commons.types.descriptionreference.DescriptionReferenceDataEntity; import eu.eudat.commons.types.descriptiontemplate.FieldSetEntity; import eu.eudat.commons.types.descriptiontemplate.fielddata.ReferenceTypeDataEntity; import eu.eudat.commons.types.dmpblueprint.DefinitionEntity; @@ -14,6 +15,7 @@ import eu.eudat.data.*; import eu.eudat.model.Dmp; import eu.eudat.model.Reference; import eu.eudat.model.ReferenceType; +import eu.eudat.model.persist.descriptionreference.DescriptionReferenceDataPersist; import eu.eudat.query.*; import eu.old.eudat.data.dao.entities.DatasetDao; import eu.old.eudat.data.entities.Dataset; @@ -24,6 +26,7 @@ import gr.cite.tools.fieldset.BaseFieldSet; import gr.cite.tools.logging.LoggerService; import jakarta.persistence.EntityManager; import jakarta.xml.bind.JAXBException; +import org.jetbrains.annotations.NotNull; import org.json.JSONObject; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -143,16 +146,17 @@ public class DatasetMigrationService { data.setIsActive(IsActive.Active); data.setStatus(DescriptionStatus.of(item.getStatus())); } - - eu.eudat.commons.types.descriptiontemplate.DefinitionEntity descriptionTemplateDefinitionEntity = descriptionTemplateDefinitionMap.getOrDefault(item.getProfile().getId(), null); - data.setProperties(this.jsonHandlingService.toJson(this.buildPropertyDefinitionEntity(item, descriptionTemplateDefinitionEntity, referenceTypeDefinitionEntityMap, referenceMap))); - if (data.getCreatedById() == null){ throw new MyApplicationException("Migration skipped creator not found " + item.getId()); } - + eu.eudat.commons.types.descriptiontemplate.DefinitionEntity descriptionTemplateDefinitionEntity = descriptionTemplateDefinitionMap.getOrDefault(item.getProfile().getId(), null); this.entityManager.persist(data); this.entityManager.flush(); + + data.setProperties(this.jsonHandlingService.toJson(this.buildPropertyDefinitionEntity(item, descriptionTemplateDefinitionEntity, referenceTypeDefinitionEntityMap, referenceMap))); + + this.entityManager.merge(data); + this.entityManager.flush(); } page++; @@ -635,7 +639,10 @@ public class DatasetMigrationService { fieldEntity.setTextListValue(new ArrayList<>()); for (Map reference : references){ ReferenceEntity referenceEntity = this.geReferenceEntity(item, reference, referenceTypeDefinitionEntityMap, referenceTypeDataEntity, referenceMap); - if (referenceEntity != null) fieldEntity.getTextListValue().add(referenceEntity.getId().toString()); + if (referenceEntity != null) { + this.createDescriptionReferenceEntity(referenceEntity.getId(), item.getId(), currentField); + fieldEntity.getTextListValue().add(referenceEntity.getId().toString()); + } } } } @@ -981,6 +988,8 @@ public class DatasetMigrationService { if(existingEntity == null){ if (data.getCreatedById() == null) referenceMap.put(new ReferenceKey(data), data); this.entityManager.persist(data); + this.entityManager.flush(); + return data; } else { return existingEntity; @@ -988,6 +997,24 @@ public class DatasetMigrationService { } + private void createDescriptionReferenceEntity(UUID referenceId, UUID descriptionId, eu.eudat.commons.types.descriptiontemplate.FieldEntity currentField ){ + DescriptionReferenceEntity data = new DescriptionReferenceEntity(); + data.setId(UUID.randomUUID()); + data.setReferenceId(referenceId); + data.setDescriptionId(descriptionId); + data.setCreatedAt(Instant.now()); + data.setUpdatedAt(Instant.now()); + data.setIsActive(IsActive.Active); + data.setData(this.jsonHandlingService.toJsonSafe(this.buildDescriptionReferenceDataEntity(currentField))); + this.entityManager.persist(data); + } + + private @NotNull DescriptionReferenceDataEntity buildDescriptionReferenceDataEntity(eu.eudat.commons.types.descriptiontemplate.FieldEntity currentField){ + DescriptionReferenceDataEntity data = new DescriptionReferenceDataEntity(); + data.setFieldId(currentField.getId()); + return data; + } + public static class Currency{ private String name; diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpDatasetProfileMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpDatasetProfileMigrationService.java index 6d2dd5e7f..2b07fa7a0 100644 --- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpDatasetProfileMigrationService.java +++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpDatasetProfileMigrationService.java @@ -78,7 +78,13 @@ public class DmpDatasetProfileMigrationService { DmpDatasetProfileData profileData = jsonHandlingService.fromJson(DmpDatasetProfileData.class, item.getData()); if (profileData == null || profileData.dmpSectionIndex == null || profileData.dmpSectionIndex.isEmpty()){ - throw new MyApplicationException("Migrate DmpDatasetProfile " + item.getId() + " failed no section info "); + if (profileData != null && item.getDmp() != null && item.getDmp().getProfile() != null && item.getDmp().getProfile().getId() != null && item.getDmp().getProfile().getId().equals(UUID.fromString("86635178-36a6-484f-9057-a934e4eeecd5"))){ + profileData.dmpSectionIndex = new ArrayList<>(); + profileData.dmpSectionIndex.add(3); + logger.warn("Migrate DmpDatasetProfile " + item.getId() + " failed no section info set to 3"); + } else { + throw new MyApplicationException("Migrate DmpDatasetProfile " + item.getId() + " failed no section info "); + } } DefinitionEntity definition = dmpBlueprintsMap.getOrDefault(item.getDmp().getProfile().getId(), null); if (definition == null){ diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java index c9696ac99..0fcc3b7b0 100644 --- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java +++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/publicapi/migration/MigrationController.java @@ -90,38 +90,38 @@ public class MigrationController { @GetMapping("all") @Transactional public boolean migrateAll() throws IOException, JAXBException, ParserConfigurationException, InstantiationException, IllegalAccessException, SAXException, NoSuchFieldException, InvalidApplicationException, TransformerException, URISyntaxException { -// //Reference -// this.dataRepositoryMigrationService.migrate(); -// this.externalDatasetMigrationService.migrate(); -// this.funderMigrationService.migrate(); -// this.grantMigrationService.migrate(); -// this.organizationMigrationService.migrate(); -// this.projectMigrationService.migrate(); -// this.registryMigrationService.migrate(); -// this.researcherMigrationService.migrate(); -// this.serviceMigrationService.migrate(); -// -// //User -// this.userContactInfoMigrationService.migrate(); -// this.userMigrationService.migrate(); + //Reference + this.dataRepositoryMigrationService.migrate(); + this.externalDatasetMigrationService.migrate(); + this.funderMigrationService.migrate(); + this.grantMigrationService.migrate(); + this.organizationMigrationService.migrate(); + this.projectMigrationService.migrate(); + this.registryMigrationService.migrate(); + this.researcherMigrationService.migrate(); + this.serviceMigrationService.migrate(); + + //User + this.userContactInfoMigrationService.migrate(); + this.userMigrationService.migrate(); + + //XML recreate + this.dmpBlueprintXmlMigrationService.migrate(); + this.descriptionTemplateXmlMigrationService.migrate(); -// //XML recreate -// this.dmpBlueprintXmlMigrationService.migrate(); -// this.descriptionTemplateXmlMigrationService.migrate(); -// //Dmp this.dmpMigrationService.migrate(); this.dmpDatasetProfileMigrationService.migrate(); this.dmpUserMigrationService.migrate(); -// //Description -// this.datasetMigrationService.migrate(); -// this.datasetReferenceMigrationService.migrateDatasetReferences(); -// this.tagMigrationService.migrate(); -// -// this.storageFileMigrationService.migrate(); + //Description + this.datasetMigrationService.migrate(); + this.datasetReferenceMigrationService.migrateDatasetReferences(); + this.tagMigrationService.migrate(); + + this.storageFileMigrationService.migrate(); - //throw new RuntimeException(""); +// throw new RuntimeException(""); return true; }