Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 38 additions & 41 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"url": "git@github.com:natlibfi/melinda-record-import-transformer-publication-archives.git"
},
"license": "MIT",
"version": "3.2.2-alpha.1",
"version": "3.2.2-alpha.2",
"main": "./dist/index.js",
"type": "module",
"engines": {
Expand Down
14 changes: 7 additions & 7 deletions src/transform/filter/filterByIsbnIdentifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@ export function filterByIsbnIdentifier({active = true, reverse = false}) {
return false;

function filter({getFieldValues}, debugInfo = {}) {
// <kk:field schema="dc" element="identifier" qualifier="isbn" language="none" value="978-xxx-xxx-xxx-8" />
const isbnIdentifier = getFieldValues('dc.identifier.isbn') || [];
// <kk:field schema="dc" element="identifier" qualifier="urn" language="en" value="URN:978-xxx-xxx-xxx-8" />
//const isbnUrnIdentifier = getFieldValues('dc.identifier.urn').filter(field => field.match(/URN:978-/ui) || field.match(/URN:ISBN:978-/ui)) || [];
//const hasIdentifier = isbnIdentifier.length !== 0 || isbnUrnIdentifier.length !== 0;
const hasIdentifier = isbnIdentifier.length !== 0;
const nonFinnishIsbn = isbnIdentifier.filter(isbn => {
const validFinnishIsbnStart = /^(978)?-?(951|952)-?/ui;
return typeof isbn === 'string' && isbn.length >= 10 && !isbn.match(validFinnishIsbnStart);
});

const hasOnlyFinnishIsbn = isbnIdentifier.length !== 0 && nonFinnishIsbn.length === 0;

const {identifiers, title} = debugInfo;

if (reverse && hasIdentifier) {
if (reverse && hasOnlyFinnishIsbn) {
throw new ConversionError({identifiers, title}, 'Filter: Could find ISBN identifier which not allowed by the applied filter');
}

if (!reverse && !hasIdentifier) {
if (!reverse && !hasOnlyFinnishIsbn) {
throw new ConversionError({identifiers, title}, 'Filter: Cannot find ISBN identifier which is a required field by the applied filter');
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
value="Esimerkki, Erkki" />
<kk:field schema="dc" element="date" qualifier="issued" language="fi" value="2081" />
<kk:field schema="dc" element="identifier" qualifier="isbn" language="fi"
value="978-92-95055-20-9" />
value="978-952-222-356-2" />
<kk:field schema="dc" element="identifier" qualifier="uri" language="none"
value="http://foobar.example.com/handle/10024/456" />
<kk:field schema="dc" element="identifier" qualifier="urn" language="none"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"description": "filterByIsbnIdentifier passes when ISBN information is available",
"description": "filterByIsbnIdentifier passes when only Finnish ISBN information is available",
"only": false
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
value="Esimerkki, Erkki" />
<kk:field schema="dc" element="date" qualifier="issued" language="fi" value="2081" />
<kk:field schema="dc" element="identifier" qualifier="isbn" language="fi"
value="978-92-95055-20-9" />
value="978-952-222-356-2" />
<kk:field schema="dc" element="identifier" qualifier="uri" language="none"
value="http://foobar.example.com/handle/10024/456" />
<kk:field schema="dc" element="identifier" qualifier="urn" language="none"
value="URN:ISBN:978-92-95055-20-9" />
value="URN:ISBN:978-952-222-356-2" />
<kk:field schema="dc" element="description" qualifier="abstract" language="fi"
value="Example description" />
<kk:field schema="dc" element="language" qualifier="iso" language="fi" value="fi" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"description": "filterByIsbnIdentifier does not pass in reversed mode when ISBN information is available",
"description": "filterByIsbnIdentifier does not pass if entry contains non-Finnish ISBN information",
"only": false
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"message": "Filter: Could find ISBN identifier which not allowed by the applied filter",
"title": "Dublin Core - MARC21 konversio",
"standardIdentifiers": [
"978-92-95055-20-9",
"978-952-222-356-2",
"http://foobar.example.com/handle/10024/456",
"URN:ISBN:978-92-95055-20-9",
"URN:ISBN:978-952-222-356-2",
"(fooba)/10024/456"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<ListRecords>
<record>
<header>
<identifier>oai:foobar.isbn2.example.com:10024/456</identifier>
<identifier>oai:foobar.isbn.example.com:10024/456</identifier>
<datestamp>2023-08-18T11:10:04Z</datestamp>
</header>
<metadata>
Expand All @@ -21,6 +21,8 @@
<kk:field schema="dc" element="date" qualifier="issued" language="fi" value="2081" />
<kk:field schema="dc" element="identifier" qualifier="uri" language="none"
value="http://foobar.example.com/handle/10024/456" />
<kk:field schema="dc" element="identifier" qualifier="urn" language="none"
value="URN:ISBN:978-92-95055-20-9" />
<kk:field schema="dc" element="description" qualifier="abstract" language="fi"
value="Example description" />
<kk:field schema="dc" element="language" qualifier="iso" language="fi" value="fi" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"description": "filterByIsbnIdentifier passes in reversed mode when ISBN information is not available",
"description": "filterByIsbnIdentifier should not pass when ISBN information is available just as URN",
"only": false
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
{
"failed": false
}
"failed": true,
"message": "Filter: Cannot find ISBN identifier which is a required field by the applied filter",
"title": "Dublin Core - MARC21 konversio",
"standardIdentifiers": [
"http://foobar.example.com/handle/10024/456",
"URN:ISBN:978-92-95055-20-9",
"(fooba)/10024/456"
]
}
50 changes: 0 additions & 50 deletions test-fixtures/transform/filter/filterByIsbnIdentifier/05/input.xml

This file was deleted.

This file was deleted.

This file was deleted.

Loading