diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java index de94e8d66..f2bbb9c62 100644 --- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java +++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java @@ -102,7 +102,7 @@ public class DescriptionTemplateXmlMigrationService { logger.error("Migrate DescriptionTemplate " + item.getId() + " failed read xml"); throw new MyApplicationException("Migrate DescriptionTemplate " + item.getId() + " failed read xml"); } - item.setDefinition(this.xmlHandlingService.toXml(this.buildDefinitionEntity(viewStyleModel, referenceTypeEntityMap, knownReferenceEntities))); + item.setDefinition(this.xmlHandlingService.toXml(this.buildDefinitionEntity(viewStyleModel, referenceTypeEntityMap, knownReferenceEntities, item.getId()))); this.entityManager.merge(item); } @@ -118,22 +118,22 @@ public class DescriptionTemplateXmlMigrationService { this.entityManager.flush(); } - private @NotNull DefinitionEntity buildDefinitionEntity(ViewStyleModel persist, Map referenceTypeEntityMap, Map knownReferenceEntities) throws URISyntaxException { + private @NotNull DefinitionEntity buildDefinitionEntity(ViewStyleModel persist, Map referenceTypeEntityMap, Map knownReferenceEntities, UUID descriptionTemplateId) throws URISyntaxException { DefinitionEntity data = new DefinitionEntity(); if (persist == null) return data; if (!this.conventionService.isListNullOrEmpty(persist.getPages())) { - Map> sectionPerPage = mapSectionsToPage(persist); + Map> sectionPerPage = mapSectionsToPage(persist, descriptionTemplateId); data.setPages(new ArrayList<>()); for (Page pagePersist : persist.getPages()) { - data.getPages().add(this.buildPageEntity(pagePersist, sectionPerPage.get(pagePersist.getId().trim()), referenceTypeEntityMap, knownReferenceEntities)); + data.getPages().add(this.buildPageEntity(pagePersist, sectionPerPage.get(pagePersist.getId().trim()), referenceTypeEntityMap, knownReferenceEntities, descriptionTemplateId)); } } return data; } - private @NotNull SectionEntity buildSectionEntity(Section persist, Map referenceTypeEntityMap, Map knownReferenceEntities) throws URISyntaxException { + private @NotNull SectionEntity buildSectionEntity(Section persist, Map referenceTypeEntityMap, Map knownReferenceEntities, UUID descriptionTemplateId) throws URISyntaxException { SectionEntity data = new SectionEntity(); if (persist == null) return data; @@ -147,21 +147,21 @@ public class DescriptionTemplateXmlMigrationService { if (!this.conventionService.isListNullOrEmpty(persist.getSections())) { data.setSections(new ArrayList<>()); for (Section sectionPersist : persist.getSections()) { - data.getSections().add(this.buildSectionEntity(sectionPersist, referenceTypeEntityMap, knownReferenceEntities)); + data.getSections().add(this.buildSectionEntity(sectionPersist, referenceTypeEntityMap, knownReferenceEntities, descriptionTemplateId)); } } if (!this.conventionService.isListNullOrEmpty(persist.getFieldSets())) { data.setFieldSets(new ArrayList<>()); for (FieldSet fieldSetPersist : persist.getFieldSets()) { - data.getFieldSets().add(this.buildFieldSetEntity(fieldSetPersist, referenceTypeEntityMap, knownReferenceEntities)); + data.getFieldSets().add(this.buildFieldSetEntity(fieldSetPersist, referenceTypeEntityMap, knownReferenceEntities, descriptionTemplateId)); } } return data; } - private @NotNull FieldSetEntity buildFieldSetEntity(FieldSet persist, Map referenceTypeEntityMap, Map knownReferenceEntities) throws URISyntaxException { + private @NotNull FieldSetEntity buildFieldSetEntity(FieldSet persist, Map referenceTypeEntityMap, Map knownReferenceEntities, UUID descriptionTemplateId) throws URISyntaxException { FieldSetEntity data = new FieldSetEntity(); if (persist == null) return data; @@ -180,13 +180,13 @@ public class DescriptionTemplateXmlMigrationService { if (!this.conventionService.isListNullOrEmpty(persist.getFields())) { data.setFields(new ArrayList<>()); for (Field fieldPersist : persist.getFields()) { - data.getFields().add(this.buildFieldEntity(fieldPersist, referenceTypeEntityMap, knownReferenceEntities)); + data.getFields().add(this.buildFieldEntity(fieldPersist, referenceTypeEntityMap, knownReferenceEntities, descriptionTemplateId)); } } return data; } - private @NotNull FieldEntity buildFieldEntity(Field persist, Map referenceTypeEntityMap, Map knownReferenceEntities) throws URISyntaxException { + private @NotNull FieldEntity buildFieldEntity(Field persist, Map referenceTypeEntityMap, Map knownReferenceEntities, UUID descriptionTemplateId) throws URISyntaxException { FieldEntity data = new FieldEntity(); if (persist == null) return data; @@ -230,7 +230,7 @@ public class DescriptionTemplateXmlMigrationService { } } - if (persist.getDefaultValue() != null) data.setDefaultValue(this.buildDefaultValueEntity(persist.getDefaultValue(), data.getData().getFieldType())); + if (persist.getDefaultValue() != null) data.setDefaultValue(this.buildDefaultValueEntity(persist.getDefaultValue(), data.getData().getFieldType(), descriptionTemplateId)); if (persist.getVisible() != null && !this.conventionService.isListNullOrEmpty(persist.getVisible().getRules())) { data.setVisibilityRules(new ArrayList<>()); for (Rule fieldPersist : persist.getVisible().getRules()) { @@ -402,7 +402,7 @@ public class DescriptionTemplateXmlMigrationService { return data; } - private @NotNull DefaultValueEntity buildDefaultValueEntity(DefaultValue persist, FieldType fieldType) { + private @NotNull DefaultValueEntity buildDefaultValueEntity(DefaultValue persist, FieldType fieldType, UUID descriptionTemplateId) { DefaultValueEntity data = new DefaultValueEntity(); if (persist == null) return data; @@ -439,9 +439,9 @@ public class DescriptionTemplateXmlMigrationService { case UPLOAD -> throw new NotSupportedException("Upload validator not supported"); case TAGS -> throw new NotSupportedException("Tags validator not supported"); - case INTERNAL_ENTRIES_DMPS -> throw new NotSupportedException("INTERNAL_ENTRIES_DMPS validator not supported"); - case INTERNAL_ENTRIES_DESCRIPTIONS -> throw new NotSupportedException("INTERNAL_ENTRIES_DESCRIPTIONS validator not supported"); - case REFERENCE_TYPES -> throw new NotSupportedException("REFERENCE_TYPES validator not supported"); + case INTERNAL_ENTRIES_DMPS -> throw new NotSupportedException("INTERNAL_ENTRIES_DMPS validator not supported for description template " + descriptionTemplateId); + case INTERNAL_ENTRIES_DESCRIPTIONS -> throw new NotSupportedException("INTERNAL_ENTRIES_DESCRIPTIONS validator not supported for description template " + descriptionTemplateId); + case REFERENCE_TYPES -> throw new NotSupportedException("REFERENCE_TYPES validator not supported for description template " + descriptionTemplateId); default -> throw new MyApplicationException("unrecognized type " + fieldType); } return data; @@ -514,7 +514,7 @@ public class DescriptionTemplateXmlMigrationService { - private @NotNull PageEntity buildPageEntity(Page persist, List
sections, Map referenceTypeEntityMap, Map knownReferenceEntities) throws URISyntaxException { + private @NotNull PageEntity buildPageEntity(Page persist, List
sections, Map referenceTypeEntityMap, Map knownReferenceEntities, UUID descriptionTemplateId) throws URISyntaxException { PageEntity data = new PageEntity(); if (persist == null) return data; @@ -526,14 +526,14 @@ public class DescriptionTemplateXmlMigrationService { if (!this.conventionService.isListNullOrEmpty(sections)) { data.setSections(new ArrayList<>()); for (Section sectionPersist : sections) { - data.getSections().add(this.buildSectionEntity(sectionPersist, referenceTypeEntityMap, knownReferenceEntities)); + data.getSections().add(this.buildSectionEntity(sectionPersist, referenceTypeEntityMap, knownReferenceEntities, descriptionTemplateId)); } } return data; } - private Map> mapSectionsToPage(ViewStyleModel persist){ + private Map> mapSectionsToPage(ViewStyleModel persist, UUID descriptionTemplateId){ List mappedSectionsIds = new ArrayList<>(); Map> sectionPerPage = new HashMap<>(); if (persist == null || persist.getPages() == null || persist.getSections() == null) return sectionPerPage; @@ -550,7 +550,7 @@ public class DescriptionTemplateXmlMigrationService { } for (Section section : persist.getSections()){ - if (!mappedSectionsIds.contains(section.getId().trim())) throw new MyApplicationException("Orphan section found " + section.getId().trim()); + if (!mappedSectionsIds.contains(section.getId().trim())) throw new MyApplicationException("Orphan section found " + section.getId().trim() + " for description template " + descriptionTemplateId); } return sectionPerPage; @@ -664,12 +664,12 @@ public class DescriptionTemplateXmlMigrationService { String source = persist.getAutoCompleteOptions() != null ? persist.getAutoCompleteOptions().getSource() : null; if ( source == null || source.isEmpty()) { - URI uri; - if (persist.getUrl().contains("?")) { - uri = new URI(persist.getUrl().substring(0, persist.getUrl().trim().lastIndexOf("?"))); - } else { - uri = new URI(persist.getUrl().trim()); - } + URI uri; + if (persist.getUrl().contains("?")) { + uri = new URI(persist.getUrl().substring(0, persist.getUrl().trim().lastIndexOf("?"))); + } else { + uri = new URI(persist.getUrl().trim()); + } source = uri.getHost(); } String parsedUrl = persist.getUrl().trim(); diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpMigrationService.java index 159a96d4a..db8dfeadf 100644 --- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpMigrationService.java +++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpMigrationService.java @@ -39,6 +39,9 @@ import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneOffset; +import java.time.format.DateTimeParseException; import java.util.*; import java.util.stream.Collectors; @@ -105,7 +108,7 @@ public class DmpMigrationService { for (DMP item : items) { //entityManager.detach(item); - org.opencdmp.commons.types.dmpblueprint.DefinitionEntity definitionEntity = blueprintDefinitionMap.get(item.getId()); + org.opencdmp.commons.types.dmpblueprint.DefinitionEntity definitionEntity = blueprintDefinitionMap.get(item.getProfile().getId()); DataManagementPlan model = new DataManagementPlan(); model.fromDataModel(item); List itemGroupDmps = groupDmpMap.get(item.getGroupId()); @@ -180,10 +183,16 @@ public class DmpMigrationService { DmpBlueprintValueEntity valueEntity = new DmpBlueprintValueEntity(); valueEntity.setFieldId(UUID.fromString(key)); org.opencdmp.commons.types.dmpblueprint.FieldEntity fieldEntity = this.getFieldOfId(definitionEntity, valueEntity.getFieldId()); - if (fieldEntity != null && fieldEntity.getCategory().equals(DmpBlueprintFieldCategory.Extra)){ + if (fieldEntity != null && val != null && fieldEntity.getCategory().equals(DmpBlueprintFieldCategory.Extra)){ ExtraFieldEntity extraFieldEntity = (ExtraFieldEntity) fieldEntity; switch (extraFieldEntity.getType()){ - case Date -> valueEntity.setDateValue(Instant.parse((String) val)); + case Date -> { + try { + valueEntity.setDateValue(Instant.parse((String) val)); + } catch (DateTimeParseException ex) { + valueEntity.setDateValue(LocalDate.parse((String) val).atStartOfDay().toInstant(ZoneOffset.UTC)); + } + } case RichTex, Text -> valueEntity.setValue((String) val); case Number -> valueEntity.setNumberValue(Double.parseDouble((String) val)); default -> throw new MyApplicationException("unrecognized type " + extraFieldEntity.getType().getValue());