Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
memoriav
Memobase 2020
libraries
Mapper Service Configuration
Commits
96dff57e
Commit
96dff57e
authored
Apr 12, 2022
by
Jonas Waeber
Browse files
Add more tests and a check for unknown relation types.
parent
da6bbc41
Pipeline
#47555
passed with stage
in 4 minutes and 31 seconds
Changes
4
Pipelines
1
Show whitespace changes
Inline
Side-by-side
src/main/kotlin/builder/RecordResource.kt
View file @
96dff57e
...
...
@@ -133,7 +133,12 @@ abstract class RecordResource(institutionId: String) : IResource {
properties
:
List
<
Pair
<
String
,
Literal
>>
)
{
val
relation
=
model
.
createResource
()
if
(
relationType
in
KEYS
.
relationTypeMap
)
{
relation
.
addProperty
(
RICO
.
type
,
KEYS
.
relationTypeMap
[
relationType
])
}
else
{
log
.
error
(
"Unexpected relation type found: $relationType."
)
return
}
relationName
.
forEach
{
relation
.
addProperty
(
RICO
.
name
,
it
)
}
...
...
src/test/kotlin/ch/memobase/test/TestResourceBuilder.kt
View file @
96dff57e
...
...
@@ -20,11 +20,13 @@ package ch.memobase.test
import
ch.memobase.builder.ResourceBuilder
import
ch.memobase.mapping.MappingConfigurationParser
import
com.beust.klaxon.Klaxon
import
org.assertj.core.api.Assertions.assertThat
import
org.junit.jupiter.api.Test
import
org.junit.jupiter.api.TestInstance
import
java.io.File
import
java.io.FileInputStream
import
java.nio.charset.Charset
@TestInstance
(
TestInstance
.
Lifecycle
.
PER_CLASS
)
class
TestResourceBuilder
{
...
...
@@ -65,4 +67,21 @@ class TestResourceBuilder {
assertThat
(
resourceBuilder
.
errorMessages
)
.
isEqualTo
(
emptyList
<
String
>())
}
@Test
fun
`test
custom
input`
()
{
val
config
=
MappingConfigurationParser
((
FileInputStream
(
File
(
"$path/mapping2.yml"
)).
readBytes
())).
get
()
val
resourceBuilder
=
ResourceBuilder
(
Klaxon
().
parseJsonObject
(
FileInputStream
(
File
(
"$path/input2.json"
))
.
reader
(
Charset
.
defaultCharset
()))
as
Map
<
String
,
Any
>,
config
,
"tst"
,
"tst-001"
,
false
)
resourceBuilder
.
generateRecord
()
resourceBuilder
.
generateDigitalObject
()
assertThat
(
resourceBuilder
.
errorMessages
)
.
isEqualTo
(
emptyList
<
String
>())
}
}
src/test/resources/resource-builder/input2.json
0 → 100644
View file @
96dff57e
{
"Memobase-ID"
:
"212853_1"
,
"longTitle"
:
"Jazz Konzerte Willisau 2002: Tin Hat Trio"
,
"broadcast"
:
"Jazz Konzerte Willisau 2002"
,
"backlink"
:
"https://www.fonoteca.ch/cgi-bin/oecgi3.exe/inet_fnbasedetail?REC_ID=212853.011"
,
"stream"
:
"https://vault.fonoteca.ch/archive/FILE1-1000/FILE800/FILE800_1.mp3"
,
"objUniqueKey"
:
"212853.011"
,
"objLang"
:
"de"
,
"objCallNr"
:
"FILE800"
,
"objThumbnailK"
:
"tdb"
,
"objRemarks"
:
""
,
"objSupportType"
:
"Elektronische Ressource mit Fernzugriff"
,
"objGenre"
:
"Jazzmusik"
,
"objSchemaProfile"
:
""
,
"objItemNbr"
:
"1"
,
"objItemCondition"
:
""
,
"objItemLocation"
:
"FONOTECA NAZIONALE SVIZZERA; Lugano"
,
"objItemSubLocation"
:
""
,
"objItemOrigin"
:
"BIBLIOTHEK HOCHSCHULE LUZERN - MUSIK; Luzern"
,
"objItemSubOrigin"
:
"W. 1564"
,
"objItemCollection"
:
"WILLISAU JAZZ ARCHIV"
,
"objItemReceivedDate"
:
"2014-03-14"
,
"objItemReceivedOwnership"
:
"Depositum"
,
"objItemCopies"
:
""
,
"isPublic"
:
"0"
,
"mp3Ready"
:
"1"
,
"Trägertitel"
:
[
"Jazz Konzerte Willisau 2002: Tin Hat Trio"
],
"Elektronische Ressource"
:
[
"Dati informatici sonori"
],
"Produktion"
:
[
{
"name"
:
"TROXLER, Niklaus"
,
"activity"
:
"Ansager"
}],
"Produktionsjahr"
:
[
"2002"
],
"Produktionsart"
:
[
"Einmalige Direktproduktion"
],
"Musikart"
:
[
"Jazz"
],
"Position"
:
[
"1"
],
"Ansagen"
:
[
"Announcement"
],
"Aktivität"
:
[
"Ansager"
],
"Interpret"
:
[
{
"name"
:
"TIN HAT TRIO"
},
{
"name"
:
"KIHLSTEDT, Carla"
,
"instrument"
:
"Violine"
},
{
"name"
:
"BURGER, Rob"
,
"instrument"
:
"Akkordeon Klavier"
},
{
"name"
:
"ORTON, Mark"
,
"instrument"
:
"Gitarre"
}],
"Musikinstrument"
:
[
"Violine"
,
"Akkordeon"
,
"Klavier"
,
"Gitarre"
],
"Aufnahmeortschaft"
:
[
"Willisau"
],
"Aufnahmeort"
:
[
"JAZZ KONZERT WILLISAU"
],
"Aufnahme-Datum"
:
[
"12.04.2002"
],
"Aufnahme-Bedingungen"
:
[
"Direktaufnahme"
],
"Applaus"
:
[
"Mit Applaus"
],
}
src/test/resources/resource-builder/mapping2.yml
0 → 100644
View file @
96dff57e
record
:
uri
:
Memobase-ID
identifiers
:
original
:
Memobase-ID
type
:
const
:
"
Ton"
title
:
longTitle
titles
:
-
main
:
longTitle
-
series
:
Trägertitel
-
broadcast
:
broadcast
scopeAndContent
:
-
Produktionsart
-
Aufnahme-Bedingungen
-
Applaus
sameAs
:
backlink
abstract
:
-
prefix
:
value
:
"
Ereignis:
"
field
:
Ereignis
-
prefix
:
value
:
"
Ansagen:
"
field
:
Ansagen
-
prefix
:
value
:
"
Musikinstrumente:
"
field
:
Musikinstrument
-
prefix
:
value
:
"
Körperschaft:
"
field
:
Körperschaft
-
prefix
:
value
:
"
Stimme:
"
field
:
Stimme
descriptiveNote
:
-
objRemarks
-
Bemerkungen/Kommentar
-
prefix
:
value
:
"
Version:
"
field
:
Version
source
:
-
objItemOrigin
-
objItemSubOrigin
#relation: relatedMaterial
isSponsoredByMemoriav
:
true
rights
:
holder
:
const
:
"
HSLU
(gemäss
Schenkungsvertrag);
Es
gelten
die
üblichen
Urheber-
und
anverwandten
Schutzrechte"
languages
:
-
content
:
#language
const
:
"
Deutsch"
#- caption: captioningFormat
#subject:
# - prefLabel: Keywords
genre
:
-
prefLabel
:
objGenre
-
prefLabel
:
Musikart
placeOfCapture
:
-
name
:
Aufnahmeortschaft
relatedPlaces
:
-
name
:
Aufnahmeortschaft
creationDate
:
Aufnahme-Datum
#issuedDate: issuedDate
#temporal: PeriodOfTimeDate
creators
:
-
person
:
name
:
Autor.name
relationName
:
-
Autor.activity
-
Autor.role
#const: "Autor"
#- corporateBody:
# name: creatorCorporateBody.name
# relationName: creatorCorporateBody.role
contributors
:
-
person
:
name
:
Interpret.name
relationName
:
Interpret.instrument
#- corporateBody:
# name: contributorCorporateBody.name
# relationName: contributorCorporateBody.role
#- agent:
# name: contributorAgent.name
# relationName: contributorAgent.role
producers
:
-
person
:
name
:
Produktion.name
relationName
:
-
Produktion.activity
-
Produktion.role
#- person:
# name: producerCorporateBodyName
relatedAgents
:
-
person
:
name
:
Technik.name
relationName
:
-
prefix
:
value
:
"
Technik"
field
:
Technik.activity
-
person
:
name
:
Teilnehmer.relationName
relationName
:
Teilnehmer.activity
#- corporateBody:
# name: FeaturedOrganisation
#publishedBy:
# - person:
# name: publisherPerson.name
#- corporateBody:
# name: publisherCorporateBody.name
conditionsOfUse
:
"
Es
gelten
die
üblichen
Urheber-
und
anverwandten
Schutzrechte"
physical
:
carrierType
:
objSupportType
#duration: duration
physicalCharacteristics
:
-
prefix
:
value
:
"
Mass:"
field
:
Mass
-
prefix
:
value
:
"
Material:
"
field
:
Material
-
prefix
:
value
:
"
Marke
und
Modell:
"
field
:
Marke und Modell
-
prefix
:
value
:
"
Tonaufnahmeverfahren:
"
field
:
Aufnahmeverfahren
-
prefix
:
value
:
"
Spulage:
"
field
:
Spurlage
-
prefix
:
value
:
"
Abspielgeschwindigkeit:
"
field
:
Abspielgeschwindigkeit
-
prefix
:
value
:
"
Zustand:
"
field
:
objItemCondition
identifiers
:
callNumber
:
objCallNr
rights
:
access
:
const
:
"
onsite"
usage
:
name
:
const
:
"
In
Copyright
(InC)"
sameAs
:
const
:
"
http://rightsstatements.org/vocab/CNE/1.0/"
digital
:
locator
:
stream
#essenceLocator
rights
:
access
:
const
:
"
private"
usage
:
name
:
const
:
"
In
Copyright
(InC)"
sameAs
:
const
:
"
http://rightsstatements.org/vocab/CNE/1.0/"
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment