Skip to content

Commit

Permalink
MediaObject -> DigitalMedia (#88)
Browse files Browse the repository at this point in the history
* MediaObject -> DigitalMedia

* mapping -> dataMapping
  • Loading branch information
southeo authored Jun 25, 2024
1 parent 2cdf6de commit 48f4d00
Show file tree
Hide file tree
Showing 15 changed files with 153 additions and 147 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
@Getter
@ToString
@EqualsAndHashCode(callSuper = true)
public class MappingRequest extends HandleRecordRequest {
public class DataMappingRequest extends HandleRecordRequest {

@JsonProperty(required = true)
private final String sourceDataStandard;

public MappingRequest(String issuedForAgent,
public DataMappingRequest(String issuedForAgent,
String pidIssuer, String[] locations, String sourceDataStandard) {
super(issuedForAgent, pidIssuer, StructuralType.DIGITAL,
locations);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@Getter
@ToString
@EqualsAndHashCode(callSuper = true)
public class MediaObjectRequest extends DoiRecordRequest {
public class DigitalMediaRequest extends DoiRecordRequest {

@JsonProperty(required = true)
private final String mediaHost;
Expand Down Expand Up @@ -58,7 +58,7 @@ public class MediaObjectRequest extends DoiRecordRequest {
@JsonProperty(value = "dcterms:conformsTo")
private final String dctermsConformsTo;

public MediaObjectRequest(
public DigitalMediaRequest(
String issuedForAgent,
String pidIssuer,
String[] locations,
Expand Down Expand Up @@ -88,7 +88,7 @@ public MediaObjectRequest(
) throws InvalidRequestException {
super(issuedForAgent, pidIssuer, StructuralType.DIGITAL,
locations,
referentName, FdoType.MEDIA_OBJECT.getDigitalObjectName(), primaryReferentType);
referentName, FdoType.DIGITAL_MEDIA.getDigitalObjectName(), primaryReferentType);
this.mediaHost = mediaHost;
this.mediaHostName = mediaHostName;
this.mediaFormat = mediaFormat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public enum FdoType {
"DigitalSpecimen",
"https://hdl.handle.net/21.T11148/894b1e6cad57e921764e",
"https://hdl.handle.net/21.T11148/894b1e6cad57e921764e"),
@JsonProperty("https://hdl.handle.net/21.T11148/bbad8c4e101e8af01115") MEDIA_OBJECT(
"MediaObject",
@JsonProperty("https://hdl.handle.net/21.T11148/bbad8c4e101e8af01115") DIGITAL_MEDIA(
"DigitalMedia",
"https://hdl.handle.net/21.T11148/bbad8c4e101e8af01115",
"https://hdl.handle.net/21.T11148/bbad8c4e101e8af01115"),
@JsonProperty("https://hdl.handle.net/21.T11148/cf458ca9ee1d44a5608f") ANNOTATION(
Expand All @@ -31,8 +31,8 @@ public enum FdoType {
"sourceSystem",
"https://hdl.handle.net/21.T11148/417a4f472f60f7974c12",
"https://hdl.handle.net/21.T11148/417a4f472f60f7974c12"),
@JsonProperty("https://hdl.handle.net/21.T11148/ce794a6f4df42eb7e77e") MAPPING(
"Mapping",
@JsonProperty("https://hdl.handle.net/21.T11148/ce794a6f4df42eb7e77e") DATA_MAPPING(
"Data Mapping",
"https://hdl.handle.net/21.T11148/ce794a6f4df42eb7e77e",
"https://hdl.handle.net/21.T11148/ce794a6f4df42eb7e77e"),
@JsonProperty("https://hdl.handle.net/21.T11148/413c00cbd83ae33d1ac0") ORGANISATION(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.SpecVersion.VersionFlag;
import com.networknt.schema.ValidationMessage;
import eu.dissco.core.handlemanager.domain.fdo.FdoType;
import eu.dissco.core.handlemanager.domain.requests.PatchRequest;
import eu.dissco.core.handlemanager.domain.requests.PostRequest;
import eu.dissco.core.handlemanager.domain.requests.PutRequest;
import eu.dissco.core.handlemanager.domain.fdo.AnnotationRequest;
import eu.dissco.core.handlemanager.domain.fdo.DataMappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.DigitalMediaRequest;
import eu.dissco.core.handlemanager.domain.fdo.DigitalSpecimenRequest;
import eu.dissco.core.handlemanager.domain.fdo.DoiRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.FdoType;
import eu.dissco.core.handlemanager.domain.fdo.HandleRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.MappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.MasRequest;
import eu.dissco.core.handlemanager.domain.fdo.MediaObjectRequest;
import eu.dissco.core.handlemanager.domain.fdo.OrganisationRequest;
import eu.dissco.core.handlemanager.domain.fdo.SourceSystemRequest;
import eu.dissco.core.handlemanager.domain.fdo.TombstoneRecordRequest;
import eu.dissco.core.handlemanager.domain.requests.PatchRequest;
import eu.dissco.core.handlemanager.domain.requests.PostRequest;
import eu.dissco.core.handlemanager.domain.requests.PutRequest;
import eu.dissco.core.handlemanager.exceptions.InvalidRequestException;
import jakarta.validation.constraints.NotEmpty;
import java.util.Arrays;
Expand All @@ -55,8 +55,8 @@ public class JsonSchemaValidator {
private JsonNode doiPatchReqJsonNode;
private JsonNode digitalSpecimenPostReqJsonNode;
private JsonNode digitalSpecimenPatchReqJsonNode;
private JsonNode mediaObjectPostReqJsonNode;
private JsonNode mediaObjectPatchReqJsonNode;
private JsonNode digitalMediaPostReqJsonNode;
private JsonNode digitalMediaPatchReqJsonNode;
private JsonNode tombstoneReqJsonNode;
private JsonNode annotationPostReqJsonNode;
private JsonNode annotationPatchReqJsonNode;
Expand All @@ -79,8 +79,8 @@ public class JsonSchemaValidator {
private JsonSchema doiPatchReqSchema;
private JsonSchema digitalSpecimenPostReqSchema;
private JsonSchema digitalSpecimenPatchReqSchema;
private JsonSchema mediaObjectPostReqSchema;
private JsonSchema mediaObjectPatchReqSchema;
private JsonSchema digitalMediaPostReqSchema;
private JsonSchema digitalMediaPatchReqSchema;
private JsonSchema tombstoneReqSchema;
private JsonSchema annotationPostReqSchema;
private JsonSchema annotationPatchReqSchema;
Expand All @@ -105,10 +105,10 @@ private void setPostRequestAttributesJsonNodes() {
handlePostReqJsonNode = schemaGenerator.generateSchema(HandleRecordRequest.class);
doiPostReqJsonNode = schemaGenerator.generateSchema(DoiRecordRequest.class);
digitalSpecimenPostReqJsonNode = schemaGenerator.generateSchema(DigitalSpecimenRequest.class);
mediaObjectPostReqJsonNode = schemaGenerator.generateSchema(MediaObjectRequest.class);
digitalMediaPostReqJsonNode = schemaGenerator.generateSchema(DigitalMediaRequest.class);
tombstoneReqJsonNode = schemaGenerator.generateSchema(TombstoneRecordRequest.class);
annotationPostReqJsonNode = schemaGenerator.generateSchema(AnnotationRequest.class);
mappingPostReqJsonNode = schemaGenerator.generateSchema(MappingRequest.class);
mappingPostReqJsonNode = schemaGenerator.generateSchema(DataMappingRequest.class);
sourceSystemPostReqJsonNode = schemaGenerator.generateSchema(SourceSystemRequest.class);
organisationPostReqJsonNode = schemaGenerator.generateSchema(OrganisationRequest.class);
masPostReqJsonNode = schemaGenerator.generateSchema(MasRequest.class);
Expand Down Expand Up @@ -156,9 +156,9 @@ private void setPatchRequestAttributesJsonNodes() {
handlePatchReqJsonNode = schemaGenerator.generateSchema(HandleRecordRequest.class);
doiPatchReqJsonNode = schemaGenerator.generateSchema(DoiRecordRequest.class);
digitalSpecimenPatchReqJsonNode = schemaGenerator.generateSchema(DigitalSpecimenRequest.class);
mediaObjectPatchReqJsonNode = schemaGenerator.generateSchema(MediaObjectRequest.class);
digitalMediaPatchReqJsonNode = schemaGenerator.generateSchema(DigitalMediaRequest.class);
annotationPatchReqJsonNode = schemaGenerator.generateSchema(AnnotationRequest.class);
mappingPatchReqJsonNode = schemaGenerator.generateSchema(MappingRequest.class);
mappingPatchReqJsonNode = schemaGenerator.generateSchema(DataMappingRequest.class);
sourceSystemPatchReqJsonNode = schemaGenerator.generateSchema(SourceSystemRequest.class);
organisationPatchReqJsonNode = schemaGenerator.generateSchema(OrganisationRequest.class);
masPatchReqJsonNode = schemaGenerator.generateSchema(MasRequest.class);
Expand Down Expand Up @@ -232,7 +232,7 @@ private void setJsonSchemas() {
handlePostReqSchema = factory.getSchema(handlePostReqJsonNode);
doiPostReqSchema = factory.getSchema(doiPostReqJsonNode);
digitalSpecimenPostReqSchema = factory.getSchema(digitalSpecimenPostReqJsonNode);
mediaObjectPostReqSchema = factory.getSchema(mediaObjectPostReqJsonNode);
digitalMediaPostReqSchema = factory.getSchema(digitalMediaPostReqJsonNode);
annotationPostReqSchema = factory.getSchema(annotationPostReqJsonNode);
mappingPostReqSchema = factory.getSchema(mappingPostReqJsonNode);
sourceSystemPostReqSchema = factory.getSchema(sourceSystemPostReqJsonNode);
Expand All @@ -242,7 +242,7 @@ private void setJsonSchemas() {
handlePatchReqSchema = factory.getSchema(handlePatchReqJsonNode);
doiPatchReqSchema = factory.getSchema(doiPatchReqJsonNode);
digitalSpecimenPatchReqSchema = factory.getSchema(digitalSpecimenPatchReqJsonNode);
mediaObjectPatchReqSchema = factory.getSchema(mediaObjectPatchReqJsonNode);
digitalMediaPatchReqSchema = factory.getSchema(digitalMediaPatchReqJsonNode);
annotationPatchReqSchema = factory.getSchema(annotationPatchReqJsonNode);
mappingPatchReqSchema = factory.getSchema(mappingPatchReqJsonNode);
sourceSystemPatchReqSchema = factory.getSchema(sourceSystemPatchReqJsonNode);
Expand All @@ -266,9 +266,9 @@ public void validatePostRequest(JsonNode requestRoot) throws InvalidRequestExcep
case DOI -> validateRequestAttributes(attributes, doiPostReqSchema, type);
case DIGITAL_SPECIMEN ->
validateRequestAttributes(attributes, digitalSpecimenPostReqSchema, type);
case MEDIA_OBJECT -> validateRequestAttributes(attributes, mediaObjectPostReqSchema, type);
case DIGITAL_MEDIA -> validateRequestAttributes(attributes, digitalMediaPostReqSchema, type);
case ANNOTATION -> validateRequestAttributes(attributes, annotationPostReqSchema, type);
case MAPPING -> validateRequestAttributes(attributes, mappingPostReqSchema, type);
case DATA_MAPPING -> validateRequestAttributes(attributes, mappingPostReqSchema, type);
case SOURCE_SYSTEM -> validateRequestAttributes(attributes, sourceSystemPostReqSchema, type);
case ORGANISATION -> validateRequestAttributes(attributes, organisationPostReqSchema, type);
case MAS -> validateRequestAttributes(attributes, masPostReqSchema, type);
Expand All @@ -290,9 +290,9 @@ public void validatePatchRequest(JsonNode requestRoot) throws InvalidRequestExce
case DOI -> validateRequestAttributes(attributes, doiPatchReqSchema, type);
case DIGITAL_SPECIMEN ->
validateRequestAttributes(attributes, digitalSpecimenPatchReqSchema, type);
case MEDIA_OBJECT -> validateRequestAttributes(attributes, mediaObjectPatchReqSchema, type);
case DIGITAL_MEDIA -> validateRequestAttributes(attributes, digitalMediaPatchReqSchema, type);
case ANNOTATION -> validateRequestAttributes(attributes, annotationPatchReqSchema, type);
case MAPPING -> validateRequestAttributes(attributes, mappingPatchReqSchema, type);
case DATA_MAPPING -> validateRequestAttributes(attributes, mappingPatchReqSchema, type);
case SOURCE_SYSTEM -> validateRequestAttributes(attributes, sourceSystemPatchReqSchema, type);
case ORGANISATION -> validateRequestAttributes(attributes, organisationPatchReqSchema, type);
case MAS -> validateRequestAttributes(attributes, masPatchReqSchema, type);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package eu.dissco.core.handlemanager.service;


import static eu.dissco.core.handlemanager.domain.fdo.FdoType.DIGITAL_MEDIA;
import static eu.dissco.core.handlemanager.domain.fdo.FdoType.DIGITAL_SPECIMEN;
import static eu.dissco.core.handlemanager.domain.fdo.FdoType.MEDIA_OBJECT;
import static eu.dissco.core.handlemanager.domain.jsonapi.JsonApiFields.NODE_ATTRIBUTES;
import static eu.dissco.core.handlemanager.domain.jsonapi.JsonApiFields.NODE_DATA;

Expand Down Expand Up @@ -58,7 +58,7 @@ public JsonApiWrapperWrite createRecords(List<JsonNode> requests)
switch (type) {
case DIGITAL_SPECIMEN ->
handleAttributes = createDigitalSpecimen(requestAttributes, handles);
case MEDIA_OBJECT -> handleAttributes = createMediaObject(requestAttributes, handles);
case DIGITAL_MEDIA -> handleAttributes = createDigitalMedia(requestAttributes, handles);
default -> throw new UnsupportedOperationException(
type + " is not an appropriate Type for DOI endpoint.");
}
Expand All @@ -78,7 +78,7 @@ public JsonApiWrapperWrite createRecords(List<JsonNode> requests)
public JsonApiWrapperWrite updateRecords(List<JsonNode> requests, boolean incrementVersion)
throws InvalidRequestException, UnprocessableEntityException {
var type = getObjectTypeFromJsonNode(requests);
if (!DIGITAL_SPECIMEN.equals(type) && !MEDIA_OBJECT.equals(type)) {
if (!DIGITAL_SPECIMEN.equals(type) && !DIGITAL_MEDIA.equals(type)) {
throw new InvalidRequestException(TYPE_ERROR_MESSAGE);
}
var attributesToUpdate = getAttributesToUpdate(requests);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@
import static eu.dissco.core.handlemanager.domain.fdo.FdoProfile.TOPIC_DOMAIN;
import static eu.dissco.core.handlemanager.domain.fdo.FdoProfile.TOPIC_ORIGIN;
import static eu.dissco.core.handlemanager.domain.fdo.FdoProfile.WAS_DERIVED_FROM_ENTITY;
import static eu.dissco.core.handlemanager.domain.fdo.FdoType.DATA_MAPPING;
import static eu.dissco.core.handlemanager.domain.fdo.FdoType.DIGITAL_SPECIMEN;
import static eu.dissco.core.handlemanager.domain.fdo.FdoType.MAPPING;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
Expand All @@ -80,14 +80,14 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import eu.dissco.core.handlemanager.domain.fdo.AnnotationRequest;
import eu.dissco.core.handlemanager.domain.fdo.DataMappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.DigitalMediaRequest;
import eu.dissco.core.handlemanager.domain.fdo.DigitalSpecimenRequest;
import eu.dissco.core.handlemanager.domain.fdo.DoiRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.FdoProfile;
import eu.dissco.core.handlemanager.domain.fdo.FdoType;
import eu.dissco.core.handlemanager.domain.fdo.HandleRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.MappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.MasRequest;
import eu.dissco.core.handlemanager.domain.fdo.MediaObjectRequest;
import eu.dissco.core.handlemanager.domain.fdo.OrganisationRequest;
import eu.dissco.core.handlemanager.domain.fdo.SourceSystemRequest;
import eu.dissco.core.handlemanager.domain.repsitoryobjects.HandleAttribute;
Expand Down Expand Up @@ -262,9 +262,9 @@ public List<HandleAttribute> prepareDoiRecordAttributes(DoiRecordRequest request
return fdoRecord;
}

public List<HandleAttribute> prepareMediaObjectAttributes(MediaObjectRequest request,
public List<HandleAttribute> prepareDigitalMediaAttributes(DigitalMediaRequest request,
byte[] handle) throws InvalidRequestException {
var fdoRecord = prepareDoiRecordAttributes(request, handle, FdoType.MEDIA_OBJECT);
var fdoRecord = prepareDoiRecordAttributes(request, handle, FdoType.DIGITAL_MEDIA);

fdoRecord.add(new HandleAttribute(MEDIA_HOST, handle, request.getMediaHost()));
var mediaHostName = setHostName(request.getMediaHostName(), request.getMediaHost(), handle,
Expand Down Expand Up @@ -390,9 +390,10 @@ public List<HandleAttribute> prepareOrganisationAttributes(OrganisationRequest r
return fdoRecord;
}

public List<HandleAttribute> prepareMappingAttributes(MappingRequest request, byte[] handle)
public List<HandleAttribute> prepareDataMappingAttributes(DataMappingRequest request,
byte[] handle)
throws InvalidRequestException {
var fdoRecord = prepareHandleRecordAttributes(request, handle, MAPPING);
var fdoRecord = prepareHandleRecordAttributes(request, handle, DATA_MAPPING);

// 700 Source Data Standard
fdoRecord.add(
Expand Down Expand Up @@ -688,13 +689,13 @@ private String[] defaultLocations(String handle, FdoType type) {
String ui = appProperties.getUiUrl() + "/ds/" + handle;
return new String[]{ui, api};
}
case MAPPING -> {
case DATA_MAPPING -> {
return new String[]{appProperties.getOrchestrationUrl() + "/mapping/" + handle};
}
case SOURCE_SYSTEM -> {
return new String[]{appProperties.getOrchestrationUrl() + "/source-system/" + handle};
}
case MEDIA_OBJECT -> {
case DIGITAL_MEDIA -> {
String api = appProperties.getApiUrl() + "/digitalMedia/" + handle;
String ui = appProperties.getUiUrl() + "/dm/" + handle;
return new String[]{ui, api};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.dissco.core.handlemanager.Profiles;
import eu.dissco.core.handlemanager.domain.fdo.AnnotationRequest;
import eu.dissco.core.handlemanager.domain.fdo.DataMappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.DoiRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.HandleRecordRequest;
import eu.dissco.core.handlemanager.domain.fdo.MappingRequest;
import eu.dissco.core.handlemanager.domain.fdo.MasRequest;
import eu.dissco.core.handlemanager.domain.fdo.OrganisationRequest;
import eu.dissco.core.handlemanager.domain.fdo.SourceSystemRequest;
Expand Down Expand Up @@ -55,9 +55,9 @@ public JsonApiWrapperWrite createRecords(List<JsonNode> requests) throws Invalid
handleAttributes = createDigitalSpecimen(requestAttributes, handles);
case DOI -> handleAttributes = createDoi(requestAttributes, handles);
case HANDLE -> handleAttributes = createHandle(requestAttributes, handles);
case MAPPING -> handleAttributes = createMapping(requestAttributes, handles);
case DATA_MAPPING -> handleAttributes = createMapping(requestAttributes, handles);
case MAS -> handleAttributes = createMas(requestAttributes, handles);
case MEDIA_OBJECT -> handleAttributes = createMediaObject(requestAttributes, handles);
case DIGITAL_MEDIA -> handleAttributes = createDigitalMedia(requestAttributes, handles);
case ORGANISATION -> handleAttributes = createOrganisation(requestAttributes, handles);
case SOURCE_SYSTEM -> handleAttributes = createSourceSystem(requestAttributes, handles);
default -> throw new UnsupportedOperationException("Unrecognized type");
Expand Down Expand Up @@ -116,8 +116,9 @@ private List<HandleAttribute> createMapping(List<JsonNode> requestAttributes,
List<HandleAttribute> handleAttributes = new ArrayList<>();
for (var request : requestAttributes) {
var thisHandle = handleIterator.next();
var requestObject = mapper.treeToValue(request, MappingRequest.class);
handleAttributes.addAll(fdoRecordService.prepareMappingAttributes(requestObject, thisHandle));
var requestObject = mapper.treeToValue(request, DataMappingRequest.class);
handleAttributes.addAll(
fdoRecordService.prepareDataMappingAttributes(requestObject, thisHandle));
}
return handleAttributes;
}
Expand Down
Loading

0 comments on commit 48f4d00

Please sign in to comment.