diff --git a/Dockerfile b/Dockerfile index ec1a9fb2d..6040315ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,5 +26,6 @@ USER spring:spring WORKDIR /fdp COPY --from=builder /builder/target/fdp-spring-boot.jar /fdp/app.jar +COPY --from=builder /builder/fixtures /fdp/fixtures ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/fixtures/0010_settings.json b/fixtures/0010_settings.json new file mode 100644 index 000000000..f0ce8d700 --- /dev/null +++ b/fixtures/0010_settings.json @@ -0,0 +1,33 @@ +[ + { + "_class": "org.fairdatapoint.entity.settings.Settings", + "uuid": "00000000-0000-0000-0000-000000000000", + "appTitle": "FAIR Data Point", + "appSubtitle": "Metadata for Machines", + "pingEnabled": true, + "pingEndpoints": [ + "https://home.fairdatapoint.org" + ], + "autocompleteSearchNamespace": true + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsMetric", + "uuid": "8435491b-c16c-4457-ae94-e0f4128603d5", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "metricUri": "https://purl.org/fair-metrics/FM_F1A", + "resourceUri": "https://www.ietf.org/rfc/rfc3986.txt", + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsMetric", + "uuid": "af93d36a-0af0-4054-8c00-2675d460b231", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "metricUri": "https://purl.org/fair-metrics/FM_A1.1", + "resourceUri": "https://www.wikidata.org/wiki/Q8777", + "orderPriority": 0 + } +] diff --git a/fixtures/0100_user-accounts.json b/fixtures/0100_user-accounts.json new file mode 100644 index 000000000..14a3bd05f --- /dev/null +++ b/fixtures/0100_user-accounts.json @@ -0,0 +1,20 @@ +[ + { + "_class" : "org.fairdatapoint.entity.user.UserAccount", + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9", + "firstName": "Albert", + "lastName": "Einstein", + "email": "albert.einstein@example.com", + "passwordHash": "$2a$10$hZF1abbZ48Tf.3RndC9W6OlDt6gnBoD/2HbzJayTs6be7d.5DbpnW", + "role": "ADMIN" + }, + { + "_class" : "org.fairdatapoint.entity.user.UserAccount", + "uuid": "b5b92c69-5ed9-4054-954d-0121c29b6800", + "firstName": "Nikola", + "lastName": "Tesla", + "email": "nikola.tesla@example.com", + "passwordHash": "$2a$10$tMbZUZg9AbYL514R.hZ0tuzvfZJR5NQhSVeJPTQhNwPf6gv/cvrna", + "role": "USER" + } +] diff --git a/fixtures/0110_api-keys.json b/fixtures/0110_api-keys.json new file mode 100644 index 000000000..64521759d --- /dev/null +++ b/fixtures/0110_api-keys.json @@ -0,0 +1,10 @@ +[ + { + "_class" : "org.fairdatapoint.entity.apikey.ApiKey", + "uuid": "761aa902-8a0a-4a19-9c81-4e106c579b29", + "token": "example-token", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + } +] diff --git a/fixtures/0120_saved-queries.json b/fixtures/0120_saved-queries.json new file mode 100644 index 000000000..e49fd726a --- /dev/null +++ b/fixtures/0120_saved-queries.json @@ -0,0 +1,15 @@ +[ + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "e5e16561-97db-4518-a41e-2cc8736ec06f", + "name": "All datasets", + "description": "Quickly query all datasets (DCAT)", + "type": "PUBLIC", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity rdf:type dcat:Dataset .", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + } +] diff --git a/fixtures/0200_metadata-schemas_resource.json b/fixtures/0200_metadata-schemas_resource.json new file mode 100644 index 000000000..9c91c11ca --- /dev/null +++ b/fixtures/0200_metadata-schemas_resource.json @@ -0,0 +1,26 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "71d77460-f919-4f72-b265-ed26567fe361", + "schema": { + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + "version": "1.0.0", + "name": "Resource", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dcat: .\n@prefix dct: .\n@prefix foaf: .\n@prefix sh: .\n@prefix xsd: .\n\n:ResourceShape a sh:NodeShape ;\n sh:targetClass dcat:Resource ;\n sh:property [\n sh:path dct:title ;\n sh:nodeKind sh:Literal ;\n sh:minCount 1 ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n ], [\n sh:path dct:description ;\n sh:nodeKind sh:Literal ;\n sh:maxCount 1 ;\n dash:editor dash:TextAreaEditor ;\n ], [\n sh:path dct:publisher ;\n sh:node :AgentShape ;\n sh:minCount 1 ;\n sh:maxCount 1 ;\n dash:editor dash:BlankNodeEditor ;\n ], [\n sh:path dcat:version ;\n sh:name \"version\" ;\n sh:nodeKind sh:Literal ;\n sh:minCount 1 ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path dct:language ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ], [\n sh:path dct:license ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ], [\n sh:path dct:rights ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ] .\n\n:AgentShape a sh:NodeShape ;\n sh:targetClass foaf:Agent ;\n sh:property [\n sh:path foaf:name;\n sh:nodeKind sh:Literal ;\n sh:minCount 1 ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n ] .\n", + "targetClasses": ["http://www.w3.org/ns/dcat#Resource"], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": true, + "suggestedResourceName": null, + "suggestedUrlPrefix": null + } +] diff --git a/fixtures/0210_metadata-schemas_data-service.json b/fixtures/0210_metadata-schemas_data-service.json new file mode 100644 index 000000000..8d34dc1b1 --- /dev/null +++ b/fixtures/0210_metadata-schemas_data-service.json @@ -0,0 +1,40 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "89d94c1b-f6ff-4545-ba9b-120b2d1921d0" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "9111d436-fe58-4bd5-97ae-e6f86bc2997a", + "schema": { + "uuid": "89d94c1b-f6ff-4545-ba9b-120b2d1921d0" + }, + "version": "1.0.0", + "name": "Data Service", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dcat: .\n@prefix dct: .\n@prefix sh: .\n@prefix xsd: .\n\n:DataServiceShape a sh:NodeShape ;\n sh:targetClass dcat:DataService ;\n sh:property [\n sh:path dcat:endpointURL ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n ] , [\n sh:path dcat:endpointDescription ;\n sh:nodeKind sh:Literal ;\n sh:maxCount 1 ;\n dash:editor dash:TextAreaEditor ;\n dash:viewer dash:LiteralViewer ;\n] .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#DataService" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": null, + "suggestedUrlPrefix": null + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "2efc8366-541d-493f-8661-69ad8f72dfa1", + "metadataSchemaVersion": { + "uuid": "9111d436-fe58-4bd5-97ae-e6f86bc2997a" + }, + "extendedMetadataSchema": { + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0220_metadata-schemas_metadata-service.json b/fixtures/0220_metadata-schemas_metadata-service.json new file mode 100644 index 000000000..6549bc0c1 --- /dev/null +++ b/fixtures/0220_metadata-schemas_metadata-service.json @@ -0,0 +1,41 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "36b22b70-6203-4dd2-9fb6-b39a776bf467", + "schema": { + "uuid": "6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad" + }, + "version": "1.0.0", + "name": "Metadata Service", + "description": "", + "definition": "@prefix : .\n@prefix fdp: .\n@prefix sh: .\n\n:MetadataServiceShape a sh:NodeShape ;\n sh:targetClass fdp:MetadataService .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#DataService", + "https://w3id.org/fdp/fdp-o#MetadataService" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": null, + "suggestedUrlPrefix": null + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "8742361b-cd00-4167-b859-e45fa36d0cb7", + "metadataSchemaVersion": { + "uuid": "36b22b70-6203-4dd2-9fb6-b39a776bf467" + }, + "extendedMetadataSchema": { + "uuid": "89d94c1b-f6ff-4545-ba9b-120b2d1921d0" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0230_metadata-schemas_fdp.json b/fixtures/0230_metadata-schemas_fdp.json new file mode 100644 index 000000000..4176f923d --- /dev/null +++ b/fixtures/0230_metadata-schemas_fdp.json @@ -0,0 +1,42 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "a92958ab-a414-47e6-8e17-68ba96ba3a2b" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "4e64208d-f102-45a0-96e3-17b002e6213e", + "schema": { + "uuid": "a92958ab-a414-47e6-8e17-68ba96ba3a2b" + }, + "version": "1.0.0", + "name": "FAIR Data Point", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dct: .\n@prefix fdp: .\n@prefix sh: .\n@prefix xsd: .\n\n:FDPShape a sh:NodeShape ;\n sh:targetClass fdp:FAIRDataPoint ;\n sh:property [\n sh:path fdp:startDate ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path fdp:endDate ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path fdp:uiLanguage ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n sh:defaultValue ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ] , [\n sh:path fdp:metadataIdentifier ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ] , [\n sh:path fdp:metadataIssued ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path fdp:metadataModified ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#DataService", + "https://w3id.org/fdp/fdp-o#MetadataService", + "https://w3id.org/fdp/fdp-o#FAIRDataPoint" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": null, + "suggestedUrlPrefix": null + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "afebd441-8aa5-464d-bc3c-033f175449b4", + "metadataSchemaVersion": { + "uuid": "4e64208d-f102-45a0-96e3-17b002e6213e" + }, + "extendedMetadataSchema": { + "uuid": "6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0240_metadata-schemas_catalog.json b/fixtures/0240_metadata-schemas_catalog.json new file mode 100644 index 000000000..0ac55c440 --- /dev/null +++ b/fixtures/0240_metadata-schemas_catalog.json @@ -0,0 +1,40 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "c9640671-945d-4114-88fb-e81314cb7ab2", + "schema": { + "uuid": "2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660" + }, + "version": "1.0.0", + "name": "Catalog", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dcat: .\n@prefix dct: .\n@prefix foaf: .\n@prefix sh: .\n@prefix xsd: .\n\n:CatalogShape a sh:NodeShape ;\n sh:targetClass dcat:Catalog ;\n sh:property [\n sh:path dct:issued ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path dct:modified ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path foaf:homePage ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ], [\n sh:path dcat:themeTaxonomy ;\n sh:nodeKind sh:IRI ;\n dash:viewer dash:LabelViewer ;\n ] .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#Catalog" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": "Catalog", + "suggestedUrlPrefix": "catalog" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "e75cb601-318d-41ea-9a8b-32e0749c80a7", + "metadataSchemaVersion": { + "uuid": "c9640671-945d-4114-88fb-e81314cb7ab2" + }, + "extendedMetadataSchema": { + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0250_metadata-schemas_dataset.json b/fixtures/0250_metadata-schemas_dataset.json new file mode 100644 index 000000000..1d8506ce9 --- /dev/null +++ b/fixtures/0250_metadata-schemas_dataset.json @@ -0,0 +1,40 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "866d7fb8-5982-4215-9c7c-18d0ed1bd5f3" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "9cc3c89a-76cf-4639-a71f-652627af51db", + "schema": { + "uuid": "866d7fb8-5982-4215-9c7c-18d0ed1bd5f3" + }, + "version": "1.0.0", + "name": "Dataset", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dcat: .\n@prefix dct: .\n@prefix sh: .\n@prefix xsd: .\n\n:DatasetShape a sh:NodeShape ;\n sh:targetClass dcat:Dataset ;\n sh:property [\n sh:path dct:issued ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path dct:modified ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path dcat:theme ;\n sh:nodeKind sh:IRI ;\n sh:minCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ], [\n sh:path dcat:contactPoint ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ], [\n sh:path dcat:keyword ;\n sh:nodeKind sh:Literal ;\n dash:editor dash:TextFieldEditor ;\n dash:viewer dash:LiteralViewer ;\n ], [\n sh:path dcat:landingPage ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n dash:viewer dash:LabelViewer ;\n ] .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#Dataset" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": "Dataset", + "suggestedUrlPrefix": "dataset" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "da13ba37-09f8-4937-9055-e3ee3aefc57c", + "metadataSchemaVersion": { + "uuid": "9cc3c89a-76cf-4639-a71f-652627af51db" + }, + "extendedMetadataSchema": { + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0260_metadata-schemas_distribution.json b/fixtures/0260_metadata-schemas_distribution.json new file mode 100644 index 000000000..4b1b937bf --- /dev/null +++ b/fixtures/0260_metadata-schemas_distribution.json @@ -0,0 +1,40 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "ebacbf83-cd4f-4113-8738-d73c0735b0ab" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "3cda8cd3-b08b-4797-822d-d3f3e83c466a", + "schema": { + "uuid": "ebacbf83-cd4f-4113-8738-d73c0735b0ab" + }, + "version": "1.0.0", + "name": "Distribution", + "description": "", + "definition": "@prefix : .\n@prefix dash: .\n@prefix dcat: .\n@prefix dct: .\n@prefix sh: .\n@prefix xsd: .\n\n:DistributionShape a sh:NodeShape ;\n sh:targetClass dcat:Distribution ;\n sh:property [\n sh:path dct:issued ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path dct:modified ;\n sh:datatype xsd:dateTime ;\n sh:maxCount 1 ;\n dash:editor dash:DatePickerEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path dcat:accessURL ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n ] , [\n sh:path dcat:downloadURL ;\n sh:nodeKind sh:IRI ;\n sh:maxCount 1 ;\n dash:editor dash:URIEditor ;\n ] , [\n sh:path dcat:mediaType ;\n sh:nodeKind sh:Literal ;\n sh:minCount 1 ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path dcat:format ;\n sh:nodeKind sh:Literal ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n dash:viewer dash:LiteralViewer ;\n ] , [\n sh:path dcat:byteSize ;\n sh:nodeKind sh:Literal ;\n sh:maxCount 1 ;\n dash:editor dash:TextFieldEditor ;\n dash:viewer dash:LiteralViewer ;\n ] .\n", + "targetClasses": [ + "http://www.w3.org/ns/dcat#Resource", + "http://www.w3.org/ns/dcat#Distribution" + ], + "type": "INTERNAL", + "origin": null, + "importedFrom": null, + "state": "LATEST", + "published": false, + "abstractSchema": false, + "suggestedResourceName": "Distribution", + "suggestedUrlPrefix": "distribution" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "a3b16a4e-cac7-4b71-a3de-94bb86714b5b", + "metadataSchemaVersion": { + "uuid": "3cda8cd3-b08b-4797-822d-d3f3e83c466a" + }, + "extendedMetadataSchema": { + "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0300_resource-definitions_distribution.json b/fixtures/0300_resource-definitions_distribution.json new file mode 100644 index 000000000..f48199a38 --- /dev/null +++ b/fixtures/0300_resource-definitions_distribution.json @@ -0,0 +1,39 @@ +[ + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinition", + "uuid": "02c649de-c579-43bb-b470-306abdc808c7", + "name": "Distribution", + "urlPrefix": "distribution" + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionLink", + "uuid": "660a1821-a5d2-48d0-a26b-0c6d5bac3de4", + "resourceDefinition": { + "uuid": "02c649de-c579-43bb-b470-306abdc808c7" + }, + "title": "Access online", + "propertyUri": "http://www.w3.org/ns/dcat#accessURL", + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionLink", + "uuid": "c2eaebb8-4d8d-469d-8736-269adeded996", + "resourceDefinition": { + "uuid": "02c649de-c579-43bb-b470-306abdc808c7" + }, + "title": "Download", + "propertyUri": "http://www.w3.org/ns/dcat#downloadURL", + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.resource.MetadataSchemaUsage", + "uuid": "bbf4ecb3-c529-4c02-955c-7160755debf5", + "resourceDefinition": { + "uuid": "02c649de-c579-43bb-b470-306abdc808c7" + }, + "usedMetadataSchema": { + "uuid": "ebacbf83-cd4f-4113-8738-d73c0735b0ab" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0310_resource-definitions_dataset.json b/fixtures/0310_resource-definitions_dataset.json new file mode 100644 index 000000000..8521fb5c1 --- /dev/null +++ b/fixtures/0310_resource-definitions_dataset.json @@ -0,0 +1,43 @@ +[ + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinition", + "uuid": "2f08228e-1789-40f8-84cd-28e3288c3604", + "name": "Dataset", + "urlPrefix": "dataset" + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionChild", + "uuid": "9f138a13-9d45-4371-b763-0a3b9e0ec912", + "source": { + "uuid": "2f08228e-1789-40f8-84cd-28e3288c3604" + }, + "target": { + "uuid": "02c649de-c579-43bb-b470-306abdc808c7" + }, + "relationUri": "http://www.w3.org/ns/dcat#distribution", + "title": "Distributions", + "tagsUri": null, + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionChildMetadata", + "uuid": "723e95d3-1696-45e2-9429-f6e98e3fb893", + "child": { + "uuid": "9f138a13-9d45-4371-b763-0a3b9e0ec912" + }, + "title": "Media Type", + "propertyUri": "http://www.w3.org/ns/dcat#mediaType", + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.resource.MetadataSchemaUsage", + "uuid": "b8a0ed37-42a1-487e-8842-09fe082c4cc6", + "resourceDefinition": { + "uuid": "2f08228e-1789-40f8-84cd-28e3288c3604" + }, + "usedMetadataSchema": { + "uuid": "866d7fb8-5982-4215-9c7c-18d0ed1bd5f3" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0320_resource-definitions_catalog.json b/fixtures/0320_resource-definitions_catalog.json new file mode 100644 index 000000000..27f4c115b --- /dev/null +++ b/fixtures/0320_resource-definitions_catalog.json @@ -0,0 +1,33 @@ +[ + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinition", + "uuid": "a0949e72-4466-4d53-8900-9436d1049a4b", + "name": "Catalog", + "urlPrefix": "catalog" + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionChild", + "uuid": "e9f0f5d3-2a93-4aa3-9dd0-acb1d76f54fc", + "source": { + "uuid": "a0949e72-4466-4d53-8900-9436d1049a4b" + }, + "target": { + "uuid": "2f08228e-1789-40f8-84cd-28e3288c3604" + }, + "relationUri": "http://www.w3.org/ns/dcat#dataset", + "title": "Datasets", + "tagsUri": "http://www.w3.org/ns/dcat#theme", + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.resource.MetadataSchemaUsage", + "uuid": "e4df9510-a3ad-4e3b-a1a9-5fc330d8b1f0", + "resourceDefinition": { + "uuid": "a0949e72-4466-4d53-8900-9436d1049a4b" + }, + "usedMetadataSchema": { + "uuid": "2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0330_resource-definitions_repository.json b/fixtures/0330_resource-definitions_repository.json new file mode 100644 index 000000000..3ee9837da --- /dev/null +++ b/fixtures/0330_resource-definitions_repository.json @@ -0,0 +1,33 @@ +[ + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinition", + "uuid": "77aaad6a-0136-4c6e-88b9-07ffccd0ee4c", + "name": "FAIR Data Point", + "urlPrefix": "" + }, + { + "_class": "org.fairdatapoint.entity.resource.ResourceDefinitionChild", + "uuid": "b8648597-8fbd-4b89-9e30-5eab82675e42", + "source": { + "uuid": "77aaad6a-0136-4c6e-88b9-07ffccd0ee4c" + }, + "target": { + "uuid": "a0949e72-4466-4d53-8900-9436d1049a4b" + }, + "relationUri": "https://w3id.org/fdp/fdp-o#metadataCatalog", + "title": "Catalogs", + "tagsUri": "http://www.w3.org/ns/dcat#themeTaxonomy", + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.resource.MetadataSchemaUsage", + "uuid": "9b3a32a8-a14c-4eb0-ba02-3aa8e13a8f11", + "resourceDefinition": { + "uuid": "77aaad6a-0136-4c6e-88b9-07ffccd0ee4c" + }, + "usedMetadataSchema": { + "uuid": "a92958ab-a414-47e6-8e17-68ba96ba3a2b" + }, + "orderPriority": 0 + } +] diff --git a/fixtures/0400_memberships_owner.json b/fixtures/0400_memberships_owner.json new file mode 100644 index 000000000..35b3d9585 --- /dev/null +++ b/fixtures/0400_memberships_owner.json @@ -0,0 +1,48 @@ +[ + { + "_class": "org.fairdatapoint.entity.membership.Membership", + "uuid": "49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8", + "name": "Owner", + "allowedEntities": [ + "a0949e72-4466-4d53-8900-9436d1049a4b", + "2f08228e-1789-40f8-84cd-28e3288c3604", + "02c649de-c579-43bb-b470-306abdc808c7" + ] + }, + { + "_class": "org.fairdatapoint.entity.membership.MembershipPermission", + "uuid": "e0d9f853-637b-4c50-9ad9-07b6349bf76f", + "membership": { + "uuid": "49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8" + }, + "mask": 2, + "code": "W" + }, + { + "_class": "org.fairdatapoint.entity.membership.MembershipPermission", + "uuid": "de4e4f85-f11d-475b-b6f0-33bdfe5f923a", + "membership": { + "uuid": "49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8" + }, + "mask": 4, + "code": "C" + }, + { + "_class": "org.fairdatapoint.entity.membership.MembershipPermission", + "uuid": "60bebbf0-210d-4b05-af85-ca1b58546261", + "membership": { + "uuid": "49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8" + }, + "mask": 8, + "code": "D" + }, + { + "_class": "org.fairdatapoint.entity.membership.MembershipPermission", + "uuid": "36c3b6e9-f2e3-48b7-bae1-4dc3196a3657", + "membership": { + "uuid": "49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8" + }, + "mask": 16, + "code": "A" + } +] diff --git a/fixtures/0410_memberships_data-provider.json b/fixtures/0410_memberships_data-provider.json new file mode 100644 index 000000000..f968cff75 --- /dev/null +++ b/fixtures/0410_memberships_data-provider.json @@ -0,0 +1,19 @@ +[ + { + "_class": "org.fairdatapoint.entity.membership.Membership", + "uuid": "87a2d984-7db2-43f6-805c-6b0040afead5", + "name": "Data Provider", + "allowedEntities": [ + "a0949e72-4466-4d53-8900-9436d1049a4b" + ] + }, + { + "_class": "org.fairdatapoint.entity.membership.MembershipPermission", + "uuid": "589d09d3-1c29-4c6f-97fc-6ea4e007fb85", + "membership": { + "uuid": "87a2d984-7db2-43f6-805c-6b0040afead5" + }, + "mask": 4, + "code": "C" + } +] diff --git a/src/main/java/org/fairdatapoint/config/BootstrapConfig.java b/src/main/java/org/fairdatapoint/config/BootstrapConfig.java new file mode 100644 index 000000000..3a26265ec --- /dev/null +++ b/src/main/java/org/fairdatapoint/config/BootstrapConfig.java @@ -0,0 +1,128 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.config; + +import jakarta.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; +import org.fairdatapoint.config.properties.BootstrapProperties; +import org.fairdatapoint.database.db.repository.FixtureHistoryRepository; +import org.fairdatapoint.entity.bootstrap.FixtureHistory; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.data.repository.init.Jackson2RepositoryPopulatorFactoryBean; +import org.springframework.data.repository.init.RepositoriesPopulatedEvent; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +/** + * The {@code BootstrapConfig} class configures a repository populator that loads initial data into the relational + * database, based on JSON fixture files. + * The default fixture files are located in the {@code /fixtures} directory. + * Additional fixture directories can also be specified, using the {@code dbFixturesDirs} property. + * Fixture files are collected from all specified directories and are applied in lexicographic order. + * A FixtureHistory repository keeps track of fixture files that have been applied, so they are only applied once. + * To add custom fixtures and/or override any of the default fixtures in a docker compose setup, we can bind-mount + * individual fixture files or entire directories. + * For example: {@code ./my-fixtures/0100_user-accounts.json:/fdp/fixtures/0100_user-accounts.json:ro} + * Note that bind-mounting the entire directory, instead of individual files, would hide all default files. + */ +@Configuration +@Slf4j +public class BootstrapConfig { + private final ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); + private final BootstrapProperties bootstrap; + private final FixtureHistoryRepository fixtureHistoryRepository; + private final List resources = new ArrayList<>(); + + public BootstrapConfig(BootstrapProperties bootstrapProperties, FixtureHistoryRepository fixtureHistoryRepository) { + this.bootstrap = bootstrapProperties; + this.fixtureHistoryRepository = fixtureHistoryRepository; + } + + @Bean + public Jackson2RepositoryPopulatorFactoryBean repositoryPopulator() { + final Jackson2RepositoryPopulatorFactoryBean factory = new Jackson2RepositoryPopulatorFactoryBean(); + if (this.bootstrap.isEnabled()) { + log.info("Bootstrap repository populator enabled"); + try { + // collect fixture resources + log.info("Looking for db fixtures in the following locations: {}", + String.join(", ", this.bootstrap.getLocations())); + for (String location : this.bootstrap.getLocations()) { + // Only look for JSON files + String locationPattern = location; + if (!locationPattern.endsWith(".json")) { + // naive append may lead to redundant slashes, but the OS ignores those + locationPattern += "/*.json"; + } + resources.addAll(List.of(resourceResolver.getResources(locationPattern))); + } + // remove resources that have been applied already + final List appliedFixtures = fixtureHistoryRepository.findAll().stream() + .map(FixtureHistory::getFilename).toList(); + final List resourcesToSkip = resources.stream() + .filter(resource -> appliedFixtures.contains(resource.getFilename())).toList(); + resources.removeAll(resourcesToSkip); + // sort resources to guarantee lexicographic order + resources.sort(Comparator.comparing(Resource::getFilename, Comparator.nullsLast(String::compareTo))); + // add resources to factory + log.info("Applying {} db fixtures ({} have been applied already)", + resources.size(), resourcesToSkip.size()); + factory.setResources(resources.toArray(new Resource[0])); + } + catch (IOException exception) { + log.error("Failed to load relational database fixtures", exception); + } + } + else { + log.info("Bootstrap repository populator disabled"); + } + + return factory; + } + + @Component + public class RepositoriesPopulatedEventListener implements ApplicationListener { + @Override + public void onApplicationEvent(@NotNull RepositoriesPopulatedEvent event) { + log.info("Repository populator finished."); + // Create fixture history records for all resources that have been applied. + // Note: This assumes that all items in the resources list have been *successfully* applied. However, I'm + // not sure if this can be guaranteed. If it does turn out to be a problem, we could try e.g. extending the + // ResourceReaderRepositoryPopulator.persist() method, so the history record is added there. + for (final Resource resource : resources) { + final String filename = resource.getFilename(); + final FixtureHistory fixtureHistory = fixtureHistoryRepository.save(new FixtureHistory(filename)); + log.debug("Fixture history updated: {} ({})", fixtureHistory.getFilename(), fixtureHistory.getUuid()); + } + } + } +} diff --git a/src/main/java/org/fairdatapoint/config/properties/BootstrapProperties.java b/src/main/java/org/fairdatapoint/config/properties/BootstrapProperties.java new file mode 100644 index 000000000..ded768b2d --- /dev/null +++ b/src/main/java/org/fairdatapoint/config/properties/BootstrapProperties.java @@ -0,0 +1,44 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.config.properties; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.List; + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@ConfigurationProperties(prefix = "bootstrap") +public class BootstrapProperties { + // boolean defaults to false + private boolean enabled; + // locations to search for fixtures, for example, file:fixtures, relative to project root, + // or classpath:fixtures (see PathMatchingResourcePatternResolver docs for valid patterns) + private List locations; +} diff --git a/src/main/java/org/fairdatapoint/database/db/repository/FixtureHistoryRepository.java b/src/main/java/org/fairdatapoint/database/db/repository/FixtureHistoryRepository.java new file mode 100644 index 000000000..6912e2318 --- /dev/null +++ b/src/main/java/org/fairdatapoint/database/db/repository/FixtureHistoryRepository.java @@ -0,0 +1,34 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.database.db.repository; + +import org.fairdatapoint.database.db.repository.base.BaseRepository; +import org.fairdatapoint.entity.bootstrap.FixtureHistory; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface FixtureHistoryRepository extends BaseRepository { + Optional findByFilename(String filename); +} diff --git a/src/main/java/org/fairdatapoint/database/rdf/migration/RdfDevelopmentMigrationRunner.java b/src/main/java/org/fairdatapoint/database/rdf/migration/RdfDevelopmentMigrationRunner.java index 59c4aeb2c..4e825f0eb 100644 --- a/src/main/java/org/fairdatapoint/database/rdf/migration/RdfDevelopmentMigrationRunner.java +++ b/src/main/java/org/fairdatapoint/database/rdf/migration/RdfDevelopmentMigrationRunner.java @@ -22,7 +22,6 @@ */ package org.fairdatapoint.database.rdf.migration; -import jakarta.annotation.PostConstruct; import org.fairdatapoint.Profiles; import org.fairdatapoint.database.rdf.migration.development.metadata.AclMigration; import org.fairdatapoint.database.rdf.migration.development.metadata.RdfMetadataMigration; @@ -32,7 +31,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.annotation.Profile; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @Service @@ -52,7 +53,7 @@ public class RdfDevelopmentMigrationRunner { @Qualifier("genericMetadataRepository") private GenericMetadataRepository metadataRepository; - @PostConstruct + @EventListener(ApplicationReadyEvent.class) public void run() { rdfMetadataMigration.runMigration(); if (activeProfile.equals(Profiles.DEVELOPMENT)) { diff --git a/src/main/java/org/fairdatapoint/database/rdf/migration/development/metadata/RdfMetadataMigration.java b/src/main/java/org/fairdatapoint/database/rdf/migration/development/metadata/RdfMetadataMigration.java index 4a6d39946..afcd88236 100644 --- a/src/main/java/org/fairdatapoint/database/rdf/migration/development/metadata/RdfMetadataMigration.java +++ b/src/main/java/org/fairdatapoint/database/rdf/migration/development/metadata/RdfMetadataMigration.java @@ -22,6 +22,7 @@ */ package org.fairdatapoint.database.rdf.migration.development.metadata; +import lombok.extern.slf4j.Slf4j; import org.fairdatapoint.api.dto.metadata.MetaStateChangeDTO; import org.fairdatapoint.database.common.migration.Migration; import org.fairdatapoint.database.db.repository.ResourceDefinitionRepository; @@ -49,6 +50,7 @@ import static org.fairdatapoint.entity.metadata.MetadataGetter.getUri; import static org.fairdatapoint.util.ValueFactoryHelper.i; +@Slf4j @Service public class RdfMetadataMigration implements Migration { @@ -104,8 +106,8 @@ public void runMigration() { // Load metadata fixtures importDefaultFixtures(persistentUrl); } - catch (MetadataServiceException exception) { - exception.printStackTrace(); + catch (Exception exception) { + log.warn("Failed to run RDF development migration:", exception); } } diff --git a/src/main/java/org/fairdatapoint/entity/base/BaseEntity.java b/src/main/java/org/fairdatapoint/entity/base/BaseEntity.java index 24fb116ca..b04dc8312 100644 --- a/src/main/java/org/fairdatapoint/entity/base/BaseEntity.java +++ b/src/main/java/org/fairdatapoint/entity/base/BaseEntity.java @@ -42,7 +42,7 @@ public class BaseEntity { @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @CustomGeneratedUUID @NotNull @Column(name = "uuid", nullable = false, updatable = false, unique = true) private UUID uuid; diff --git a/src/main/java/org/fairdatapoint/entity/base/CustomGeneratedUUID.java b/src/main/java/org/fairdatapoint/entity/base/CustomGeneratedUUID.java new file mode 100644 index 000000000..8dc5bb2cf --- /dev/null +++ b/src/main/java/org/fairdatapoint/entity/base/CustomGeneratedUUID.java @@ -0,0 +1,49 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.entity.base; + +import org.fairdatapoint.util.CustomUuidGenerator; +import org.hibernate.annotations.IdGeneratorType; +import org.hibernate.annotations.UuidGenerator; +import org.hibernate.annotations.ValueGenerationType; +import org.hibernate.id.uuid.UuidValueGenerator; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Custom annotation to mark a field or method for automatic UUID generation using a custom generator. + */ +@IdGeneratorType(CustomUuidGenerator.class) +@ValueGenerationType(generatedBy = CustomUuidGenerator.class) +@Target({ElementType.FIELD, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface CustomGeneratedUUID { + + UuidGenerator.Style style() default UuidGenerator.Style.AUTO; + + Class algorithm() default UuidValueGenerator.class; + +} diff --git a/src/main/java/org/fairdatapoint/entity/base/BaseEntityCustomUUID.java b/src/main/java/org/fairdatapoint/entity/bootstrap/FixtureHistory.java similarity index 50% rename from src/main/java/org/fairdatapoint/entity/base/BaseEntityCustomUUID.java rename to src/main/java/org/fairdatapoint/entity/bootstrap/FixtureHistory.java index 620409ef9..70469d34e 100644 --- a/src/main/java/org/fairdatapoint/entity/base/BaseEntityCustomUUID.java +++ b/src/main/java/org/fairdatapoint/entity/bootstrap/FixtureHistory.java @@ -20,60 +20,26 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package org.fairdatapoint.entity.base; +package org.fairdatapoint.entity.bootstrap; import jakarta.persistence.Column; -import jakarta.persistence.Id; -import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.Entity; import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.experimental.SuperBuilder; -import org.hibernate.annotations.CreationTimestamp; -import org.hibernate.annotations.UpdateTimestamp; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.fairdatapoint.entity.base.BaseEntity; -import java.time.Instant; -import java.util.Objects; -import java.util.UUID; - -@MappedSuperclass -@SuperBuilder(toBuilder = true) +@Entity @Getter @Setter -@AllArgsConstructor @NoArgsConstructor -public class BaseEntityCustomUUID { - - @Id - @NotNull - @Column(name = "uuid", nullable = false, updatable = false, unique = true) - private UUID uuid; - - @Builder.Default - @CreationTimestamp - @NotNull - @Column(name = "created_at", nullable = false, updatable = false) - private Instant createdAt = Instant.now(); +@AllArgsConstructor +public class FixtureHistory extends BaseEntity { - @Builder.Default - @UpdateTimestamp @NotNull - @Column(name = "updated_at", nullable = false) - private Instant updatedAt = Instant.now(); - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final BaseEntityCustomUUID that = (BaseEntityCustomUUID) o; - return uuid.equals(that.uuid); - } + @Column(unique = true) + private String filename; - @Override - public int hashCode() { - return Objects.hash(uuid); - } } diff --git a/src/main/java/org/fairdatapoint/entity/index/settings/IndexSettings.java b/src/main/java/org/fairdatapoint/entity/index/settings/IndexSettings.java index 5ae6bc90d..cb2792543 100644 --- a/src/main/java/org/fairdatapoint/entity/index/settings/IndexSettings.java +++ b/src/main/java/org/fairdatapoint/entity/index/settings/IndexSettings.java @@ -27,7 +27,7 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.experimental.SuperBuilder; -import org.fairdatapoint.entity.base.BaseEntityCustomUUID; +import org.fairdatapoint.entity.base.BaseEntity; import org.hibernate.annotations.Type; import java.time.Duration; @@ -40,7 +40,7 @@ @Getter @Setter @SuperBuilder(toBuilder = true) -public class IndexSettings extends BaseEntityCustomUUID { +public class IndexSettings extends BaseEntity { @NotNull @Column(name = "auto_permit", nullable = false) diff --git a/src/main/java/org/fairdatapoint/entity/resource/MetadataSchemaUsage.java b/src/main/java/org/fairdatapoint/entity/resource/MetadataSchemaUsage.java index d004fa095..7fa8d67e4 100644 --- a/src/main/java/org/fairdatapoint/entity/resource/MetadataSchemaUsage.java +++ b/src/main/java/org/fairdatapoint/entity/resource/MetadataSchemaUsage.java @@ -29,6 +29,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.experimental.SuperBuilder; +import org.fairdatapoint.entity.base.CustomGeneratedUUID; import org.fairdatapoint.entity.schema.MetadataSchema; import java.util.UUID; @@ -43,7 +44,7 @@ public class MetadataSchemaUsage { @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @CustomGeneratedUUID @NotNull @Column(name = "uuid", nullable = false, updatable = false) private UUID uuid; diff --git a/src/main/java/org/fairdatapoint/entity/resource/ResourceDefinitionChild.java b/src/main/java/org/fairdatapoint/entity/resource/ResourceDefinitionChild.java index 705868362..344c8fcf1 100644 --- a/src/main/java/org/fairdatapoint/entity/resource/ResourceDefinitionChild.java +++ b/src/main/java/org/fairdatapoint/entity/resource/ResourceDefinitionChild.java @@ -68,6 +68,6 @@ public class ResourceDefinitionChild extends BaseEntity { private ResourceDefinition target; @OrderBy("orderPriority") - @OneToMany(fetch = FetchType.LAZY, mappedBy = "child") + @OneToMany(fetch = FetchType.LAZY, mappedBy = "child", cascade = CascadeType.ALL, orphanRemoval = true) private List metadata; } diff --git a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchema.java b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchema.java index 997232b3d..9053e367d 100644 --- a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchema.java +++ b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchema.java @@ -28,7 +28,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.experimental.SuperBuilder; -import org.fairdatapoint.entity.base.BaseEntityCustomUUID; +import org.fairdatapoint.entity.base.BaseEntity; import org.fairdatapoint.entity.resource.MetadataSchemaUsage; import java.util.List; @@ -40,7 +40,7 @@ @NoArgsConstructor @AllArgsConstructor @SuperBuilder -public class MetadataSchema extends BaseEntityCustomUUID { +public class MetadataSchema extends BaseEntity { @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "schema") diff --git a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaExtension.java b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaExtension.java index 1bae57738..5024e07ec 100644 --- a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaExtension.java +++ b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaExtension.java @@ -25,6 +25,7 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.*; +import org.fairdatapoint.entity.base.CustomGeneratedUUID; import java.util.UUID; @@ -38,7 +39,7 @@ public class MetadataSchemaExtension { @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @CustomGeneratedUUID @NotNull @Column(name = "uuid", nullable = false, updatable = false) private UUID uuid; diff --git a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaVersion.java b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaVersion.java index 6e463ca50..fb42e189d 100644 --- a/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaVersion.java +++ b/src/main/java/org/fairdatapoint/entity/schema/MetadataSchemaVersion.java @@ -28,7 +28,7 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.experimental.SuperBuilder; -import org.fairdatapoint.entity.base.BaseEntityCustomUUID; +import org.fairdatapoint.entity.base.BaseEntity; import org.hibernate.annotations.JdbcType; import org.hibernate.annotations.Type; import org.hibernate.dialect.PostgreSQLEnumJdbcType; @@ -45,7 +45,7 @@ @NoArgsConstructor @AllArgsConstructor @SuperBuilder(toBuilder = true) -public class MetadataSchemaVersion extends BaseEntityCustomUUID { +public class MetadataSchemaVersion extends BaseEntity { @NotNull @ManyToOne diff --git a/src/main/java/org/fairdatapoint/entity/settings/Settings.java b/src/main/java/org/fairdatapoint/entity/settings/Settings.java index 54851d0d8..c0aa15cc7 100644 --- a/src/main/java/org/fairdatapoint/entity/settings/Settings.java +++ b/src/main/java/org/fairdatapoint/entity/settings/Settings.java @@ -27,7 +27,7 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.experimental.SuperBuilder; -import org.fairdatapoint.entity.base.BaseEntityCustomUUID; +import org.fairdatapoint.entity.base.BaseEntity; import org.hibernate.annotations.Type; import java.util.List; @@ -39,7 +39,7 @@ @Getter @Setter @SuperBuilder(toBuilder = true) -public class Settings extends BaseEntityCustomUUID { +public class Settings extends BaseEntity { @Column(name = "app_title") private String appTitle; diff --git a/src/main/java/org/fairdatapoint/service/membership/MembershipMapper.java b/src/main/java/org/fairdatapoint/service/membership/MembershipMapper.java index e431b4f41..ec8b4d961 100644 --- a/src/main/java/org/fairdatapoint/service/membership/MembershipMapper.java +++ b/src/main/java/org/fairdatapoint/service/membership/MembershipMapper.java @@ -47,6 +47,5 @@ public MembershipDTO toDTO(Membership membership) { public MembershipPermissionDTO toPermissionDTO(MembershipPermission permission) { return new MembershipPermissionDTO(permission.getMask(), permission.getCode()); } - } diff --git a/src/main/java/org/fairdatapoint/service/membership/MembershipService.java b/src/main/java/org/fairdatapoint/service/membership/MembershipService.java index 34f8606fb..5488d82ad 100644 --- a/src/main/java/org/fairdatapoint/service/membership/MembershipService.java +++ b/src/main/java/org/fairdatapoint/service/membership/MembershipService.java @@ -56,35 +56,39 @@ public void addToMembership(ResourceDefinition resourceDefinition) { final UUID uuid = resourceDefinition.getUuid(); // Add to owner - final Membership owner = - membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_OWNER_UUID).get(); - addEntityIfMissing(owner, uuid.toString()); - membershipRepository.save(owner); + membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_OWNER_UUID) + .ifPresent(owner -> { + addEntityIfMissing(owner, uuid.toString()); + membershipRepository.save(owner); + }); // Add to data provider if (resourceDefinition.isCatalog()) { - final Membership dataProvider = - membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_DATAPROVIDER_UUID).get(); - addEntityIfMissing(dataProvider, uuid.toString()); - membershipRepository.save(dataProvider); + membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_DATAPROVIDER_UUID) + .ifPresent(dataProvider -> { + addEntityIfMissing(dataProvider, uuid.toString()); + membershipRepository.save(dataProvider); + }); } } public void removeFromMembership(ResourceDefinition resourceDefinition) { final UUID uuid = resourceDefinition.getUuid(); - // Add to owner - final Membership owner = - membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_OWNER_UUID).get(); - removeEntityIfPresent(owner, uuid.toString()); - membershipRepository.save(owner); + // Remove from owner + membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_OWNER_UUID) + .ifPresent(owner -> { + removeEntityIfPresent(owner, uuid.toString()); + membershipRepository.save(owner); + }); - // Add to data provider + // Remove from data provider if (resourceDefinition.isCatalog()) { - final Membership dataProvider = - membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_DATAPROVIDER_UUID).get(); - removeEntityIfPresent(dataProvider, uuid.toString()); - membershipRepository.save(dataProvider); + membershipRepository.findByUuid(KnownUUIDs.MEMBERSHIP_DATAPROVIDER_UUID) + .ifPresent(dataProvider -> { + removeEntityIfPresent(dataProvider, uuid.toString()); + membershipRepository.save(dataProvider); + }); } } diff --git a/src/main/java/org/fairdatapoint/util/CustomUuidGenerator.java b/src/main/java/org/fairdatapoint/util/CustomUuidGenerator.java new file mode 100644 index 000000000..57d29e81a --- /dev/null +++ b/src/main/java/org/fairdatapoint/util/CustomUuidGenerator.java @@ -0,0 +1,91 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.util; + +import org.fairdatapoint.entity.base.CustomGeneratedUUID; +import org.hibernate.engine.spi.SharedSessionContractImplementor; +import org.hibernate.generator.EventType; +import org.hibernate.id.factory.spi.CustomIdGeneratorCreationContext; +import org.hibernate.id.uuid.UuidGenerator; +import org.hibernate.id.uuid.UuidValueGenerator; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Member; +import java.util.UUID; + +/** + * Custom UUID generator that allows for assigned UUIDs. + * If a UUID is already assigned to the entity, it will be used as is. + * Otherwise, a new UUID will be generated using the specified strategy. + * This is needed because the default UuidGenerator does not allow for assigned identifiers + * that we want to support in some cases such as populating initial data fixtures. + */ +public class CustomUuidGenerator extends UuidGenerator { + + public CustomUuidGenerator( + CustomGeneratedUUID config, + Member member, + CustomIdGeneratorCreationContext creationContext + ) { + super(createUuidGeneratorFromCustomUuid(config), member, creationContext); + } + + @Override + public Object generate( + SharedSessionContractImplementor session, + Object owner, + Object currentValue, + EventType eventType + ) { + if (currentValue instanceof UUID) { + return currentValue; + } + return super.generate(session, owner, currentValue, eventType); + } + + @Override + public boolean allowAssignedIdentifiers() { + return true; + } + + private static org.hibernate.annotations.UuidGenerator createUuidGeneratorFromCustomUuid( + CustomGeneratedUUID annotation + ) { + return new org.hibernate.annotations.UuidGenerator() { + @Override + public Class annotationType() { + return org.hibernate.annotations.UuidGenerator.class; + } + + @Override + public Style style() { + return annotation.style(); + } + + @Override + public Class algorithm() { + return annotation.algorithm(); + } + }; + } +} diff --git a/src/main/resources/application-development.yml b/src/main/resources/application-development.yml index 359635210..0a3be3bc9 100644 --- a/src/main/resources/application-development.yml +++ b/src/main/resources/application-development.yml @@ -12,6 +12,6 @@ spring: username: fdp password: fdp flyway: - locations: classpath:dev/db/migration,classpath:db/migration + locations: classpath:db/migration fail-on-missing-locations: true clean-disabled: false diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 91f3a6246..ed84c0b13 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -111,3 +111,8 @@ springdoc: server: forward-headers-strategy: framework + +bootstrap: + enabled: true + locations: + - file:fixtures diff --git a/src/main/resources/db/migration/V0001.0__init-fdp-db.sql b/src/main/resources/db/migration/V0001.0__init-fdp-db.sql index c411d0586..4c59d5217 100644 --- a/src/main/resources/db/migration/V0001.0__init-fdp-db.sql +++ b/src/main/resources/db/migration/V0001.0__init-fdp-db.sql @@ -436,3 +436,14 @@ create table acl_entry( constraint foreign_fk_4 foreign key(acl_object_identity) references acl_object_identity(id), constraint foreign_fk_5 foreign key(sid) references acl_sid(id) ); + +-- history of applied fixtures + +CREATE TABLE IF NOT EXISTS fixture_history +( + uuid UUID NOT NULL, + created_at TIMESTAMPTZ NOT NULL, + updated_at TIMESTAMPTZ NOT NULL, + filename TEXT NOT NULL UNIQUE, + PRIMARY KEY (uuid) +); diff --git a/src/main/resources/dev/db/migration/V0001.1__dev-data-users.sql b/src/main/resources/dev/db/migration/V0001.1__dev-data-users.sql deleted file mode 100644 index 998d05ade..000000000 --- a/src/main/resources/dev/db/migration/V0001.1__dev-data-users.sql +++ /dev/null @@ -1,61 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- User Accounts -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('95589e50-d261-492b-8852-9324e9a66a42', 'Admin', 'von Universe', 'admin@example.com', '$2a$10$L.0OZ8QjV3yLhoCDvU04gu.WP1wGQih41MsBdvtQOshJJntaugBxe', 'ADMIN', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('7e64818d-6276-46fb-8bb1-732e6e09f7e9', 'Albert', 'Einstein', 'albert.einstein@example.com', '$2a$10$hZF1abbZ48Tf.3RndC9W6OlDt6gnBoD/2HbzJayTs6be7d.5DbpnW', 'USER', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('b5b92c69-5ed9-4054-954d-0121c29b6800', 'Nikola', 'Tesla', 'nikola.tesla@example.com', '$2a$10$tMbZUZg9AbYL514R.hZ0tuzvfZJR5NQhSVeJPTQhNwPf6gv/cvrna', 'USER', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('8d1a4c06-bb0e-4d03-a01f-14fa49bbc152', 'Isaac', 'Newton', 'isaac.newton@example.com', '$2a$10$DLkI7NAZDzWVaKG1lVtloeoPNLPoAgDDBqQKQiSAYDZXrf2QKkuHC', 'USER', NOW(), NOW()); - --- API Keys -INSERT INTO public.api_key (uuid, token, user_account_id, created_at, updated_at) -VALUES ('a1c00673-24c5-4e0a-bdbe-22e961ee7548', 'a274793046e34a219fd0ea6362fcca61a001500b71724f4c973a017031653c20', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', NOW(), NOW()); - -INSERT INTO public.api_key (uuid, token, user_account_id, created_at, updated_at) -VALUES ('62657760-21fe-488c-a0ea-f612a70493da', 'dd5dc3b53b6145cfa9f6c58b72ebad21cd2f860ace62451ba4e3c74a0e63540a', 'b5b92c69-5ed9-4054-954d-0121c29b6800', NOW(), NOW()); - --- Saved Search Queries -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('d31e3da1-2cfa-4b55-a8cb-71d1acf01aef', 'All datasets', 'Quickly query all datasets (DCAT)', 'PUBLIC', - 'PREFIX dcat: ', '?entity rdf:type dcat:Dataset .', 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', - NOW(), NOW()); - -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('c7d0b6a0-5b0a-4b0e-9b0a-9b0a9b0a9b0a', 'All distributions', 'Quickly query all distributions (DCAT)', 'INTERNAL', - 'PREFIX dcat: ', '?entity rdf:type dcat:Distribution .', 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', - NOW(), NOW()); - -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('97da9119-834e-4687-8321-3df157547178', 'Things with data', 'This is private query of Nikola Tesla!', 'PRIVATE', - 'PREFIX dcat: ', - '?entity ?relationPredicate ?relationObject . - FILTER isLiteral(?relationObject) - FILTER CONTAINS(LCASE(str(?relationObject)), LCASE("data"))', - 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', NOW(), NOW()); diff --git a/src/main/resources/dev/db/migration/V0001.2__dev-data-schemas.sql b/src/main/resources/dev/db/migration/V0001.2__dev-data-schemas.sql deleted file mode 100644 index 310c8377f..000000000 --- a/src/main/resources/dev/db/migration/V0001.2__dev-data-schemas.sql +++ /dev/null @@ -1,505 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Resource -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('6a668323-3936-4b53-8380-a4fd2ed082ee', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('71d77460-f919-4f72-b265-ed26567fe361', - '6a668323-3936-4b53-8380-a4fd2ed082ee', - NULL, - '1.0.0', - 'Resource', - '', - '@prefix : . - @prefix dash: . - @prefix dcat: . - @prefix dct: . - @prefix foaf: . - @prefix sh: . - @prefix xsd: . - - :ResourceShape a sh:NodeShape ; - sh:targetClass dcat:Resource ; - sh:property [ - sh:path dct:title ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - sh:order 1 ; - ], [ - sh:path dct:description ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextAreaEditor ; - sh:order 2 ; - ], [ - sh:path dct:publisher ; - sh:node :AgentShape ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:BlankNodeEditor ; - sh:order 3 ; - ], [ - sh:path dcat:version ; - sh:name "version" ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 4 ; - ], [ - sh:path dct:language ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:defaultValue ; - sh:order 5 ; - ], [ - sh:path dct:license ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:defaultValue ; - sh:order 6 ; - ], [ - sh:path dct:rights ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 7 ; - ] . - - :AgentShape a sh:NodeShape ; - sh:targetClass foaf:Agent ; - sh:property [ - sh:path foaf:name ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - ] . - ', - ARRAY ['http://www.w3.org/ns/dcat#Resource'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - TRUE, - NULL, - NULL, - NOW(), - NOW()); - --- Data Service -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('89d94c1b-f6ff-4545-ba9b-120b2d1921d0', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('9111d436-fe58-4bd5-97ae-e6f86bc2997a', - '89d94c1b-f6ff-4545-ba9b-120b2d1921d0', - NULL, - '1.0.0', - 'Data Service', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DataServiceShape a sh:NodeShape ; - sh:targetClass dcat:DataService ; - sh:property [ - sh:path dcat:endpointURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - sh:order 20 ; - ] , [ - sh:path dcat:endpointDescription ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextAreaEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; -] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('2efc8366-541d-493f-8661-69ad8f72dfa1', '9111d436-fe58-4bd5-97ae-e6f86bc2997a', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Metadata Service -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('36b22b70-6203-4dd2-9fb6-b39a776bf467', - '6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', - NULL, - '1.0.0', - 'Metadata Service', - '', - '@prefix : . -@prefix fdp: . -@prefix sh: . - -:MetadataServiceShape a sh:NodeShape ; - sh:targetClass fdp:MetadataService . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService', 'https://w3id.org/fdp/fdp-o#MetadataService'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('8742361b-cd00-4167-b859-e45fa36d0cb7', '36b22b70-6203-4dd2-9fb6-b39a776bf467', '89d94c1b-f6ff-4545-ba9b-120b2d1921d0', 0); - --- FAIR Data Point -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('a92958ab-a414-47e6-8e17-68ba96ba3a2b', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('4e64208d-f102-45a0-96e3-17b002e6213e', - 'a92958ab-a414-47e6-8e17-68ba96ba3a2b', - NULL, - '1.0.0', - 'FAIR Data Point', - '', - '@prefix : . -@prefix dash: . -@prefix dct: . -@prefix fdp: . -@prefix sh: . -@prefix xsd: . - -:FDPShape a sh:NodeShape ; - sh:targetClass fdp:FAIRDataPoint ; - sh:property [ - sh:path fdp:startDate ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 40 ; - ] , [ - sh:path fdp:endDate ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 41 ; - ] , [ - sh:path fdp:uiLanguage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - sh:defaultValue ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 42 ; - ] , [ - sh:path fdp:metadataIdentifier ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 43 ; - ] , [ - sh:path fdp:metadataIssued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 44 ; - ] , [ - sh:path fdp:metadataModified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 45 ; - ] . - ', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService', 'https://w3id.org/fdp/fdp-o#MetadataService', 'https://w3id.org/fdp/fdp-o#FAIRDataPoint'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('afebd441-8aa5-464d-bc3c-033f175449b4', '4e64208d-f102-45a0-96e3-17b002e6213e', '6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', 0); - --- Catalog -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('c9640671-945d-4114-88fb-e81314cb7ab2', - '2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', - NULL, - '1.0.0', - 'Catalog', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix foaf: . -@prefix sh: . -@prefix xsd: . - -:CatalogShape a sh:NodeShape ; - sh:targetClass dcat:Catalog ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ], [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ], [ - sh:path foaf:homePage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 22 ; - ], [ - sh:path dcat:themeTaxonomy ; - sh:nodeKind sh:IRI ; - dash:viewer dash:LabelViewer ; - sh:order 23 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Catalog'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('e75cb601-318d-41ea-9a8b-32e0749c80a7', 'c9640671-945d-4114-88fb-e81314cb7ab2', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Dataset -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('9cc3c89a-76cf-4639-a71f-652627af51db', - '866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', - NULL, - '1.0.0', - 'Dataset', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DatasetShape a sh:NodeShape ; - sh:targetClass dcat:Dataset ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ], [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ], [ - sh:path dcat:theme ; - sh:nodeKind sh:IRI ; - sh:minCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 22 ; - ], [ - sh:path dcat:contactPoint ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 23 ; - ], [ - sh:path dcat:keyword ; - sh:nodeKind sh:Literal ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 24 ; - ], [ - sh:path dcat:landingPage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 25 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Dataset'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('da13ba37-09f8-4937-9055-e3ee3aefc57c', '9cc3c89a-76cf-4639-a71f-652627af51db', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Distribution -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('ebacbf83-cd4f-4113-8738-d73c0735b0ab', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('3cda8cd3-b08b-4797-822d-d3f3e83c466a', - 'ebacbf83-cd4f-4113-8738-d73c0735b0ab', - NULL, - '1.0.0', - 'Distribution', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DistributionShape a sh:NodeShape ; - sh:targetClass dcat:Distribution ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ] , [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ] , [ - sh:path dcat:accessURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - sh:order 22 ; - ] , [ - sh:path dcat:downloadURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - sh:order 23 ; - ] , [ - sh:path dcat:mediaType ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 24 ; - ] , [ - sh:path dcat:format ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 25 ; - ] , [ - sh:path dcat:byteSize ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 26 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Distribution'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('a3b16a4e-cac7-4b71-a3de-94bb86714b5b', '3cda8cd3-b08b-4797-822d-d3f3e83c466a', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); diff --git a/src/main/resources/dev/db/migration/V0001.3__dev-data-rds.sql b/src/main/resources/dev/db/migration/V0001.3__dev-data-rds.sql deleted file mode 100644 index ed4f047ff..000000000 --- a/src/main/resources/dev/db/migration/V0001.3__dev-data-rds.sql +++ /dev/null @@ -1,68 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Distribution -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('02c649de-c579-43bb-b470-306abdc808c7', 'Distribution', 'distribution', now(), now()); - -INSERT INTO resource_definition_link (uuid, resource_definition_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('660a1821-a5d2-48d0-a26b-0c6d5bac3de4', '02c649de-c579-43bb-b470-306abdc808c7', 'Access online', 'http://www.w3.org/ns/dcat#accessURL', 1, now(), now()); - -INSERT INTO resource_definition_link (uuid, resource_definition_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('c2eaebb8-4d8d-469d-8736-269adeded996', '02c649de-c579-43bb-b470-306abdc808c7', 'Download', 'http://www.w3.org/ns/dcat#downloadURL', 2, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('bbf4ecb3-c529-4c02-955c-7160755debf5', '02c649de-c579-43bb-b470-306abdc808c7', 'ebacbf83-cd4f-4113-8738-d73c0735b0ab', 1); - --- Dataset -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('2f08228e-1789-40f8-84cd-28e3288c3604', 'Dataset', 'dataset', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('9f138a13-9d45-4371-b763-0a3b9e0ec912', '2f08228e-1789-40f8-84cd-28e3288c3604', '02c649de-c579-43bb-b470-306abdc808c7', 'http://www.w3.org/ns/dcat#distribution', 'Distributions', NULL, 1, now(), now()); - -INSERT INTO resource_definition_child_metadata (uuid, resource_definition_child_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('723e95d3-1696-45e2-9429-f6e98e3fb893', '9f138a13-9d45-4371-b763-0a3b9e0ec912', 'Media Type', 'http://www.w3.org/ns/dcat#mediaType', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('b8a0ed37-42a1-487e-8842-09fe082c4cc6', '2f08228e-1789-40f8-84cd-28e3288c3604', '866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', 1); - --- Catalog -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('a0949e72-4466-4d53-8900-9436d1049a4b', 'Catalog', 'catalog', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('e9f0f5d3-2a93-4aa3-9dd0-acb1d76f54fc', 'a0949e72-4466-4d53-8900-9436d1049a4b', '2f08228e-1789-40f8-84cd-28e3288c3604', 'http://www.w3.org/ns/dcat#dataset', 'Datasets', 'http://www.w3.org/ns/dcat#theme', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('e4df9510-a3ad-4e3b-a1a9-5fc330d8b1f0', 'a0949e72-4466-4d53-8900-9436d1049a4b', '2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', 1); - --- FAIR Data Point -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'FAIR Data Point', '', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('b8648597-8fbd-4b89-9e30-5eab82675e42', '77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'a0949e72-4466-4d53-8900-9436d1049a4b', 'https://w3id.org/fdp/fdp-o#metadataCatalog', 'Catalogs', 'http://www.w3.org/ns/dcat#themeTaxonomy', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('9b3a32a8-a14c-4eb0-ba02-3aa8e13a8f11', '77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'a92958ab-a414-47e6-8e17-68ba96ba3a2b', 1); diff --git a/src/main/resources/dev/db/migration/V0001.4__dev-data-membership.sql b/src/main/resources/dev/db/migration/V0001.4__dev-data-membership.sql deleted file mode 100644 index 8240e0bfe..000000000 --- a/src/main/resources/dev/db/migration/V0001.4__dev-data-membership.sql +++ /dev/null @@ -1,43 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - -INSERT INTO membership (uuid, name, allowed_entities, created_at, updated_at) -VALUES ('49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 'Owner', ARRAY ['a0949e72-4466-4d53-8900-9436d1049a4b', '2f08228e-1789-40f8-84cd-28e3288c3604', '02c649de-c579-43bb-b470-306abdc808c7'], NOW(), NOW()); - -INSERT INTO membership (uuid, name, allowed_entities, created_at, updated_at) -VALUES ('87a2d984-7db2-43f6-805c-6b0040afead5', 'Data Provider', ARRAY ['a0949e72-4466-4d53-8900-9436d1049a4b'], NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('e0d9f853-637b-4c50-9ad9-07b6349bf76f', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 2, 'W', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('de4e4f85-f11d-475b-b6f0-33bdfe5f923a', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 4, 'C', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('60bebbf0-210d-4b05-af85-ca1b58546261', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 8, 'D', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('36c3b6e9-f2e3-48b7-bae1-4dc3196a3657', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 16, 'A', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('589d09d3-1c29-4c6f-97fc-6ea4e007fb85', '87a2d984-7db2-43f6-805c-6b0040afead5', 4, 'C', NOW(), NOW()); diff --git a/src/main/resources/dev/db/migration/V0001.5__dev-settings.sql b/src/main/resources/dev/db/migration/V0001.5__dev-settings.sql deleted file mode 100644 index 75496e02a..000000000 --- a/src/main/resources/dev/db/migration/V0001.5__dev-settings.sql +++ /dev/null @@ -1,73 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Settings -INSERT INTO settings (uuid, app_title, app_subtitle, ping_enabled, ping_endpoints, autocomplete_search_ns, created_at, updated_at) -VALUES ('00000000-0000-0000-0000-000000000000', 'FAIR Data Point', 'FDP Development Instance', False, ARRAY ['https://home.fairdatapoint.org'], True, now(), now()); - --- Autocomplete Sources -INSERT INTO settings_autocomplete_source (uuid, settings_id, rdf_type, sparql_endpoint, sparql_query, order_priority, created_at, updated_at) -VALUES ('d4045a98-dd25-493e-a0b1-d704921c0930', '00000000-0000-0000-0000-000000000000', 'http://www.w3.org/2000/01/rdf-schema#Class', 'http://localhost:3030/ds/query', -'SELECT DISTINCT ?uri ?label -WHERE { ?uri a . -?uri ?label . -FILTER regex(?label, ".*%s.*", "i") } -ORDER BY ?label', - 1, now(), now()); - --- Search Filters: Type -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('57a98728-ce8c-4e7f-b0f8-94e2668b44d3', '00000000-0000-0000-0000-000000000000', 'IRI', 'Type', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', False, 1, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('b48c2c7f-d7fb-47ae-a72c-b1b360e16f6e', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Catalog', 'http://www.w3.org/ns/dcat#Catalog', 1, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('3e1598ac-9d29-47f0-8e7b-3c26ca0134a0', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Dataset', 'http://www.w3.org/ns/dcat#Dataset', 2, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('5697d8d9-f09d-4ebe-b834-b37eb0624c3f', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Distribution', 'http://www.w3.org/ns/dcat#Distribution', 3, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('022c3bc6-0598-408c-8d2e-b486dafb73dd', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Data Service', 'http://www.w3.org/ns/dcat#DataService', 4, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('7cee5591-8620-4fea-b883-a94285012b8d', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Metadata Service', 'https://w3id.org/fdp/fdp-o#MetadataService', 5, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('9d661dca-8017-4dba-b930-cd2834ea59e8', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'FAIR Data Point', 'https://w3id.org/fdp/fdp-o#FAIRDataPoint', 6, now(), now()); - --- Search Filters: License -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('26913eb3-67dd-45c9-b8ff-4c97e8162a9b', '00000000-0000-0000-0000-000000000000', 'IRI', 'License', 'http://purl.org/dc/terms/license', True, 2, now(), now()); - --- Search Filters: License -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('cb25afb4-6169-42f8-bde5-181c803773a8', '00000000-0000-0000-0000-000000000000', 'IRI', 'Version', 'http://www.w3.org/ns/dcat#version', True, 3, now(), now()); - --- Metrics -INSERT INTO settings_metric (uuid, settings_id, metric_uri, resource_uri, order_priority, created_at, updated_at) -VALUES ('8435491b-c16c-4457-ae94-e0f4128603d5', '00000000-0000-0000-0000-000000000000', 'https://purl.org/fair-metrics/FM_F1A', 'https://www.ietf.org/rfc/rfc3986.txt', 1, now(), now()); - -INSERT INTO settings_metric (uuid, settings_id, metric_uri, resource_uri, order_priority, created_at, updated_at) -VALUES ('af93d36a-0af0-4054-8c00-2675d460b231', '00000000-0000-0000-0000-000000000000', 'https://purl.org/fair-metrics/FM_A1.1', 'https://www.wikidata.org/wiki/Q8777', 2, now(), now()); diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-catalog.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-catalog.ttl index 516a3a59a..9c3be3870 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-catalog.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-catalog.ttl @@ -1,10 +1,10 @@ -@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix foaf: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dcat: . +@prefix dct: . +@prefix foaf: . +@prefix sh: . +@prefix xsd: . :CatalogShape a sh:NodeShape ; sh:targetClass dcat:Catalog ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom-edited.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom-edited.ttl index 29d1647fd..6c781549c 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom-edited.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom-edited.ttl @@ -1,7 +1,7 @@ -@prefix : . -@prefix sh: . -@prefix dash: . -@prefix ex: . +@prefix : . +@prefix sh: . +@prefix dash: . +@prefix ex: . :CustomShape a sh:NodeShape ; sh:targetClass ex:Dog ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom.ttl index b425ce3e5..c6062352b 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-custom.ttl @@ -1,7 +1,7 @@ -@prefix : . -@prefix sh: . -@prefix dash: . -@prefix ex: . +@prefix : . +@prefix sh: . +@prefix dash: . +@prefix ex: . :CustomShape a sh:NodeShape ; sh:targetClass ex:Dog ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-data-service.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-data-service.ttl index e23084794..be36c06a9 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-data-service.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-data-service.ttl @@ -1,9 +1,9 @@ -@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dcat: . +@prefix dct: . +@prefix sh: . +@prefix xsd: . :DataServiceShape a sh:NodeShape ; sh:targetClass dcat:DataService ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-dataset.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-dataset.ttl index 55536b307..26b1dc4d2 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-dataset.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-dataset.ttl @@ -1,9 +1,9 @@ -@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dcat: . +@prefix dct: . +@prefix sh: . +@prefix xsd: . :DatasetShape a sh:NodeShape ; sh:targetClass dcat:Dataset ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-distribution.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-distribution.ttl index 3cbd6a4b5..e6d9b2e90 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-distribution.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-distribution.ttl @@ -1,9 +1,9 @@ -@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dcat: . +@prefix dct: . +@prefix sh: . +@prefix xsd: . :DistributionShape a sh:NodeShape ; sh:targetClass dcat:Distribution ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-fdp.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-fdp.ttl index 02acd7106..a07bb13eb 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-fdp.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-fdp.ttl @@ -1,9 +1,9 @@ -@prefix : . -@prefix dash: . -@prefix dct: . -@prefix fdp: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dct: . +@prefix fdp: . +@prefix sh: . +@prefix xsd: . :FDPShape a sh:NodeShape ; sh:targetClass fdp:FAIRDataPoint ; diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-metadata-service.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-metadata-service.ttl index 3943c4675..227b90580 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-metadata-service.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-metadata-service.ttl @@ -1,6 +1,6 @@ -@prefix : . -@prefix fdp: . -@prefix sh: . +@prefix : . +@prefix fdp: . +@prefix sh: . :MetadataServiceShape a sh:NodeShape ; sh:targetClass fdp:MetadataService . diff --git a/src/main/resources/org/fairdatapoint/database/fixtures/shape-resource.ttl b/src/main/resources/org/fairdatapoint/database/fixtures/shape-resource.ttl index bc54d66af..3fd97bc53 100644 --- a/src/main/resources/org/fairdatapoint/database/fixtures/shape-resource.ttl +++ b/src/main/resources/org/fairdatapoint/database/fixtures/shape-resource.ttl @@ -1,10 +1,10 @@ -@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix foaf: . -@prefix sh: . -@prefix xsd: . +@prefix : . +@prefix dash: . +@prefix dcat: . +@prefix dct: . +@prefix foaf: . +@prefix sh: . +@prefix xsd: . :ResourceShape a sh:NodeShape ; sh:targetClass dcat:Resource ; diff --git a/src/test/java/org/fairdatapoint/WebIntegrationTest.java b/src/test/java/org/fairdatapoint/WebIntegrationTest.java index 6fe2e758a..79a357ce8 100644 --- a/src/test/java/org/fairdatapoint/WebIntegrationTest.java +++ b/src/test/java/org/fairdatapoint/WebIntegrationTest.java @@ -30,6 +30,9 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.context.ApplicationContext; +import org.springframework.data.repository.init.ResourceReaderRepositoryPopulator; +import org.springframework.data.repository.support.Repositories; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -64,10 +67,22 @@ public abstract class WebIntegrationTest { @Autowired protected AclMigration aclMigration; + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private ResourceReaderRepositoryPopulator populator; + @BeforeEach public void setup() { + // drop test database content flyway.clean(); + // re-migrate schemas flyway.migrate(); + // re-populate the database using fixtures + populator.populate(new Repositories(applicationContext)); + // re-migrate acl data + // (TODO: AclMigration is in a subfolder of rdf/migration, but is it even related to rdf? Looks relational...) aclMigration.runMigration(); } } diff --git a/src/test/java/org/fairdatapoint/acceptance/search/query/saved/Detail_DELETE.java b/src/test/java/org/fairdatapoint/acceptance/search/query/saved/Detail_DELETE.java index cf49de7c9..5bab2be6d 100644 --- a/src/test/java/org/fairdatapoint/acceptance/search/query/saved/Detail_DELETE.java +++ b/src/test/java/org/fairdatapoint/acceptance/search/query/saved/Detail_DELETE.java @@ -70,7 +70,7 @@ public void res403_anonymousUser() { // THEN: assertThat(result.getStatusCode(), is(equalTo(HttpStatus.FORBIDDEN))); - assertThat(searchSavedQueryRepository.count(), is(equalTo(3L))); + assertThat(searchSavedQueryRepository.count(), is(equalTo(4L))); } @Test @@ -92,7 +92,7 @@ public void res403_nonOwnerUser() { // THEN: assertThat(result.getStatusCode(), is(equalTo(HttpStatus.FORBIDDEN))); - assertThat(searchSavedQueryRepository.count(), is(equalTo(3L))); + assertThat(searchSavedQueryRepository.count(), is(equalTo(4L))); } @Test @@ -114,7 +114,7 @@ public void res200_owner() { // THEN: assertThat(result.getStatusCode(), is(equalTo(HttpStatus.NO_CONTENT))); - assertThat(searchSavedQueryRepository.count(), is(equalTo(2L))); + assertThat(searchSavedQueryRepository.count(), is(equalTo(3L))); } @Test @@ -136,6 +136,6 @@ public void res200_admin() { // THEN: assertThat(result.getStatusCode(), is(equalTo(HttpStatus.NO_CONTENT))); - assertThat(searchSavedQueryRepository.count(), is(equalTo(2L))); + assertThat(searchSavedQueryRepository.count(), is(equalTo(3L))); } } diff --git a/src/test/java/org/fairdatapoint/acceptance/search/query/saved/List_GET.java b/src/test/java/org/fairdatapoint/acceptance/search/query/saved/List_GET.java index 90f4ea1b0..fd650b5dc 100644 --- a/src/test/java/org/fairdatapoint/acceptance/search/query/saved/List_GET.java +++ b/src/test/java/org/fairdatapoint/acceptance/search/query/saved/List_GET.java @@ -155,7 +155,7 @@ public void res200_admin() { // THEN: assertThat(result.getStatusCode(), is(equalTo(HttpStatus.OK))); List body = result.getBody(); - assertThat(body.size(), is(equalTo(3))); + assertThat(body.size(), is(equalTo(4))); assertThat(body.get(0).getUuid(), is(equalTo(q1.getUuid()))); assertThat(body.get(1).getUuid(), is(equalTo(q2.getUuid()))); assertThat(body.get(2).getUuid(), is(equalTo(q3.getUuid()))); diff --git a/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/DatabaseBootstrapTests.java b/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/DatabaseBootstrapTests.java new file mode 100644 index 000000000..ec1c50517 --- /dev/null +++ b/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/DatabaseBootstrapTests.java @@ -0,0 +1,86 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.database.db.repository.bootstrap; + + +import jakarta.transaction.Transactional; +import org.fairdatapoint.BaseIntegrationTest; +import org.fairdatapoint.database.db.repository.ApiKeyRepository; +import org.fairdatapoint.database.db.repository.SearchSavedQueryRepository; +import org.fairdatapoint.database.db.repository.UserAccountRepository; +import org.fairdatapoint.entity.apikey.ApiKey; +import org.fairdatapoint.entity.search.SearchSavedQuery; +import org.fairdatapoint.entity.user.UserAccount; +import org.fairdatapoint.util.KnownUUIDs; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestEntityManager; + +import java.util.Optional; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@AutoConfigureTestEntityManager +@Transactional +public class DatabaseBootstrapTests extends BaseIntegrationTest { + @Autowired + private UserAccountRepository userAccountRepository; + + @Autowired + private ApiKeyRepository apiKeyRepository; + + @Autowired + private SearchSavedQueryRepository searchSavedQueryRepository; + + private final String einsteinEmail = "albert.einstein@example.com"; + + @Test + public void testSingleEntityBootstrap() { + final Optional userAccount = userAccountRepository.findByEmail(einsteinEmail); + assertTrue(userAccount.isPresent()); + assertEquals("Albert", userAccount.get().getFirstName()); + assertEquals("Einstein", userAccount.get().getLastName()); + assertEquals(KnownUUIDs.USER_ALBERT_UUID, userAccount.get().getUuid()); + } + + @Test + public void testRelatedEntityBootstrap() { + final UUID einsteinApiKeyUuid = UUID.fromString("a1c00673-24c5-4e0a-bdbe-22e961ee7548"); + final String einsteinApiKeyToken = "a274793046e34a219fd0ea6362fcca61a001500b71724f4c973a017031653c20"; + final Optional apiKey = apiKeyRepository.findByToken(einsteinApiKeyToken); + assertTrue(apiKey.isPresent()); + assertEquals(einsteinEmail, apiKey.get().getUserAccount().getEmail()); + assertEquals(einsteinApiKeyUuid, apiKey.get().getUuid()); + } + + @Test + public void testDuplicateIdEntityOverwriteBootstrap() { + final Optional savedQuery = searchSavedQueryRepository.findByUuid( + UUID.fromString("4c57eff3-4608-40ae-85af-b442cfea0746")); + assertTrue(savedQuery.isPresent()); + assertEquals("isaac.newton@example.com", savedQuery.get().getUserAccount().getEmail()); + assertEquals("Some query 2", savedQuery.get().getName()); + } +} diff --git a/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/FixtureHistoryRepositoryTests.java b/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/FixtureHistoryRepositoryTests.java new file mode 100644 index 000000000..7bfc3a580 --- /dev/null +++ b/src/test/java/org/fairdatapoint/database/db/repository/bootstrap/FixtureHistoryRepositoryTests.java @@ -0,0 +1,82 @@ +/** + * The MIT License + * Copyright © 2016-2024 FAIR Data Team + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.fairdatapoint.database.db.repository.bootstrap; + +import jakarta.transaction.Transactional; +import org.fairdatapoint.BaseIntegrationTest; +import org.fairdatapoint.database.db.repository.FixtureHistoryRepository; +import org.fairdatapoint.entity.bootstrap.FixtureHistory; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestEntityManager; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.test.context.TestPropertySource; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; + + +@AutoConfigureTestEntityManager +@Transactional +@TestPropertySource(properties = "bootstrap.enabled=false") +public class FixtureHistoryRepositoryTests extends BaseIntegrationTest { + @Autowired + FixtureHistoryRepository repository; + + final String filename = "0001-whatever.json"; + + @Test + public void testSave() { + FixtureHistory fixtureHistory = repository.saveAndFlush(new FixtureHistory(filename)); + assertEquals(filename, fixtureHistory.getFilename()); + assertEquals(1, repository.count()); + } + + @Test + public void testSaveWithExistingFilename() { + repository.saveAndFlush(new FixtureHistory(filename)); + assertEquals(1, repository.count()); + assertThrows( + DataIntegrityViolationException.class, + () -> repository.saveAndFlush(new FixtureHistory(filename)), + "filename is not unique, but no exception was raised" + ); + } + + @Test + public void testSaveWithoutFilename() { + assertThrows( + Exception.class, + () -> repository.saveAndFlush(new FixtureHistory()), + "filename was not provided, but no exception was raised" + ); + } + + @Test + public void testFindByFilenameWithExistingFilename() { + repository.saveAndFlush(new FixtureHistory(filename)); + Optional appliedFixture = repository.findByFilename(filename); + assertTrue(appliedFixture.isPresent()); + } +} diff --git a/src/test/java/org/fairdatapoint/service/resource/ResourceDefinitionCacheTest.java b/src/test/java/org/fairdatapoint/service/resource/ResourceDefinitionCacheTest.java index 4800c2d54..07db33f84 100644 --- a/src/test/java/org/fairdatapoint/service/resource/ResourceDefinitionCacheTest.java +++ b/src/test/java/org/fairdatapoint/service/resource/ResourceDefinitionCacheTest.java @@ -32,6 +32,9 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.data.repository.init.ResourceReaderRepositoryPopulator; +import org.springframework.data.repository.support.Repositories; import org.springframework.test.context.ActiveProfiles; import static org.hamcrest.MatcherAssert.assertThat; @@ -53,10 +56,18 @@ public class ResourceDefinitionCacheTest extends BaseIntegrationTest { @Autowired protected Flyway flyway; + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private ResourceReaderRepositoryPopulator populator; + @BeforeEach public void setup() { flyway.clean(); flyway.migrate(); + // re-populate the database using default fixtures + populator.populate(new Repositories(applicationContext)); } @Test diff --git a/src/test/resources/application-testing.yml b/src/test/resources/application-testing.yml index 5e9440e60..24e2b209a 100644 --- a/src/test/resources/application-testing.yml +++ b/src/test/resources/application-testing.yml @@ -17,9 +17,15 @@ spring: username: ${FDP_POSTGRES_USERNAME:fdp} password: ${FDP_POSTGRES_PASSWORD:fdp} flyway: - locations: classpath:test/db/migration,classpath:db/migration + locations: classpath:db/migration fail-on-missing-locations: true clean-disabled: false ping: enabled: false + +bootstrap: + enabled: true + locations: + - file:fixtures + - classpath:test-fixtures diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2-test.xml similarity index 60% rename from src/test/resources/log4j2.xml rename to src/test/resources/log4j2-test.xml index 77fa02165..580d6530a 100644 --- a/src/test/resources/log4j2.xml +++ b/src/test/resources/log4j2-test.xml @@ -6,8 +6,11 @@ - + - + + + + diff --git a/src/test/resources/test-fixtures/0130_test-users-with-api-keys-and-saved-queries.json b/src/test/resources/test-fixtures/0130_test-users-with-api-keys-and-saved-queries.json new file mode 100644 index 000000000..a7d28cf9b --- /dev/null +++ b/src/test/resources/test-fixtures/0130_test-users-with-api-keys-and-saved-queries.json @@ -0,0 +1,121 @@ +[ + { + "_class": "org.fairdatapoint.entity.user.UserAccount", + "uuid": "95589e50-d261-492b-8852-9324e9a66a42", + "firstName": "Admin", + "lastName": "von Universe", + "email": "admin@example.com", + "passwordHash": "$2a$10$L.0OZ8QjV3yLhoCDvU04gu.WP1wGQih41MsBdvtQOshJJntaugBxe", + "role": "ADMIN" + }, + { + "_class": "org.fairdatapoint.entity.user.UserAccount", + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9", + "firstName": "Albert", + "lastName": "Einstein", + "email": "albert.einstein@example.com", + "passwordHash": "$2a$10$hZF1abbZ48Tf.3RndC9W6OlDt6gnBoD/2HbzJayTs6be7d.5DbpnW", + "role": "USER" + }, + { + "_class": "org.fairdatapoint.entity.user.UserAccount", + "uuid": "b5b92c69-5ed9-4054-954d-0121c29b6800", + "firstName": "Nikola", + "lastName": "Tesla", + "email": "nikola.tesla@example.com", + "passwordHash": "$2a$10$tMbZUZg9AbYL514R.hZ0tuzvfZJR5NQhSVeJPTQhNwPf6gv/cvrna", + "role": "USER" + }, + { + "_class": "org.fairdatapoint.entity.user.UserAccount", + "uuid": "8d1a4c06-bb0e-4d03-a01f-14fa49bbc152", + "firstName": "Isaac", + "lastName": "Newton", + "email": "isaac.newton@example.com", + "passwordHash": "$2a$10$DLkI7NAZDzWVaKG1lVtloeoPNLPoAgDDBqQKQiSAYDZXrf2QKkuHC", + "role": "USER" + }, + + { + "_class": "org.fairdatapoint.entity.apikey.ApiKey", + "uuid": "a1c00673-24c5-4e0a-bdbe-22e961ee7548", + "token": "a274793046e34a219fd0ea6362fcca61a001500b71724f4c973a017031653c20", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + }, + { + "_class": "org.fairdatapoint.entity.apikey.ApiKey", + "uuid": "62657760-21fe-488c-a0ea-f612a70493da", + "token": "dd5dc3b53b6145cfa9f6c58b72ebad21cd2f860ace62451ba4e3c74a0e63540a", + "userAccount": { + "uuid": "b5b92c69-5ed9-4054-954d-0121c29b6800" + } + }, + + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "d31e3da1-2cfa-4b55-a8cb-71d1acf01aef", + "name": "All datasets", + "description": "Quickly query all datasets (DCAT)", + "type": "PUBLIC", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity rdf:type dcat:Dataset .", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + }, + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "c7d0b6a0-5b0a-4b0e-9b0a-9b0a9b0a9b0a", + "name": "All distributions", + "description": "Quickly query all distributions (DCAT)", + "type": "INTERNAL", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity rdf:type dcat:Distribution .", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + }, + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "97da9119-834e-4687-8321-3df157547178", + "name": "Things with data", + "description": "This is a private query of Albert Einstein", + "type": "PRIVATE", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity ?relationPredicate ?relationObject .\nFILTER isLiteral(?relationObject)\nFILTER CONTAINS(LCASE(str(?relationObject)), LCASE(\"data\"))", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "7e64818d-6276-46fb-8bb1-732e6e09f7e9" + } + }, + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "4c57eff3-4608-40ae-85af-b442cfea0746", + "name": "Some query 1", + "description": "Example query", + "type": "PRIVATE", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity rdf:type dcat:Dataset .", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "8d1a4c06-bb0e-4d03-a01f-14fa49bbc152" + } + }, + { + "_class" : "org.fairdatapoint.entity.search.SearchSavedQuery", + "uuid": "4c57eff3-4608-40ae-85af-b442cfea0746", + "name": "Some query 2", + "description": "Example query (with same UUID as previous)", + "type": "PRIVATE", + "varPrefixes": "PREFIX dcat: ", + "varGraphPattern": "?entity rdf:type dcat:Dataset .", + "varOrdering": "ASC(?title)", + "userAccount": { + "uuid": "8d1a4c06-bb0e-4d03-a01f-14fa49bbc152" + } + } +] \ No newline at end of file diff --git a/src/test/resources/test-fixtures/0500_test-settings.json b/src/test/resources/test-fixtures/0500_test-settings.json new file mode 100644 index 000000000..18e51cff0 --- /dev/null +++ b/src/test/resources/test-fixtures/0500_test-settings.json @@ -0,0 +1,140 @@ +[ + { + "_class": "org.fairdatapoint.entity.settings.Settings", + "uuid": "00000000-0000-0000-0000-000000000000", + "appTitle": "FAIR Data Point", + "appSubtitle": "FDP Development Instance", + "pingEnabled": false, + "pingEndpoints": [ + "https://home.fairdatapoint.org" + ], + "autocompleteSearchNamespace": true + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsAutocompleteSource", + "uuid": "d4045a98-dd25-493e-a0b1-d704921c0930", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "rdfType": "http://www.w3.org/2000/01/rdf-schema#Class", + "sparqlEndpoint": "http://localhost:3030/ds/query", + "sparqlQuery": "SELECT DISTINCT ?uri ?label\nWHERE { ?uri a .\n?uri ?label .\nFILTER regex(?label, \".*%s.*\", \"i\") }\nORDER BY ?label", + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsMetric", + "uuid": "8435491b-c16c-4457-ae94-e0f4128603d5", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "metricUri": "https://purl.org/fair-metrics/FM_F1A", + "resourceUri": "https://www.ietf.org/rfc/rfc3986.txt", + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsMetric", + "uuid": "af93d36a-0af0-4054-8c00-2675d460b231", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "metricUri": "https://purl.org/fair-metrics/FM_A1.1", + "resourceUri": "https://www.wikidata.org/wiki/Q8777", + "orderPriority": 2 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilter", + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "type": "IRI", + "label": "Type", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "queryRecords": false, + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "b48c2c7f-d7fb-47ae-a72c-b1b360e16f6e", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "Catalog", + "value": "http://www.w3.org/ns/dcat#Catalog", + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "3e1598ac-9d29-47f0-8e7b-3c26ca0134a0", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "Dataset", + "value": "http://www.w3.org/ns/dcat#Dataset", + "orderPriority": 2 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "5697d8d9-f09d-4ebe-b834-b37eb0624c3f", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "Distribution", + "value": "http://www.w3.org/ns/dcat#Distribution", + "orderPriority": 3 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "022c3bc6-0598-408c-8d2e-b486dafb73dd", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "Data Service", + "value": "http://www.w3.org/ns/dcat#DataService", + "orderPriority": 4 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "7cee5591-8620-4fea-b883-a94285012b8d", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "Metadata Service", + "value": "https://w3id.org/fdp/fdp-o#MetadataService", + "orderPriority": 5 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilterItem", + "uuid": "9d661dca-8017-4dba-b930-cd2834ea59e8", + "filter": { + "uuid": "57a98728-ce8c-4e7f-b0f8-94e2668b44d3" + }, + "label": "FAIR Data Point", + "value": "https://w3id.org/fdp/fdp-o#FAIRDataPoint", + "orderPriority": 6 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilter", + "uuid": "26913eb3-67dd-45c9-b8ff-4c97e8162a9b", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "type": "IRI", + "label": "License", + "predicate": "http://purl.org/dc/terms/license", + "queryRecords": true, + "orderPriority": 2 + }, + { + "_class": "org.fairdatapoint.entity.settings.SettingsSearchFilter", + "uuid": "cb25afb4-6169-42f8-bde5-181c803773a8", + "settings": { + "uuid": "00000000-0000-0000-0000-000000000000" + }, + "type": "IRI", + "label": "Version", + "predicate": "http://www.w3.org/ns/dcat#version", + "queryRecords": true, + "orderPriority": 3 + } +] diff --git a/src/test/resources/test-fixtures/0600_test-schemas.json b/src/test/resources/test-fixtures/0600_test-schemas.json new file mode 100644 index 000000000..75bf756d4 --- /dev/null +++ b/src/test/resources/test-fixtures/0600_test-schemas.json @@ -0,0 +1,271 @@ +[ + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "e8b34158-3858-45c7-8e3e-d1e671dd9929" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "53619e58-2bb0-4baf-afd8-00c5d01ff8a8", + "schema": { "uuid": "e8b34158-3858-45c7-8e3e-d1e671dd9929" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LATEST", + "published": true, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "bfa79edf-00b7-4a04-b5a6-a5144f1a77b7" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "cb9f6cd7-97af-45d0-b23d-d0aab23607d8", + "schema": { "uuid": "bfa79edf-00b7-4a04-b5a6-a5144f1a77b7" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "DRAFT", + "published": false, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "fe98adbb-6a2c-4c7a-b2b2-a72db5140c61" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "f0a4b358-69a3-44e6-9436-c68a56a9f2f2", + "schema": { "uuid": "fe98adbb-6a2c-4c7a-b2b2-a72db5140c61" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "INTERNAL", + "state": "LATEST", + "published": true, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "978e5c1c-268d-4822-b60b-07d3eccc6896" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "d7acec53-5ac9-4502-9bfa-92d1e9f79a24", + "schema": { "uuid": "978e5c1c-268d-4822-b60b-07d3eccc6896" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LEGACY", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "67896adc-b431-431d-8296-f0b80d8de412", + "schema": { "uuid": "978e5c1c-268d-4822-b60b-07d3eccc6896" }, + "previousVersion": { "uuid": "d7acec53-5ac9-4502-9bfa-92d1e9f79a24" }, + "version": "0.2.0", + "name": "Custom schema", + "description": "Custom schema V2", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LEGACY", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "c62d4a97-baac-40b8-b6ea-e43b06ec78bd", + "schema": { "uuid": "978e5c1c-268d-4822-b60b-07d3eccc6896" }, + "previousVersion": { "uuid": "67896adc-b431-431d-8296-f0b80d8de412" }, + "version": "0.3.0", + "name": "Custom schema", + "description": "Custom schema V3", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LATEST", + "published": false, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "e7078309-cb4c-47b9-9ef8-057487b3da58" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "a17c25ad-e8d3-4338-bb3e-eda76d2fc32c", + "schema": { "uuid": "e7078309-cb4c-47b9-9ef8-057487b3da58" }, + "version": "0.0.0", + "name": "Custom schema", + "description": "Custom schema draft", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "DRAFT", + "published": false, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "123e48d2-9995-4b44-8b2c-9c81bdbf2dd2" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "fb24f92b-187f-4d53-b744-73024b537f30", + "schema": { "uuid": "123e48d2-9995-4b44-8b2c-9c81bdbf2dd2" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LEGACY", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "6011adfa-f8da-478d-86ea-84bb644b458b", + "schema": { "uuid": "123e48d2-9995-4b44-8b2c-9c81bdbf2dd2" }, + "previousVersion": { "uuid": "fb24f92b-187f-4d53-b744-73024b537f30" }, + "version": "0.2.0", + "name": "Custom schema", + "description": "Custom schema V2", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LATEST", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "6b84ec86-2096-48db-bfc7-23506b8c080c", + "schema": { "uuid": "123e48d2-9995-4b44-8b2c-9c81bdbf2dd2" }, + "previousVersion": { "uuid": "6011adfa-f8da-478d-86ea-84bb644b458b" }, + "version": "0.0.0", + "name": "Custom schema", + "description": "Custom schema draft", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "DRAFT", + "published": false, + "abstractSchema": false + }, + + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchema", + "uuid": "7c8b8699-ca9f-4d14-86e2-2299b27c5711" + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "4e44fb19-b9e0-46e9-957a-e7aa3adac7bf", + "schema": { "uuid": "7c8b8699-ca9f-4d14-86e2-2299b27c5711" }, + "version": "0.1.0", + "name": "Custom schema", + "description": "Custom schema V1", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LEGACY", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "abcf3a21-6f9a-45dc-a71a-4dde4440c81a", + "schema": { "uuid": "7c8b8699-ca9f-4d14-86e2-2299b27c5711" }, + "previousVersion": { "uuid": "4e44fb19-b9e0-46e9-957a-e7aa3adac7bf" }, + "version": "0.2.0", + "name": "Custom schema", + "description": "Custom schema V2", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "LATEST", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "1bdca611-c96e-4304-b1f3-030d282ef529", + "metadataSchemaVersion": { "uuid": "abcf3a21-6f9a-45dc-a71a-4dde4440c81a" }, + "extendedMetadataSchema": { "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" }, + "orderPriority": 0 + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "1bdca611-c96e-4304-b1f3-030d282ef530", + "metadataSchemaVersion": { "uuid": "abcf3a21-6f9a-45dc-a71a-4dde4440c81a" }, + "extendedMetadataSchema": { "uuid": "123e48d2-9995-4b44-8b2c-9c81bdbf2dd2" }, + "orderPriority": 1 + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaVersion", + "uuid": "a6d609ff-905f-4edd-bdb1-2dce000c9a45", + "schema": { "uuid": "7c8b8699-ca9f-4d14-86e2-2299b27c5711" }, + "previousVersion": { "uuid": "abcf3a21-6f9a-45dc-a71a-4dde4440c81a" }, + "version": "0.0.0", + "name": "Custom schema", + "description": "Custom schema draft", + "definition": "", + "targetClasses": [ + "http://www.w3.org/2000/01/rdf-schema#Class" + ], + "type": "CUSTOM", + "state": "DRAFT", + "published": false, + "abstractSchema": false + }, + { + "_class": "org.fairdatapoint.entity.schema.MetadataSchemaExtension", + "uuid": "53e3db46-8fe4-47ce-873e-ed7db94e73b3", + "metadataSchemaVersion": { "uuid": "a6d609ff-905f-4edd-bdb1-2dce000c9a45" }, + "extendedMetadataSchema": { "uuid": "6a668323-3936-4b53-8380-a4fd2ed082ee" }, + "orderPriority": 0 + } +] diff --git a/src/test/resources/test/db/migration/V0001.1__dev-data-users.sql b/src/test/resources/test/db/migration/V0001.1__dev-data-users.sql deleted file mode 100644 index cd8e0a967..000000000 --- a/src/test/resources/test/db/migration/V0001.1__dev-data-users.sql +++ /dev/null @@ -1,61 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- User Accounts -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('95589e50-d261-492b-8852-9324e9a66a42', 'Admin', 'von Universe', 'admin@example.com', '$2a$10$L.0OZ8QjV3yLhoCDvU04gu.WP1wGQih41MsBdvtQOshJJntaugBxe', 'ADMIN', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('7e64818d-6276-46fb-8bb1-732e6e09f7e9', 'Albert', 'Einstein', 'albert.einstein@example.com', '$2a$10$hZF1abbZ48Tf.3RndC9W6OlDt6gnBoD/2HbzJayTs6be7d.5DbpnW', 'USER', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('b5b92c69-5ed9-4054-954d-0121c29b6800', 'Nikola', 'Tesla', 'nikola.tesla@example.com', '$2a$10$tMbZUZg9AbYL514R.hZ0tuzvfZJR5NQhSVeJPTQhNwPf6gv/cvrna', 'USER', NOW(), NOW()); - -INSERT INTO public.user_account (uuid, first_name, last_name, email, password_hash, user_role, created_at, updated_at) -VALUES ('8d1a4c06-bb0e-4d03-a01f-14fa49bbc152', 'Isaac', 'Newton', 'isaac.newton@example.com', '$2a$10$DLkI7NAZDzWVaKG1lVtloeoPNLPoAgDDBqQKQiSAYDZXrf2QKkuHC', 'USER', NOW(), NOW()); - --- API Keys -INSERT INTO public.api_key (uuid, token, user_account_id, created_at, updated_at) -VALUES ('a1c00673-24c5-4e0a-bdbe-22e961ee7548', 'a274793046e34a219fd0ea6362fcca61a001500b71724f4c973a017031653c20', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', NOW(), NOW()); - -INSERT INTO public.api_key (uuid, token, user_account_id, created_at, updated_at) -VALUES ('62657760-21fe-488c-a0ea-f612a70493da', 'dd5dc3b53b6145cfa9f6c58b72ebad21cd2f860ace62451ba4e3c74a0e63540a', 'b5b92c69-5ed9-4054-954d-0121c29b6800', NOW(), NOW()); - --- Saved Search Queries -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('d31e3da1-2cfa-4b55-a8cb-71d1acf01aef', 'All datasets', 'Quickly query all datasets (DCAT)', 'PUBLIC', - 'PREFIX dcat: ', '?entity rdf:type dcat:Dataset .', 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', - NOW(), NOW()); - -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('c7d0b6a0-5b0a-4b0e-9b0a-9b0a9b0a9b0a', 'All distributions', 'Quickly query all distributions (DCAT)', 'INTERNAL', - 'PREFIX dcat: ', '?entity rdf:type dcat:Distribution .', 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', - NOW(), NOW()); - -INSERT INTO public.search_saved_query (uuid, name, description, type, var_prefixes, var_graph_pattern, var_ordering, user_account_id, created_at, updated_at) -VALUES ('97da9119-834e-4687-8321-3df157547178', 'Things with data', 'This is private query of Nikola Tesla!', 'PRIVATE', - 'PREFIX dcat: ', -'?entity ?relationPredicate ?relationObject . -FILTER isLiteral(?relationObject) -FILTER CONTAINS(LCASE(str(?relationObject)), LCASE("data"))', - 'ASC(?title)', '7e64818d-6276-46fb-8bb1-732e6e09f7e9', NOW(), NOW()); diff --git a/src/test/resources/test/db/migration/V0001.2__dev-data-schemas.sql b/src/test/resources/test/db/migration/V0001.2__dev-data-schemas.sql deleted file mode 100644 index 310c8377f..000000000 --- a/src/test/resources/test/db/migration/V0001.2__dev-data-schemas.sql +++ /dev/null @@ -1,505 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Resource -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('6a668323-3936-4b53-8380-a4fd2ed082ee', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('71d77460-f919-4f72-b265-ed26567fe361', - '6a668323-3936-4b53-8380-a4fd2ed082ee', - NULL, - '1.0.0', - 'Resource', - '', - '@prefix : . - @prefix dash: . - @prefix dcat: . - @prefix dct: . - @prefix foaf: . - @prefix sh: . - @prefix xsd: . - - :ResourceShape a sh:NodeShape ; - sh:targetClass dcat:Resource ; - sh:property [ - sh:path dct:title ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - sh:order 1 ; - ], [ - sh:path dct:description ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextAreaEditor ; - sh:order 2 ; - ], [ - sh:path dct:publisher ; - sh:node :AgentShape ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:BlankNodeEditor ; - sh:order 3 ; - ], [ - sh:path dcat:version ; - sh:name "version" ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 4 ; - ], [ - sh:path dct:language ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:defaultValue ; - sh:order 5 ; - ], [ - sh:path dct:license ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:defaultValue ; - sh:order 6 ; - ], [ - sh:path dct:rights ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 7 ; - ] . - - :AgentShape a sh:NodeShape ; - sh:targetClass foaf:Agent ; - sh:property [ - sh:path foaf:name ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - ] . - ', - ARRAY ['http://www.w3.org/ns/dcat#Resource'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - TRUE, - NULL, - NULL, - NOW(), - NOW()); - --- Data Service -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('89d94c1b-f6ff-4545-ba9b-120b2d1921d0', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('9111d436-fe58-4bd5-97ae-e6f86bc2997a', - '89d94c1b-f6ff-4545-ba9b-120b2d1921d0', - NULL, - '1.0.0', - 'Data Service', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DataServiceShape a sh:NodeShape ; - sh:targetClass dcat:DataService ; - sh:property [ - sh:path dcat:endpointURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - sh:order 20 ; - ] , [ - sh:path dcat:endpointDescription ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextAreaEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; -] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('2efc8366-541d-493f-8661-69ad8f72dfa1', '9111d436-fe58-4bd5-97ae-e6f86bc2997a', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Metadata Service -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('36b22b70-6203-4dd2-9fb6-b39a776bf467', - '6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', - NULL, - '1.0.0', - 'Metadata Service', - '', - '@prefix : . -@prefix fdp: . -@prefix sh: . - -:MetadataServiceShape a sh:NodeShape ; - sh:targetClass fdp:MetadataService . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService', 'https://w3id.org/fdp/fdp-o#MetadataService'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('8742361b-cd00-4167-b859-e45fa36d0cb7', '36b22b70-6203-4dd2-9fb6-b39a776bf467', '89d94c1b-f6ff-4545-ba9b-120b2d1921d0', 0); - --- FAIR Data Point -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('a92958ab-a414-47e6-8e17-68ba96ba3a2b', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('4e64208d-f102-45a0-96e3-17b002e6213e', - 'a92958ab-a414-47e6-8e17-68ba96ba3a2b', - NULL, - '1.0.0', - 'FAIR Data Point', - '', - '@prefix : . -@prefix dash: . -@prefix dct: . -@prefix fdp: . -@prefix sh: . -@prefix xsd: . - -:FDPShape a sh:NodeShape ; - sh:targetClass fdp:FAIRDataPoint ; - sh:property [ - sh:path fdp:startDate ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 40 ; - ] , [ - sh:path fdp:endDate ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 41 ; - ] , [ - sh:path fdp:uiLanguage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - sh:defaultValue ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 42 ; - ] , [ - sh:path fdp:metadataIdentifier ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 43 ; - ] , [ - sh:path fdp:metadataIssued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 44 ; - ] , [ - sh:path fdp:metadataModified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 45 ; - ] . - ', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#DataService', 'https://w3id.org/fdp/fdp-o#MetadataService', 'https://w3id.org/fdp/fdp-o#FAIRDataPoint'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('afebd441-8aa5-464d-bc3c-033f175449b4', '4e64208d-f102-45a0-96e3-17b002e6213e', '6f7a5a76-6185-4bd0-9fe9-62ecc90c9bad', 0); - --- Catalog -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('c9640671-945d-4114-88fb-e81314cb7ab2', - '2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', - NULL, - '1.0.0', - 'Catalog', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix foaf: . -@prefix sh: . -@prefix xsd: . - -:CatalogShape a sh:NodeShape ; - sh:targetClass dcat:Catalog ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ], [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ], [ - sh:path foaf:homePage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 22 ; - ], [ - sh:path dcat:themeTaxonomy ; - sh:nodeKind sh:IRI ; - dash:viewer dash:LabelViewer ; - sh:order 23 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Catalog'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('e75cb601-318d-41ea-9a8b-32e0749c80a7', 'c9640671-945d-4114-88fb-e81314cb7ab2', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Dataset -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('9cc3c89a-76cf-4639-a71f-652627af51db', - '866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', - NULL, - '1.0.0', - 'Dataset', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DatasetShape a sh:NodeShape ; - sh:targetClass dcat:Dataset ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ], [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ], [ - sh:path dcat:theme ; - sh:nodeKind sh:IRI ; - sh:minCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 22 ; - ], [ - sh:path dcat:contactPoint ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 23 ; - ], [ - sh:path dcat:keyword ; - sh:nodeKind sh:Literal ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 24 ; - ], [ - sh:path dcat:landingPage ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - dash:viewer dash:LabelViewer ; - sh:order 25 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Dataset'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('da13ba37-09f8-4937-9055-e3ee3aefc57c', '9cc3c89a-76cf-4639-a71f-652627af51db', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); - --- Distribution -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('ebacbf83-cd4f-4113-8738-d73c0735b0ab', NOW(), NOW()); -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('3cda8cd3-b08b-4797-822d-d3f3e83c466a', - 'ebacbf83-cd4f-4113-8738-d73c0735b0ab', - NULL, - '1.0.0', - 'Distribution', - '', - '@prefix : . -@prefix dash: . -@prefix dcat: . -@prefix dct: . -@prefix sh: . -@prefix xsd: . - -:DistributionShape a sh:NodeShape ; - sh:targetClass dcat:Distribution ; - sh:property [ - sh:path dct:issued ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 20 ; - ] , [ - sh:path dct:modified ; - sh:datatype xsd:dateTime ; - sh:maxCount 1 ; - dash:editor dash:DatePickerEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 21 ; - ] , [ - sh:path dcat:accessURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - sh:order 22 ; - ] , [ - sh:path dcat:downloadURL ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - dash:editor dash:URIEditor ; - sh:order 23 ; - ] , [ - sh:path dcat:mediaType ; - sh:nodeKind sh:Literal ; - sh:minCount 1 ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 24 ; - ] , [ - sh:path dcat:format ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 25 ; - ] , [ - sh:path dcat:byteSize ; - sh:nodeKind sh:Literal ; - sh:maxCount 1 ; - dash:editor dash:TextFieldEditor ; - dash:viewer dash:LiteralViewer ; - sh:order 26 ; - ] . -', - ARRAY ['http://www.w3.org/ns/dcat#Resource', 'http://www.w3.org/ns/dcat#Distribution'], - 'INTERNAL', - NULL, - NULL, - 'LATEST', - FALSE, - FALSE, - NULL, - NULL, - NOW(), - NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('a3b16a4e-cac7-4b71-a3de-94bb86714b5b', '3cda8cd3-b08b-4797-822d-d3f3e83c466a', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); diff --git a/src/test/resources/test/db/migration/V0001.3__dev-data-rds.sql b/src/test/resources/test/db/migration/V0001.3__dev-data-rds.sql deleted file mode 100644 index ed4f047ff..000000000 --- a/src/test/resources/test/db/migration/V0001.3__dev-data-rds.sql +++ /dev/null @@ -1,68 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Distribution -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('02c649de-c579-43bb-b470-306abdc808c7', 'Distribution', 'distribution', now(), now()); - -INSERT INTO resource_definition_link (uuid, resource_definition_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('660a1821-a5d2-48d0-a26b-0c6d5bac3de4', '02c649de-c579-43bb-b470-306abdc808c7', 'Access online', 'http://www.w3.org/ns/dcat#accessURL', 1, now(), now()); - -INSERT INTO resource_definition_link (uuid, resource_definition_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('c2eaebb8-4d8d-469d-8736-269adeded996', '02c649de-c579-43bb-b470-306abdc808c7', 'Download', 'http://www.w3.org/ns/dcat#downloadURL', 2, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('bbf4ecb3-c529-4c02-955c-7160755debf5', '02c649de-c579-43bb-b470-306abdc808c7', 'ebacbf83-cd4f-4113-8738-d73c0735b0ab', 1); - --- Dataset -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('2f08228e-1789-40f8-84cd-28e3288c3604', 'Dataset', 'dataset', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('9f138a13-9d45-4371-b763-0a3b9e0ec912', '2f08228e-1789-40f8-84cd-28e3288c3604', '02c649de-c579-43bb-b470-306abdc808c7', 'http://www.w3.org/ns/dcat#distribution', 'Distributions', NULL, 1, now(), now()); - -INSERT INTO resource_definition_child_metadata (uuid, resource_definition_child_id, title, property_uri, order_priority, created_at, updated_at) -VALUES ('723e95d3-1696-45e2-9429-f6e98e3fb893', '9f138a13-9d45-4371-b763-0a3b9e0ec912', 'Media Type', 'http://www.w3.org/ns/dcat#mediaType', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('b8a0ed37-42a1-487e-8842-09fe082c4cc6', '2f08228e-1789-40f8-84cd-28e3288c3604', '866d7fb8-5982-4215-9c7c-18d0ed1bd5f3', 1); - --- Catalog -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('a0949e72-4466-4d53-8900-9436d1049a4b', 'Catalog', 'catalog', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('e9f0f5d3-2a93-4aa3-9dd0-acb1d76f54fc', 'a0949e72-4466-4d53-8900-9436d1049a4b', '2f08228e-1789-40f8-84cd-28e3288c3604', 'http://www.w3.org/ns/dcat#dataset', 'Datasets', 'http://www.w3.org/ns/dcat#theme', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('e4df9510-a3ad-4e3b-a1a9-5fc330d8b1f0', 'a0949e72-4466-4d53-8900-9436d1049a4b', '2aa7ba63-d27a-4c0e-bfa6-3a4e250f4660', 1); - --- FAIR Data Point -INSERT INTO resource_definition (uuid, name, url_prefix, created_at, updated_at) -VALUES ('77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'FAIR Data Point', '', now(), now()); - -INSERT INTO resource_definition_child (uuid, source_resource_definition_id, target_resource_definition_id, relation_uri, title, tags_uri, order_priority, created_at, updated_at) -VALUES ('b8648597-8fbd-4b89-9e30-5eab82675e42', '77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'a0949e72-4466-4d53-8900-9436d1049a4b', 'https://w3id.org/fdp/fdp-o#metadataCatalog', 'Catalogs', 'http://www.w3.org/ns/dcat#themeTaxonomy', 1, now(), now()); - -INSERT INTO metadata_schema_usage (uuid, resource_definition_id, metadata_schema_id, order_priority) -VALUES ('9b3a32a8-a14c-4eb0-ba02-3aa8e13a8f11', '77aaad6a-0136-4c6e-88b9-07ffccd0ee4c', 'a92958ab-a414-47e6-8e17-68ba96ba3a2b', 1); diff --git a/src/test/resources/test/db/migration/V0001.4__dev-data-membership.sql b/src/test/resources/test/db/migration/V0001.4__dev-data-membership.sql deleted file mode 100644 index 8240e0bfe..000000000 --- a/src/test/resources/test/db/migration/V0001.4__dev-data-membership.sql +++ /dev/null @@ -1,43 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - -INSERT INTO membership (uuid, name, allowed_entities, created_at, updated_at) -VALUES ('49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 'Owner', ARRAY ['a0949e72-4466-4d53-8900-9436d1049a4b', '2f08228e-1789-40f8-84cd-28e3288c3604', '02c649de-c579-43bb-b470-306abdc808c7'], NOW(), NOW()); - -INSERT INTO membership (uuid, name, allowed_entities, created_at, updated_at) -VALUES ('87a2d984-7db2-43f6-805c-6b0040afead5', 'Data Provider', ARRAY ['a0949e72-4466-4d53-8900-9436d1049a4b'], NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('e0d9f853-637b-4c50-9ad9-07b6349bf76f', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 2, 'W', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('de4e4f85-f11d-475b-b6f0-33bdfe5f923a', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 4, 'C', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('60bebbf0-210d-4b05-af85-ca1b58546261', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 8, 'D', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('36c3b6e9-f2e3-48b7-bae1-4dc3196a3657', '49f2bcfd-ef0a-4a3a-a1a3-0fc72a6892a8', 16, 'A', NOW(), NOW()); - -INSERT INTO membership_permission (uuid, membership_id, mask, code, created_at, updated_at) -VALUES ('589d09d3-1c29-4c6f-97fc-6ea4e007fb85', '87a2d984-7db2-43f6-805c-6b0040afead5', 4, 'C', NOW(), NOW()); diff --git a/src/test/resources/test/db/migration/V0001.5__dev-settings.sql b/src/test/resources/test/db/migration/V0001.5__dev-settings.sql deleted file mode 100644 index 75496e02a..000000000 --- a/src/test/resources/test/db/migration/V0001.5__dev-settings.sql +++ /dev/null @@ -1,73 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Settings -INSERT INTO settings (uuid, app_title, app_subtitle, ping_enabled, ping_endpoints, autocomplete_search_ns, created_at, updated_at) -VALUES ('00000000-0000-0000-0000-000000000000', 'FAIR Data Point', 'FDP Development Instance', False, ARRAY ['https://home.fairdatapoint.org'], True, now(), now()); - --- Autocomplete Sources -INSERT INTO settings_autocomplete_source (uuid, settings_id, rdf_type, sparql_endpoint, sparql_query, order_priority, created_at, updated_at) -VALUES ('d4045a98-dd25-493e-a0b1-d704921c0930', '00000000-0000-0000-0000-000000000000', 'http://www.w3.org/2000/01/rdf-schema#Class', 'http://localhost:3030/ds/query', -'SELECT DISTINCT ?uri ?label -WHERE { ?uri a . -?uri ?label . -FILTER regex(?label, ".*%s.*", "i") } -ORDER BY ?label', - 1, now(), now()); - --- Search Filters: Type -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('57a98728-ce8c-4e7f-b0f8-94e2668b44d3', '00000000-0000-0000-0000-000000000000', 'IRI', 'Type', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', False, 1, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('b48c2c7f-d7fb-47ae-a72c-b1b360e16f6e', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Catalog', 'http://www.w3.org/ns/dcat#Catalog', 1, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('3e1598ac-9d29-47f0-8e7b-3c26ca0134a0', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Dataset', 'http://www.w3.org/ns/dcat#Dataset', 2, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('5697d8d9-f09d-4ebe-b834-b37eb0624c3f', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Distribution', 'http://www.w3.org/ns/dcat#Distribution', 3, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('022c3bc6-0598-408c-8d2e-b486dafb73dd', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Data Service', 'http://www.w3.org/ns/dcat#DataService', 4, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('7cee5591-8620-4fea-b883-a94285012b8d', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'Metadata Service', 'https://w3id.org/fdp/fdp-o#MetadataService', 5, now(), now()); - -INSERT INTO settings_search_filter_item (uuid, filter_id, label, value, order_priority, created_at, updated_at) -VALUES ('9d661dca-8017-4dba-b930-cd2834ea59e8', '57a98728-ce8c-4e7f-b0f8-94e2668b44d3', 'FAIR Data Point', 'https://w3id.org/fdp/fdp-o#FAIRDataPoint', 6, now(), now()); - --- Search Filters: License -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('26913eb3-67dd-45c9-b8ff-4c97e8162a9b', '00000000-0000-0000-0000-000000000000', 'IRI', 'License', 'http://purl.org/dc/terms/license', True, 2, now(), now()); - --- Search Filters: License -INSERT INTO settings_search_filter (uuid, settings_id, type, label, predicate, query_records, order_priority, created_at, updated_at) -VALUES ('cb25afb4-6169-42f8-bde5-181c803773a8', '00000000-0000-0000-0000-000000000000', 'IRI', 'Version', 'http://www.w3.org/ns/dcat#version', True, 3, now(), now()); - --- Metrics -INSERT INTO settings_metric (uuid, settings_id, metric_uri, resource_uri, order_priority, created_at, updated_at) -VALUES ('8435491b-c16c-4457-ae94-e0f4128603d5', '00000000-0000-0000-0000-000000000000', 'https://purl.org/fair-metrics/FM_F1A', 'https://www.ietf.org/rfc/rfc3986.txt', 1, now(), now()); - -INSERT INTO settings_metric (uuid, settings_id, metric_uri, resource_uri, order_priority, created_at, updated_at) -VALUES ('af93d36a-0af0-4054-8c00-2675d460b231', '00000000-0000-0000-0000-000000000000', 'https://purl.org/fair-metrics/FM_A1.1', 'https://www.wikidata.org/wiki/Q8777', 2, now(), now()); diff --git a/src/test/resources/test/db/migration/V0001.6__test-schemas.sql b/src/test/resources/test/db/migration/V0001.6__test-schemas.sql deleted file mode 100644 index b340329e8..000000000 --- a/src/test/resources/test/db/migration/V0001.6__test-schemas.sql +++ /dev/null @@ -1,161 +0,0 @@ --- --- The MIT License --- Copyright © 2016-2024 FAIR Data Team --- --- Permission is hereby granted, free of charge, to any person obtaining a copy --- of this software and associated documentation files (the "Software"), to deal --- in the Software without restriction, including without limitation the rights --- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --- copies of the Software, and to permit persons to whom the Software is --- furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in --- all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN --- THE SOFTWARE. --- - --- Custom with one version -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('e8b34158-3858-45c7-8e3e-d1e671dd9929', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('53619e58-2bb0-4baf-afd8-00c5d01ff8a8', 'e8b34158-3858-45c7-8e3e-d1e671dd9929', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LATEST', TRUE, FALSE, NULL, - NULL, NOW(), NOW()); - --- Custom with one draft -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('bfa79edf-00b7-4a04-b5a6-a5144f1a77b7', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('cb9f6cd7-97af-45d0-b23d-d0aab23607d8', 'bfa79edf-00b7-4a04-b5a6-a5144f1a77b7', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'DRAFT', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - - --- Custom with one version INTERNAL -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('fe98adbb-6a2c-4c7a-b2b2-a72db5140c61', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('f0a4b358-69a3-44e6-9436-c68a56a9f2f2', 'fe98adbb-6a2c-4c7a-b2b2-a72db5140c61', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'INTERNAL', NULL, NULL, 'LATEST', TRUE, FALSE, NULL, - NULL, NOW(), NOW()); - --- Custom with multiple versions -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('978e5c1c-268d-4822-b60b-07d3eccc6896', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('d7acec53-5ac9-4502-9bfa-92d1e9f79a24', '978e5c1c-268d-4822-b60b-07d3eccc6896', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LEGACY', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('67896adc-b431-431d-8296-f0b80d8de412', '978e5c1c-268d-4822-b60b-07d3eccc6896', 'd7acec53-5ac9-4502-9bfa-92d1e9f79a24', '0.2.0', 'Custom schema', - 'Custom schema V2', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LEGACY', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('c62d4a97-baac-40b8-b6ea-e43b06ec78bd', '978e5c1c-268d-4822-b60b-07d3eccc6896', '67896adc-b431-431d-8296-f0b80d8de412', '0.3.0', 'Custom schema', - 'Custom schema V3', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LATEST', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - --- Custom with draft -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('e7078309-cb4c-47b9-9ef8-057487b3da58', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('a17c25ad-e8d3-4338-bb3e-eda76d2fc32c', 'e7078309-cb4c-47b9-9ef8-057487b3da58', NULL, '0.0.0', 'Custom schema', - 'Custom schema draft', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'DRAFT', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - --- Custom with multiple versions and draft -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('123e48d2-9995-4b44-8b2c-9c81bdbf2dd2', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('fb24f92b-187f-4d53-b744-73024b537f30', '123e48d2-9995-4b44-8b2c-9c81bdbf2dd2', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LEGACY', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('6011adfa-f8da-478d-86ea-84bb644b458b', '123e48d2-9995-4b44-8b2c-9c81bdbf2dd2', 'fb24f92b-187f-4d53-b744-73024b537f30', '0.2.0', 'Custom schema', - 'Custom schema V2', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LATEST', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('6b84ec86-2096-48db-bfc7-23506b8c080c', '123e48d2-9995-4b44-8b2c-9c81bdbf2dd2', '6011adfa-f8da-478d-86ea-84bb644b458b', '0.0.0', 'Custom schema', - 'Custom schema draft', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'DRAFT', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - --- Custom with multiple versions and draft and extends -INSERT INTO metadata_schema (uuid, created_at, updated_at) -VALUES ('7c8b8699-ca9f-4d14-86e2-2299b27c5711', NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('4e44fb19-b9e0-46e9-957a-e7aa3adac7bf', '7c8b8699-ca9f-4d14-86e2-2299b27c5711', NULL, '0.1.0', 'Custom schema', - 'Custom schema V1', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LEGACY', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('abcf3a21-6f9a-45dc-a71a-4dde4440c81a', '7c8b8699-ca9f-4d14-86e2-2299b27c5711', '4e44fb19-b9e0-46e9-957a-e7aa3adac7bf', '0.2.0', 'Custom schema', - 'Custom schema V2', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'LATEST', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('1bdca611-c96e-4304-b1f3-030d282ef529', 'abcf3a21-6f9a-45dc-a71a-4dde4440c81a', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('1bdca611-c96e-4304-b1f3-030d282ef530', 'abcf3a21-6f9a-45dc-a71a-4dde4440c81a', '123e48d2-9995-4b44-8b2c-9c81bdbf2dd2', 1); - -INSERT INTO metadata_schema_version (uuid, metadata_schema_id, previous_version_id, version, name, description, - definition, target_classes, type, origin, imported_from, state, published, - abstract, suggested_resource_name, suggested_url_prefix, created_at, updated_at) -VALUES ('a6d609ff-905f-4edd-bdb1-2dce000c9a45', '7c8b8699-ca9f-4d14-86e2-2299b27c5711', 'abcf3a21-6f9a-45dc-a71a-4dde4440c81a', '0.0.0', 'Custom schema', - 'Custom schema draft', - '', ARRAY ['http://www.w3.org/2000/01/rdf-schema#Class'], 'CUSTOM', NULL, NULL, 'DRAFT', FALSE, FALSE, NULL, - NULL, NOW(), NOW()); -INSERT INTO metadata_schema_extension (uuid, metadata_schema_version_id, extended_metadata_schema_id, order_priority) -VALUES ('53e3db46-8fe4-47ce-873e-ed7db94e73b3', 'a6d609ff-905f-4edd-bdb1-2dce000c9a45', '6a668323-3936-4b53-8380-a4fd2ed082ee', 0);