diff --git a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java index 9d2892b7d2c17d1c4268505a68433a1f2fa829f2..333b7886cf90dcfda6fb73f501c5c2c427bfe168 100644 --- a/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java +++ b/faircommons-services/api-service/src/main/java/eu/fairkom/faircommons/api_service/service/WorkService.java @@ -116,7 +116,12 @@ public class WorkService { var workEntity = workMapper.toEntity(workMapper.toWorkView(view)); workEntity.setTags(tags); - workEntity.setGrid(IdentifierGenerator.generateGlobalReleaseIdentifier()); + + if (view.getGrid() != null) { + workEntity.setGrid(view.getGrid()); + } else { + workEntity.setGrid(IdentifierGenerator.generateGlobalReleaseIdentifier()); + } return workEntity; } diff --git a/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java b/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java index e68527f2c35bea2f71c73ae4614d76467ea6ab4c..088e5b77e9ada3d5baba31a727ee9e3a8bdeee92 100644 --- a/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java +++ b/faircommons-services/common/src/main/java/eu/fairkom/faircommons/common/mappers/WorkMapper.java @@ -43,7 +43,6 @@ public abstract class WorkMapper extends BaseMapper<Work, WorkView, UUID> { @Mapping(target = "ipfsMeta", ignore = true) @Mapping(target = "status", ignore = true) @Mapping(target = "filename", ignore = true) - @Mapping(target = "grid", ignore = true) @Mapping(target = "tags", ignore = true) public abstract WorkView toWorkView(WorkCreateView workCreateView); diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java index baa0a0e4b6d13305da3e33fb2fb022a009f4af5b..e5de8651136ab27a32a2d138266539fa1dc65b02 100644 --- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java +++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/entities/Work.java @@ -51,6 +51,7 @@ public class Work extends Identifiable<UUID> { inverseJoinColumns = @JoinColumn(name = "tag_id")) private List<Tag> tags = new ArrayList<>(); + @Column(length = 2) private String language; private ZonedDateTime creationDate; diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java index c5ec09c4722e3a917113cd40f9197fcebf49e830..832da5f4be53b784f308eb63df10ab75d2d3849a 100644 --- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java +++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/PublicWorkView.java @@ -20,6 +20,7 @@ public class PublicWorkView { ZonedDateTime registrationDate; String publisher; String identifier; + String language; PublicContributorView creator; LicenseView license; String grid; diff --git a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java index 62ca2b865db6ef0c80798b1e8c0b618cd278a628..ca5bb6fc016a137761f6ef9b8e2c67e5a390c274 100644 --- a/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java +++ b/faircommons-services/common/src/main/lombok/eu/fairkom/faircommons/common/models/views/WorkCreateView.java @@ -6,6 +6,7 @@ import eu.fairkom.faircommons.common.models.WorkVisibility; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Builder; import lombok.Value; @@ -22,7 +23,7 @@ public class WorkCreateView { @Size(max = 100) @NotBlank String title; //immutable @Size(max = 2000) @NotBlank String description; //immutable List<String> tags; - @Size(max = 255) String language; + @Size(max = 2) String language; ZonedDateTime creationDate; @Size(max = 36) @NotBlank String registrar; //immutable, keycloakUserId @Valid ContributorView creator; @@ -34,4 +35,6 @@ public class WorkCreateView { @Builder.Default List<StorageOption> storageOptions = List.of(StorageOption.FAIRREGISTER_FILE_SYSTEM); @Valid LicenseView license; + @Pattern(regexp = "RC-(01|FAREG)-(LIZ\\d{10}|\\d{10})-([A-Z]|\\d)(?=$)") + String grid; }