Skip to content
Snippets Groups Projects
Commit 1de81c92 authored by Gerhard Gonter's avatar Gerhard Gonter :speech_balloon:
Browse files

fix publicationYear in DataCite Metadata when processing Phaidra data

parent e1de8dc9
No related branches found
No related tags found
No related merge requests found
...@@ -227,17 +227,17 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr ...@@ -227,17 +227,17 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr
return undef; return undef;
} }
my $dc_res= $api_res->{datacite}; my $datacite_res= $api_res->{datacite};
# print __LINE__, " dc_res: ", Dumper ($dc_res); print __LINE__, " datacite_res: ", Dumper ($datacite_res);
# 2018-11-19 Phaidra's DataCite output is quite ... broken ... # 2018-11-19 Phaidra's DataCite output is quite ... broken ...
fixup_datacite_data ($dc_res); fixup_datacite_data ($datacite_res);
# TODO: # TODO:
# * mint new DOI # * mint new DOI
# * insert DOI in metadata # * insert DOI in metadata
# NOTE: if ($dc_res->{status} ne 'OK') request a dummy doi_string # NOTE: if ($datacite_res->{status} ne 'OK') request a dummy doi_string
my $t_reg_obj= new DataCite::API (config => $t_reg_cnf, 'xmode' => 'test'); my $t_reg_obj= new DataCite::API (config => $t_reg_cnf, 'xmode' => 'test');
my $doi_string= $t_reg_obj->mint_doi(); my $doi_string= $t_reg_obj->mint_doi();
...@@ -256,7 +256,7 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr ...@@ -256,7 +256,7 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr
}; };
print __LINE__, " doi_element: ", main::Dumper($doi_element); print __LINE__, " doi_element: ", main::Dumper($doi_element);
my $md= $dc_res->{datacite_elements}; my $md= $datacite_res->{datacite_elements};
unshift (@$md, $doi_element); unshift (@$md, $doi_element);
print __LINE__, " md: ", main::Dumper ($md); print __LINE__, " md: ", main::Dumper ($md);
...@@ -281,9 +281,9 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr ...@@ -281,9 +281,9 @@ print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr
close (DC_XML); close (DC_XML);
print "metatada fetched: ", get_ts(), "\n"; print "metatada fetched: ", get_ts(), "\n";
if ($dc_res->{status} ne 'OK') if ($datacite_res->{status} ne 'OK')
{ {
print "Metadata not ok; status=[$dc_res->{status}] errors: ", Dumper ($dc_res->{errors}); print "Metadata not ok; status=[$datacite_res->{status}] errors: ", Dumper ($datacite_res->{errors});
return undef; return undef;
} }
...@@ -440,8 +440,11 @@ sub fixup_datacite_data ...@@ -440,8 +440,11 @@ sub fixup_datacite_data
{ {
my $dc= shift; my $dc= shift;
my $data= $dc->{data};
foreach my $dce (@{$dc->{datacite_elements}}) foreach my $dce (@{$dc->{datacite_elements}})
{ {
print __LINE__, ' dce: ', Dumper($dce);
if ($dce->{xmlname} eq 'creators') if ($dce->{xmlname} eq 'creators')
{ {
my @filtered_creators= (); my @filtered_creators= ();
...@@ -459,7 +462,13 @@ sub fixup_datacite_data ...@@ -459,7 +462,13 @@ sub fixup_datacite_data
} }
elsif ($dce->{xmlname} eq 'publicationYear') elsif ($dce->{xmlname} eq 'publicationYear')
{ {
if ($dce->{value} =~ m#^(\d{4})(-\d{2})?(-\d{2})?$#) print __LINE__, " publicationYear: dce=", Dumper($dce);
if (!defined($dce->{value}))
{
my $year= $data->{publicationYear}->[0]->{value};
$dce->{value}= $year if (defined($year));
}
elsif ($dce->{value} =~ m#^(\d{4})(-\d{2})?(-\d{2})?$#)
{ {
my $new_year= $1; my $new_year= $1;
print __LINE__, " publicationYear fixed from [", $dce->{value}, "] to [$new_year]\n"; print __LINE__, " publicationYear fixed from [", $dce->{value}, "] to [$new_year]\n";
...@@ -524,7 +533,7 @@ number from the idenetifiers table and register them. ...@@ -524,7 +533,7 @@ number from the idenetifiers table and register them.
Until then, this also should work Until then, this also should work
tsv identifiers.tsv --select ticket=##### --col canoical_url -O- | xargs ./dcd.pl register --doit tsv identifiers.tsv --select ticket=##### --col canonical_url -O- | xargs ./dcd.pl register --doit
=head1 NOTES =head1 NOTES
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment